环境: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"}'

相关文章:

  • 2021-11-11
  • 2021-09-14
  • 2021-07-14
  • 2021-07-21
  • 2021-11-19
  • 2022-12-23
  • 2021-06-01
猜你喜欢
  • 2022-12-23
  • 2021-08-15
  • 2021-05-29
  • 2022-12-23
  • 2021-06-21
  • 2021-08-12
  • 2022-12-23
相关资源
相似解决方案