1、安装erlang22.1
参考我之前的文章即可(https://www.jianshu.com/p/2187e03ad126
),由于最新版官网比较慢,特意准备了百度网盘链接:
链接: https://pan.baidu.com/s/1iYK7ejegd54H3wM1xXNDcw 提取码: gd8t
2、安装Rabbitmq 3.8
这一步主要参考官网的步骤,具体如下:
2.1 安装Erlang的环境-之前我们已经安装了,但是这里可以把rabbitmq的依赖包都安装了,如果跳过次步,将缺少依赖无法安装
创建 /etc/yum.repos.d/rabbitmq_erlang.repo 文件,内容如下:
[rabbitmq_erlang]
name=rabbitmq_erlang
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
[rabbitmq_erlang-source]
name=rabbitmq_erlang-source
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
安装erlang
yum install erlang -y
2.2 安装RabbitMQ服务
2.2.1 导入mq签名
rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
2.2.2 添加rabbitmq.repo文件-此处可参看官网(https://www.rabbitmq.com/install-rpm.html
),我这边服务器是centos7,故rabbitmq.repo写入如下内容:
[bintray-rabbitmq-server]
name=bintray-rabbitmq-rpm
baseurl=https://dl.bintray.com/rabbitmq/rpm/rabbitmq-server/v3.8.x/el/7/
gpgcheck=0
repo_gpgcheck=0
enabled=1
2.2.3 安装rabbitmq服务
yum install rabbitmq-server -y
2.2.4 启动服务并设置开机自启动
systemctl start rabbitmq-server
systemctl enable rabbitmq-server
2.2.5 开启管理界面
这一点 方便我们通过url访问查看运行情况,阿里云服务器安全里一定要开启15672端口
rabbitmq-plugins enable rabbitmq_management
在此我们还需要新增一个用户作为管理员
添加用户 -用户名 密码自己定
rabbitmqctl add_user username passwd
修改用户角色为管理员- 把下面username改成自己的用户名
rabbitmqctl set_user_tags username administrator
修改用户权限
rabbitmqctl set_permissions -p / username ".*" ".*" ".*"
自此 你可以通过ip:15672的方式访问RabbitMQ后台
2.3 rabbitmq集群 也是本文最重要的部分
目前我是有两台阿里云的,同一区的服务器,内网可访问。
2.3.1 修改hostname -服务器别名,方便我们后面两个mq服务连接
vi /etc/hosts 新增node1和node2 两个内网ip
172.26.184.179 node2
172.26.184.178 node1
原以为OK了,重启还是老样子,其实centos7 还提供了一步方法
hostnamectl set-hostname node2
直接修改成功了!
2.3.2 Erlang cookie设置,这里最坑,困了我好久,有必要总结一下
确保node1与node2两个服务器的.erlang.cookie保持一致
找到node1服务器的.erlang.cookie,位置如下:
/var/lib/rabbitmq/.erlang.cookie
然后复制内容到node2服务器对应的.erlang.cookie
修改好后,记得还原权限400
chmod 400 /var/lib/rabbitmq/.erlang.cookie
修改完后 一定要重启node1与node2服务器,这样修改才能生效。之前一直困扰我的node2连接不上node1的mq服务,一直提示cookie有问题,重启mq服务也没用,重启服务器 reboot后问题就可以解决,切莫少了这步。
出现的问题如下:
TCP connection succeeded but Erlang distribution failed
Authentication failed (rejected by the remote node), please check the Erlang cookie
那就执行重启命令吧!一切解决!
reboot
2.3.3 加入mq集群
node1 mq服务设置后台执行
rabbitmqctl stop
rabbitmq-server -detached
可以查看目前 node1的mq状态
rabbitmqctl cluster_status
node2 加入node1的MQ集群,关键时刻了!
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@node1
rabbitmqctl start_app
配置好MQ集群后,可以在 node1、node2服务器上任意执行 rabbitmqctl cluster_status 来查看MQ集群是否配置成功
如下图所示:
查看MQ集群状态
这里就彻底成功了!现在直接通过url访问看一下是否正常可以显示两个mq服务:
集群界面
最后,祝大家安装一切顺利!
网友评论