• rabbitmq centos 7.4 主备安装,加入主节点失败Error: unable to perform an operation on node 'rabbit@mq2'. Please see diagnostics information and suggestions below.


    环境:centos 7.4 

    版本:otp_src_22.3.tar.gz  rabbitmq-server-3.7.17-1.el7.noarch.rpm 

    模式:主备

    安装

    1 安装erlang

    依赖:

    yum install lrzsz vim -y
    yum install ncurses ncurses-base ncurses-devel ncurses-libs ncurses-static ncurses-term ocaml-curses ocaml-curses-devel openssl-devel zlib-devel -y
    yum install -y gcc gcc-c++
    yum install -y unixODBC unixODBC-devel
    yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel gtk2-devel binutils-devel
    RabbitMQ Erlang版本兼容:http://www.rabbitmq.com/which-erlang.html
    Erlang各版本下载界面:http://erlang.org/download/
    # tar -zxvf otp_src_22.3.tar.gz
    # cd otp_src_22.3/
    # ./configure --prefix=/usr/local/erlang --with-ssl -enable-threads -enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac
    # make && make install

    make报错

    下载 wxWidgets-3.0.5.tar.bz2
    # yum install bzip2 -y
    # yum install -y mesa* freeglut*
    # bzip2 -d wxWidgets-3.0.5.tar.bz2 
    # tar -xvf wxWidgets-3.0.5.tar
    # cd wxWidgets-3.0.5
    # ./configure --with-opengl --enable-debug --enable-unicode
    # make && make install
    重新编译安装 erlang

    配置环境变量

    # vim /etc/profile
    ERL_HOME=/usr/local/erlang
    export PATH=${ERL_HOME}/bin:$PATH
    # source /etc/profile
    # echo $ERL_HOME
    [root@localhost otp_src_22.3]# erl
    Erlang/OTP 22 [erts-10.7] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
    
    Eshell V10.7  (abort with ^G)
    1> halt().

    2 安装 mq

    # yum install socat -y
    [root@localhost opt]# rpm -ivh rabbitmq-server-3.7.17-1.el7.noarch.rpm --nodeps
    warning: rabbitmq-server-3.7.17-1.el7.noarch.rpm: Header V4 RSA/SHA256 Signature, key ID 6026dfca: NOKEY
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:rabbitmq-server-3.7.17-1.el7     ################################# [100%]
    
    -- Unit rabbitmq-server.service has begun starting up.
    Mar 14 22:34:19 mq1 rabbitmq-server[4058]: /usr/lib/rabbitmq/bin/rabbitmq-server: line 187: erl: command not found
    Mar 14 22:34:19 mq1 systemd[1]: rabbitmq-server.service: main process exited, code=exited, status=127/n/a
    Mar 14 22:34:19 mq1 rabbitmqctl[4232]: /usr/lib/rabbitmq/bin/rabbitmq-env: line 428: exec: erl: not found
    Mar 14 22:34:19 mq1 systemd[1]: rabbitmq-server.service: control process exited, code=exited status=127
    Mar 14 22:34:19 mq1 systemd[1]: Failed to start RabbitMQ broker.
    -- Subject: Unit rabbitmq-server.service has failed
    -- Defined-By: systemd
    -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
    
    [root@mq1 ~]# vim /usr/lib/rabbitmq/bin/rabbitmq-server
    ERL_HOME=/usr/local/erlang
    export PATH=$PATH:${ERL_HOME}/bin
    [root@mq1 ~]# systemctl start rabbitmq-server
    [root@mq1 ~]# systemctl status rabbitmq-server

    3 拷贝文件以及启动

    [root@mq1 ~]# ll /var/lib/rabbitmq/.erlang.cookie 
    -r--------. 1 rabbitmq rabbitmq 20 Mar 12 00:00 /var/lib/rabbitmq/.erlang.cookie
    [root@mq1 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@10.15.9.232:/var/lib/rabbitmq/.
    [root@mq1 ~]# chmod 400 /var/lib/rabbitmq/.erlang.cookie
    [root@mq1 ~]# systemctl restart rabbitmq-server
    
    Mar 14 22:44:47 mq2 rabbitmq-server[3615]: format: "Error when reading /var/lib/rabbitmq/.erlang.cookie: eacces"
    Mar 14 22:44:47 mq2 rabbitmq-server[3615]: label: {error_logger,error_msg}
    
    [root@mq1 ~]# chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
    
    Mar 14 22:48:30 mq2 rabbitmqctl[10395]: /usr/lib/rabbitmq/bin/rabbitmq-env: line 428: exec: erl: not found
    Mar 14 22:48:30 mq2 systemd[1]: rabbitmq-server.service: control process exited, code=exited status=127
    
    [root@mq2 opt]# erl
    Erlang/OTP 22 [erts-10.7] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
    
    Eshell V10.7  (abort with ^G)
    1> halt().
    [root@mq2 opt]# vim /usr/lib/rabbitmq/bin/rabbitmq-server
    [root@mq2 opt]# vim /usr/lib/rabbitmq/bin/rabbitmq-env
    [root@mq2 opt]# systemctl restart rabbitmq-server
    
    Mar 14 22:51:14 mq2 rabbitmqctl[16135]: attempted to contact: [rabbit@mq2]
    Mar 14 22:51:14 mq2 rabbitmqctl[16135]: rabbit@mq2:
    Mar 14 22:51:14 mq2 rabbitmqctl[16135]: * connected to epmd (port 4369) on mq2
    Mar 14 22:51:14 mq2 rabbitmqctl[16135]: * epmd reports: node 'rabbit' not running at all
    Mar 14 22:51:14 mq2 rabbitmqctl[16135]: no other nodes on mq2
    Mar 14 22:51:14 mq2 rabbitmqctl[16135]: * suggestion: start the node
    Mar 14 22:51:14 mq2 rabbitmqctl[16135]: Current node details:
    Mar 14 22:51:14 mq2 rabbitmqctl[16135]: * node name: 'rabbitmqcli-16135-rabbit@mq2'
    Mar 14 22:51:14 mq2 rabbitmqctl[16135]: * effective user's home directory: /var/lib/rabbitmq
    Mar 14 22:51:14 mq2 rabbitmqctl[16135]: * Erlang cookie hash: 8J2OCS/WRyu4c4xt5rmDKw==
    
    -- The result is failed.
    Mar 14 22:51:14 mq2 systemd[1]: Unit rabbitmq-server.service entered failed state.
    Mar 14 22:51:14 mq2 systemd[1]: rabbitmq-server.service failed.
    Mar 14 22:51:14 mq2 polkitd[720]: Unregistered Authentication Agent for unix-process:15737:22759747 (system bus name :1.167, object path /org/freedesktop/PolicyKit1/Authen
    lines 2094-2132/2132 (END)
    
    [root@mq1 mnesia]# rabbitmqctl cluster_status
    Cluster status of node rabbit@mq1 ...
    [{nodes,[{disc,[rabbit@mq1]}]},
     {running_nodes,[rabbit@mq1]},
     {cluster_name,<<"rabbit@mq1">>},
     {partitions,[]},
     {alarms,[{rabbit@mq1,[]}]}]

    查看日志

    [root@mq1 ~]# ll /var/log/rabbitmq/
    [root@mq2 rabbitmq]# tail -n 50 rabbit@mq2.log
    2021-03-14 23:19:57.937 [info] <0.267.0> 
     node           : rabbit@mq2
     home dir       : /var/lib/rabbitmq
     config file(s) : (none)
     cookie hash    : 8J2OCS/WRyu4c4xt5rmDKw==
     log(s)         : /var/log/rabbitmq/rabbit@mq2.log
                    : /var/log/rabbitmq/rabbit@mq2_upgrade.log
     database dir   : /var/lib/rabbitmq/mnesia/rabbit@mq2

    这里第二节点加入失败,检查 Erlang cookie hash 始终不正确,

    [root@mq2 opt]# systemctl restart rabbitmq-server
    
    Mar 14 22:51:14 mq2 rabbitmqctl[16135]: attempted to contact: [rabbit@mq2]
    Mar 14 22:51:14 mq2 rabbitmqctl[16135]: rabbit@mq2:
    Mar 14 22:51:14 mq2 rabbitmqctl[16135]: * connected to epmd (port 4369) on mq2
    Mar 14 22:51:14 mq2 rabbitmqctl[16135]: * epmd reports: node 'rabbit' not running at all
    Mar 14 22:51:14 mq2 rabbitmqctl[16135]: no other nodes on mq2
    Mar 14 22:51:14 mq2 rabbitmqctl[16135]: * suggestion: start the node
    Mar 14 22:51:14 mq2 rabbitmqctl[16135]: Current node details:
    Mar 14 22:51:14 mq2 rabbitmqctl[16135]: * node name: 'rabbitmqcli-16135-rabbit@mq2'
    Mar 14 22:51:14 mq2 rabbitmqctl[16135]: * effective user's home directory: /var/lib/rabbitmq
    Mar 14 22:51:14 mq2 rabbitmqctl[16135]: * Erlang cookie hash: 8J2OCS/WRyu4c4xt5rmDKw==

    上面我标注的2个地方不正确

    搞了一会,我发现我的mq2节点之前再集群启动的时候 ,启动过一次,导致重新加入失败

    所以:要清除数据目录,再重新启动

    [root@mq2 rabbitmq]# cd mnesia/
    [root@mq2 mnesia]# rm -rf *
    [root@mq2 mnesia]# systemctl start rabbitmq-server
    [root@mq2 mnesia]# rabbitmqctl cluster_status
    Cluster status of node rabbit@mq2 ...
    [{nodes,[{disc,[rabbit@mq2]}]},
     {running_nodes,[rabbit@mq2]},
     {cluster_name,<<"rabbit@mq2">>},
     {partitions,[]},
     {alarms,[{rabbit@mq2,[]}]}]
    [root@mq1 ~]# systemctl enable rabbitmq-server
    Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.

    后续操作都ok了

    # rabbitmq-plugins enable rabbitmq_management
    [root@mq1 ~]# rabbitmqctl add_user admin *****
    Adding user "admin" ...
    [root@mq1 ~]# rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
    Setting permissions for user "admin" in vhost "/" ...
    [root@mq1 ~]# rabbitmqctl set_user_tags admin administrator
    Setting tags for user "admin" to [administrator] ...
    [root@mq1 ~]# netstat -tnlp|grep 5672
    tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      1211/beam.smp       
    tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      1211/beam.smp       
    tcp6       0      0 :::5672                 :::*                    LISTEN      1211/beam.smp 
    
    [root@mq2 rabbitmq]# rabbitmqctl stop_app
    Stopping rabbit application on node rabbit@mq2 ...
    [root@mq2 rabbitmq]# rabbitmqctl join_cluster rabbit@mq1
    Clustering node rabbit@mq2 with rabbit@mq1
    [root@mq2 rabbitmq]# rabbitmqctl start_app
    Starting node rabbit@mq2 ...
     completed with 3 plugins.
    
    [root@mq2 rabbitmq]# rabbitmqctl cluster_status
    Cluster status of node rabbit@mq2 ...
    [{nodes,[{disc,[rabbit@mq1,rabbit@mq2]}]},
     {running_nodes,[rabbit@mq1,rabbit@mq2]},
     {cluster_name,<<"rabbit@mq1">>},
     {partitions,[]},
     {alarms,[{rabbit@mq1,[]},{rabbit@mq2,[]}]}]
    [root@mq1 ~]# rabbitmqctl cluster_status
    Cluster status of node rabbit@mq1 ...
    [{nodes,[{disc,[rabbit@mq1,rabbit@mq2]}]},
     {running_nodes,[rabbit@mq2,rabbit@mq1]},
     {cluster_name,<<"rabbit@mq1">>},
     {partitions,[]},
     {alarms,[{rabbit@mq2,[]},{rabbit@mq1,[]}]}]

    如果要配置为镜像模式

    可以通过命令行或者web页面配置

    [root@rabbit1 ~]# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
  • 相关阅读:
    【我的物联网成长记5】如何进行物联网大数据分析?
    云图说|华为云数据库在线迁移大揭秘
    #化鲲为鹏,我有话说# 鲲鹏弹性云服务器配置 Tomcat
    JQuery中$.each 和$(selector).each()的区别详解【转】
    PHP 这个设置 ini_set('memory_limit', '200M') 的生效时间
    [转]PHP底层运行原理和zend编译机制学习
    [转]memcache 缓存图片 示例
    [转]memcache 和 redis 区别
    MYSQL 常用,有用语句
    php curl的几个例子【转】
  • 原文地址:https://www.cnblogs.com/yhq1314/p/14558920.html
Copyright © 2020-2023  润新知