RabbitMQ安装及集群搭建

RabbitMQ安装及集群搭建

1、在 172.16.0.123、172.16.0.124、172.16.0.125 三个节点配置换进变量:

1.下载erlang
    wget https://github.com/rabbitmq/erlang-rpm/releases/download/v22.0.1/erlang-22.0.1-1.el7.x86_64.rpm
    
2.安装erlang
    (1)正常安装
        yum install -y erlang-22.0.1-1.el7.x86_64.rpm
    (2)如果发生冲突需要强制安装,强制安装erlang
        rpm -ivh --force erlang-22.0.1-1.el7.x86_64.rpm
        
3.查看erlang包
    rpm -q erlang
    
4.卸载erlang(注意卸载erlang同时也会卸载rabbitmq-server)
    yum remove -y erlang

2、在 172.16.0.123、172.16.0.124、172.16.0.125 三个节点安装rabbitmq:

1.下载rabbitmq
    wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.15/rabbitmq-server-3.7.15-1.el7.noarch.rpm
    
2.安装rebbitmq
    yum install -y rabbitmq-server-3.7.15-1.el7.noarch.rpm
    
3.配置rabbitmq
    (1)创建配置文件
        vim /etc/rabbitmq/rabbitmq.config
    (2)编辑内容如下
        [
          {rabbit,[{tcp_listeners, [{"0.0.0.0", 5672}]}]},
          {rabbitmq_stomp, [{tcp_listeners, [15673]}]},
          {rabbitmq_web_stomp, [{tcp_listeners, [15674]}]}
        ].
    (3)rabbitmq默认创建的用户guest,密码也是guest,这个用户默认只能是本机访问,localhost或者127.0.0.1
    
4.启动服务
    rabbitmq-server start
    
5.启用web界面
    rabbitmq-plugins enable rabbitmq_management
    访问http://127.0.0.1:15672即可看到管理界
    
6.添加用户
    #添加帐号:admin 密码:123456 
    rabbitmqctl add_user admin 123456 
    #赋予其administrator角色
    rabbitmqctl set_user_tags admin administrator
    #设置权限
    rabbitmqctl set_permissions -p / admin '.*' '.*' '.*'
    #查看权限列表
    rabbitmqctl list_permissions
    
7.js调用RabbitMQ
    文档 https://www.rabbitmq.com/web-stomp.html
    
    #查看插件状态
    rabbitmq-plugins list
    #启用
    rabbitmq-plugins enable rabbitmq_web_stomp
    #关闭
    rabbitmq-plugins disable rabbitmq_web_stomp
    
8.查看相关端口状态
    netstat -nplt | grep beam

9.查看服务状态
    service rabbitmq-server status

10.开机启动
    chkconfig rabbitmq-server on

11.官方文档
    http://www.rabbitmq.com/configure.html#configuration-file
    http://www.rabbitmq.com/management.html
    http://www.rabbitmq.com/configure.html
    http://www.rabbitmq.com/networking.html

3、然后开启 RabbitMQ 监控插件:

rabbitmq-plugins enable rabbitmq_management

4、 为了方便机器间的相互访问,三台主机都执行 vim /etc/hosts,添加下边的配置(注意修改成自己设备的IP):

修改用户名:
    hostname node1
    hostname node2
    hostname node3

    172.16.0.123 node1
    172.16.0.124 node2
    172.16.0.125 node3

5、停止RabbitMQ 服务

$ service rabbitmq-server stop
Redirecting to /bin/systemctl stop  rabbitmq-server.service

6、设置 Erlang Cookie

    (1)设置不同节点间同一认证的Erlang Cookie

    这里将 node1 的该文件复制到 node2、node3,由于这个文件权限是 400为方便传输,先修改权限,非必须操作,所以需要先修改 node2、node3 中的该文件权限为 777
        $ chmod 777 /var/lib/rabbitmq/.erlang.cookie
        
        $ scp /var/lib/rabbitmq/.erlang.cookie node2:/var/lib/rabbitmq/
        $ scp /var/lib/rabbitmq/.erlang.cookie node3:/var/lib/rabbitmq/
    
    (2)然后将 node1 中的该文件拷贝到 node2、node3,最后将权限和所属用户/组修改回来
        $ chmod 400 /var/lib/rabbitmq/.erlang.cookie
        $ chown rabbitmq /var/lib/rabbitmq/.erlang.cookie
        $ chgrp rabbitmq /var/lib/rabbitmq/.erlang.cookie
        
    (3)会提示输入yes 和 密码
    
    (4)使用 -detached 参数运行各节点
        $ rabbitmqctl stop
        $ rabbitmq-server -detached
    
    (5)组成集群
        按照顺序执行 先node2,node3
        
        node2 $ rabbitmqctl stop_app            # 停止rabbitmq服务
        node2 $ rabbitmqctl join_cluster rabbit@node1    # node2和node1构成集群, node2必须能通过node1的主机名ping通
        node2 $ rabbitmqctl start_app            # 开启rabbitmq服务
              
        node3 $ rabbitmqctl stop_app            # 停止rabbitmq服务
        node3 $ rabbitmqctl join_cluster rabbit@node1    # node3和node1构成集群, node2必须能通过node1的主机名ping通
        node3 $ rabbitmqctl start_app            # 开启rabbitmq服务
        
        此时 node2 与 node3 也会自动建立连接
        
    (6)如果执行rabbitmqctl join_cluster rabbit@node1报错
        报错:
            Error: unable to perform an operation on node 'rabbit@node1'
        解决:
            于是修改rabbitmq-env.conf配置文件(rabbitmq默认路径:/etc/rabbitmq/rabbitmq-env.conf)
            在集群每台机器上执行 vim /etc/rabbitmq/rabbitmq-env.conf(该文件默认不存在,需手动添加),添加配置如下
            
            [root@node1]# vim /etc/rabbitmq/rabbitmq-env.conf
            
            RABBITMQ_NODENAME=rabbit@node1
            
            RABBITMQ_NODENAME=rabbit@node2
            
            RABBITMQ_NODENAME=rabbit@node3
        
        每台机器配置好后,执行ps -aux|grep mq 查看所有rabbitmq进程,然后kill -9 杀死所有RabbitMQ进程
    
    (7)重启RabbitMQ服务加入集群
    
        service rabbitmq-server start
        
        可能会报错:Job for rabbitmq-server.service failed because the control process exited with error code. See “systemctl status rabbitmq-server.service” and “journalctl -xe” for details.
        
        如果报错执行:nohup rabbitmq-server start &
    
    (8)重新执行(5)组成集群
        如果没有报错,rabbitmq集群搭建完成。
        
    (9)查看集群状态
        [root@slave1 ~]#  rabbitmqctl cluster_status
        Cluster status of node rabbit@rabbit-node2 ...
        [{nodes,[{disc,['rabbit@rabbit-node1','rabbit@rabbit-node2',
                        'rabbit@rabbit-node3']}]},
        {running_nodes,['rabbit@rabbit-node3','rabbit@rabbit-node1',
                     'rabbit@rabbit-node2']},
        {cluster_name,<<"rabbit@slave2">>},
        {partitions,[]},
        {alarms,[{'rabbit@rabbit-node3',[]},
              {'rabbit@rabbit-node1',[]},
              {'rabbit@rabbit-node2',[]}]}]
              
    (10)此时 node2 与 node3 也会自动建立连接;如果要使用内存节点,则可以使用
        node2 # rabbitmqctl join_cluster --ram rabbit@node1

7、将节点从总控移除

将node3节点从node1移除
rabbitmqctl  -n rabbit@node1 forget_cluster_node rabbit@node3

8、这时我们打开任意一个节点的Web管理界面,显示如下,看到集群已经配置完成了:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值