• RabbitMQ安装


    部署安装RabbitMQ前,先了解下基本概念:(RabbitMQ+Python入门经典] 兔子和兔子窝

    RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。

    MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。说的笼统点是queue+socket实现

    安装Erlang

    在安装RabbitMQ之前,我们需要安装Erlang,官方建议使用打包版本,有三个建议的来源:
      1、使用官方生成的一个软件包(https://github.com/rabbitmq/erlang-rpm),它只提供运行RabbitMQ所需要的组件,它可能会也可能不适合运行其他基于Erlang的软件或第三方RabbitMQ插件
      2、使用Erlang官方下载一个rpm包(https://www.erlang-solutions.com/resources/download.html),这个包通常是最新的
      3、使用EPEL源来安装,这种方式安装的包并不总是最新的

    这里我选择第1种方式:

    vim /etc/yum.repos.d/rabbitmq-erlang.repo
        [rabbitmq-erlang]
        name=rabbitmq-erlang
        baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/7
        gpgcheck=1
        gpgkey=https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
        repo_gpgcheck=0
        enabled=1
    
    yum install erlang
    

    安装RabbitMQ服务器

    wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.0/rabbitmq-server-3.7.0-1.el7.noarch.rpm
    rpm --import https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
    yum install rabbitmq-server-3.7.0-1.el7.noarch.rpm
    

    启动服务器

    systemctl enable rabbitmq-server
    systemctl start rabbitmq-server
    

    配置RabbitMQ

    在大多数系统上,一个节点应该能够启动并运行所有的默认值
    生产环境配置后面再详解
    注意:服务器设置为以系统用户rabbitmq运行 。如果更改节点数据库或日志的位置,则必须确保文件由该用户所有(并且还要更新环境变量)

    端口访问

    SELinux和类似的机制可能会阻止RabbitMQ绑定到一个端口。发生这种情况时,RabbitMQ将无法启动
    防火墙可以防止节点和CLI工具相互通信。确保可以打开以下端口:
    4369:epmd, RabbitMQ节点和CLI工具使用的对等发现服务
    5672,5671:  由AMQP 0-9-1和1.0客户端使用
    25672:     由Erlang分配用于节点间和CLI工具通信,并且从动态范围分配(AMQP端口+20000)
    15672:     HTTP API客户端和rabbitmqadmin(仅当管理插件启用时)
    61613,61614:STOMP客户端没有和使用TLS(只有STOMP插件已启用)
    1883年,8883:(MQTT客户端没有和TLS,如果MQTT插件已启用)
    15674:STOMP-over-WebSockets客户端(仅在启用了Web STOMP插件的情况下)
    15675:MQTT-over-WebSockets客户端(仅在启用了Web MQTT插件的情况下)
    

    默认的用户访问

    默认将创建一个用户guest,密码guest。默认情况下,只有在以localhost身份连接到代理时才能使用这些凭证

    调整系统限制

    运行生产工作负载的RabbitMQ安装可能需要系统限制和内核参数调整,以便处理体面的并发连接和队列。需要调整的主要设置是打开文件的最大数量,也称为ulimit -n
    许多操作系统上的默认值对于消息传递代理来说太低(例如,在几个Linux发行版上为1024)。我们建议在生产环境中为用户rabbitmq至少允许65536个文件描述符。4096对于大多数开发工作量来说应该是足够的
    有两个限制操作系统内核允许的最大打开文件数(fs.file-max)和每用户限制(ulimit -n)。前者必须高于后者

    fs.file-max设置

    # vim /etc/sysctl.conf,添加:
        fs.file-max = 65535
    # sysctl -p
    

    每用户限制(ulimit -n)

    # vim /etc/security/limits.conf
        在最后一行添加如下命令
        root soft nofile 65535
        root hard nofile 65535
        * soft nofile 65535
        * hard nofile 65535
         
    # vim /etc/rc.local
        ulimit -SHn 65535 
    

    修改rabbitmq配置

    修改rabbitmq配置
        修改/etc/systemd/system/multi-user.target.wants/rabbitmq-server.service
        在[Service]中,增加LimitNOFILE=30000(具体数值根据需要)
    执行systemctl daemon-reload
    重启rabbitmq服务
    rabbitmqctl status
    

     

    修改日志和数据存放路径

    原来的默认位置是/var下, 以下数据在log里面可以查到,一般log 在/var/log.rabbitmq/rabbitmq@usrename.log 中

    home dir : /var/lib/rabbitmq
    config file(s) : (none)      #默认没有 rabbitmq.conf,可以在/etc/rabbitmq.conf
    cookie hash : QuwI6ycYrkUgnpRXQvBoAg==
    log(s) : /var/log/rabbitmq/rabbit@c1.log
               : /var/log/rabbitmq/rabbit@c1_upgrade.log
    database dir : /var/lib/rabbitmq/mnesia/rabbit@c1

     创建数据文件和日志文件存放位置的目录

    mkdir /data/rabbitmq/mnesia -p
    mkdir /data/rabbitmq/log -p
    chown -R rabbitmq.rabbitmq /data/rabbitmq

    创建或新增参数配置文件

    [root@c1 ~]# cat /etc/rabbitmq/rabbitmq-env.conf
    RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia
    RABBITMQ_LOG_BASE=/data/rabbitmq/log

    重启rabbitmq服务

    配置文件

     Rabbitmq的配置文件有三个,位于/etc/rabbitmq/

    • enabled_plugins  (设置允许的插件列表)
    • rabbitmq.conf  (设置rabbitmq的运行参数)
    • rabbitmq-env.conf  (rabbitmq的环境参数配置)
    该配置文档的格式为erlang的列表格式如
    
    [rabbitmq_management,rabbitmq_visualiser].
    enabled_plugins
    tcp_listerners :设置rabbimq的监听端口,默认为[5672]。
    disk_free_limit :磁盘低水位线,若磁盘容量低于指定值则停止接收数据,默认值为
    {mem_relative, 1.0},即与内存相关联1:1,也可定制为多少byte.
    vm_memory_high_watermark:设置内存低水位线,若低于该水位线,则开启流控机制,默认值是0.4,即内存总量的40%。
    hipe_compile :将部分rabbimq代码用HighPerformance Erlang compiler编译,可提升性能,该参数是实验性,若出现erlang vm segfaults,应关掉。
    force_fine_statistics, 该参数属于rabbimq_management,若为true则进行精细化的统计,但会影响性能。
    rabbitmq.conf
    RABBITMQ_NODE_PORT  端口设置,默认为5672
    RABBITMQ_NODENAME   节点名称,默认为rabbit
    MNESIA_BASE 后端存储目录,默认为/var/lib/rabbitmq/mnesia
    LOG_BASE 日志目录,默认为/var/log/rabbitmq/
    rabbitmq-env.conf

    rabbitmq自带管理后台,安装后需要配置开启

     查看插件

    rabbitmq-plugins list

    开启网页监控插件, 开启15672端口

    rabbitmq-plugins enable rabbitmq_management

    网页管理后台默认只允许本地访问(guest/guest),因此目前我们访问http://ip:15672是无法登录的,现在需要添加远程登录用户

    # rabbitmqctl add_user <username> <password>
    rabbitmqctl add_user heboan  heboanpwd

    设置远程登录(配置权限、写权限、读权限)

    rabbitmqctl set_permissions -p "/" heboan ".*" ".*" ".*"

    设置用户为管理员

    rabbitmqctl set_user_tags heboan administrator

    登录http://<your server ip>:15672  用户 heboan 密码 heboanpwd, 然后把guest用户删除

  • 相关阅读:
    MySQL:批量修改表的排序规则
    Python黑客编程3网络数据监听和过滤
    springboot redis 项目实战 完整篇
    C#读取U盘序列号
    AS3,ReferenceError: Error #1056: 无法为 ×× 创建属性 ×××。
    知道挖掘机如何从货车上下来吗?
    一次进销存软件架构的实践(二)——业务外观层设计
    重构你的软件企业
    遇到了火狐扩展全部丢失的问题
    分布式系统设计原理与方案
  • 原文地址:https://www.cnblogs.com/sellsa/p/8036909.html
Copyright © 2020-2023  润新知