1> 准备工作我使用的版本:
otp_src_23.1.tar.gz 和 rabbitmq-server-generic-unix-3.8.8.tar.xz
安装节点,RabbitMQ安装(node1,node2,node3),node1为master ,node2和node3为slave
修改3台机器的主机名称:编辑文件 vim /etc/hostname
编辑3台机器,分别加入如下内容, vim /etc/hosts
192.168.110.132 node1
192.168.110.126 node2
192.168.110.121 node3
sudo hostnamectl set-hostname node1
然后重启:reboot
2> 安装gcc环境
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel libxml2-utils libxml2 libxslt openssl-devel unixODBC unixODBC-devel unixODBC-bin gtk2 fop gtk2-devel binutils-devel mesa-libGLU-devel yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel libxml2-utils libxml2 libxslt openssl-devel unixODBC unixODBC-devel unixODBC-bin gtk2 fop gtk2-devel binutils-devel mesa-libGLU-devel
3> 安装erlang
下载地址为:http://www.erlang.org/downloads , 我下载的是otp_src_23.1.tar.gz , 下载完上传服务器,开始解压、配置、编译:
tar -xvf otp_src_23.1.tar.gz
cd otp_src_23.1
./configure --prefix=/usr/local/erlang23 --without-javac
make && make install
如果报错:./configure: line 4640: wx-config: command not found
configure: WARNING:
执行如下命令(原因自行百度):
yum install wxWidgets-devel
yum install wxBase #for /usr/bin/wx-config-3.0
cd /usr/bin; ln -s wx-config-3.0 wx-config
解决办法:
更新epel第三方软件库
yum install -y epel-release
# 再次执行,就可以安装了
yum install –y wxWidgets-devel
yum install wxBase #for /usr/bin/wx-config-3.0
cd /usr/bin
# 创建软连接
ln -s wx-config-3.0 wx-config
yum install java-devel
如果报 Java compiler disabled by user 错误,则去掉--without-javac , 则重新执行如下命令:
./configure --prefix=/usr/local/erlang23
执行无误后,再执行 : make && make install
4> 配置环境变量
vim /etc/profile
ERL_PATH=/usr/local/erlang23/bin
PATH=$ERL_PATH:$PATH
source /etc/profile 使得文件生效
验证一下,输入 erl ,出现如下字样,表示erlang环境安装成功
[root@iZ8vb6brzzk9zndijwzha5Z /]# erl
Erlang/OTP 23 [erts-11.1] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [hipe]
Eshell V11.1 (abort with ^G)
5> 安装 RabbitMQ
安装 python : yum install python -y
安装 simplejson
yum install xmlto -y
yum install python-simplejson -y
rabbitmq下载地址:http://www.rabbitmq.com/download.html,我下载的是
rabbitmq-server-generic-unix-3.8.8.tar.xz , 上传服务器并解压,并移至/usr/local/rabbitmq
tar -xvf rabbitmq-server-generic-unix-3.8.8.tar.xz
mv rabbitmq_server-3.6.8 /usr/local/rabbitmq
设置环境变量
export PATH=$PATH:/usr/local/erlang23/bin:/usr/local/rabbitmq/sbin
source /etc/profile
启动rabbitmq
./rabbitmq-server &
加上& 就是后台启动,./rabbitmqctl stop 为停止服务
rabbitmq从3.3.0开始禁止使用guest/guest权限通过除localhost外的访问,我的版本是3.7.5
解决办法:新增一个user用于访问,添加用户
[root@iZ8vb6brzzk9zndijwzha5Z sbin]# ./rabbitmqctl add_user chengzl 123456
Adding user "chengzl" ...
[root@iZ8vb6brzzk9zndijwzha5Z sbin]#
查看用户列表
[root@iZ8vb6brzzk9zndijwzha5Z sbin]# ./rabbitmqctl list_users
Listing users ...
user tags
chengzl []
guest [administrator]
给用户添加管理员权限
[root@iZ8vb6brzzk9zndijwzha5Z sbin]# ./rabbitmqctl set_user_tags chengzl administrator
Setting tags for user "chengzl" to [administrator] ...
[root@iZ8vb6brzzk9zndijwzha5Z sbin]#
启用管理控制台
./rabbitmq-plugins enable rabbitmq_management
重启 rabbitmq,打开浏览器访问:http://node1:15672,用户名chengzl,密码123456。
6> RabbitMQ集群配置
A》停止MQ服务
./rabbitmqctl stop
复制node1节点的/root/.erlang.cookie文件到其他节点,并覆盖
scp /root/.erlang.cookie root@node2:~
scp /root/.erlang.cookie root@node3:~
scp /root/.erlang.cookie root@node2:/root/.erlang.cookie
B》启动集群(3台机器都重启)如下命令
./rabbitmq-server -datached
C》slave 加入集群,对node2和node3分别执行下面操作
./rabbitmqctl stop_app
rabbitmqctl stop会将Elang虚拟机关掉,rabbitmqctl stop_app只会关闭Rabbitmq服务
./rabbitmqctl reset
./rabbitmqctl join_cluster rabbit@node1
./rabbitmqctl start_app
D》如果需要移除集群节点,执行下面命令:
./rabbitmqctl forget_cluster_node rabbit@node2(具体节点)
E》修改集群名称(任意一个节点操作,默认为master node名称)
./rabbitmqctl set_cluster_name rabbitmq_cluster1
F》查看集群状态(任意一个节点操作)
./rabbitmqctl cluster_status
G》设置镜像队列策略(任意一个节点操作)
./rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态一致。
此时看rabbitmq管控台,如图二个节点,表示集群成功