1 简介
RabbitMQ是流行的开源消息队列系统,用erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
2 安装准备
2.1 需要两台虚拟机:
192.168.92.66 node01
192.168.92.67 node02
并修改对应的ip 主机名配置到/etc/hosts文件中
2.2 安装包:
官网下载安装包(注意下载安装包时一定要注意erlang cookie和rabbitmq版本要一直,否则安装时一直会提示erlang cookie版本低的问题)
本人使用的稳定版本: rabbitmq-server-3.7.6-1.el7.noarch.rpm erlang-20.3.7-1.el7.centos.x86_64.rpm
如果使用的Contos精简版的话 还需要下载基础包
本人使用Centos7精简版需要安装的基本包如下
yum install -y iptables-services tar net-tools gcc
3 集群搭建
3.1 修改hosts配置文件
vi /etc/hosts
将192.168.92.66 node01 192.168.92.67 node02加入到hosts文件中
3.2 安装erlang cookie
cd /app/rabbitmq/installFile 找到安装文件
rpm -ivh erlang-20.3.7-1.el7.centos.x86_64.rpm 安装erlang cookie
erl 验证erlang cookie是否安装成功
3.3 安装rabbitmq
cd /app/rabbitmq/installFile 找到安装文件
yum install -y rabbitmq-server-3.7.6-1.el7.noarch.rpm 安装rabbitmq
使用yum安装rabbitmq,默认安装目录如下:
安装目录:/usr/lib/rabbitmq
日志目录:/var/log/rabbitmq
erlang cookie文件:/var/lib/rabbitmq/.erlang.cookie (注意:这个文件只有安装了rabbitmq后有)
cd /usr/lib/rabbitmq/bin 进入rabbitmq命令目录
rabbitmq-plugins enable rabbitmq_management 安装rabbtimq客户端管理工具
rabbitmq-server -detached 启动rabbitmq
创建账户并分配外网访问权限(默认的guest账户外网无法访问)
rabbitmqctl add_user admin admin
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
开放防火墙端口(防火墙端口不开放无法访问)
systemctl start firewalld
firewall-cmd --add-port=15672/tcp --permanent
firewall-cmd --add-port=25672/tcp --permanent
firewall-cmd --add-port=4369/tcp --permanent
firewall-cmd --add-port=5671/tcp --permanent
firewall-cmd --add-port=5672/tcp --permanent
firewall-cmd --reload
验证安装是否成功
http://192.168.92.66:15672
同理在另一台机器上安装
3.4 集群搭建
登陆192.168.92.67虚拟机
cd /usr/lib/rabbitmq/bin 进入rabbitmq命令目录
rabbitmqctl stop 关闭rabbitmq服务(这一步很重要,如果你不关闭服务器的话,后面从node01中复制erlang cookie后服务器将无法关闭和重启 会报erlang cookie不一致问题)
scp -r root@node01:/var/lib/rabbitmq/.erlang.cookie / var/lib/rabbitmq 将node节点中的erlang cookie复制到node02节点上(保证两台机器的erlang cookie一致 因为两台机器之间的通讯就是通过erlang cookie实现的)
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie 修改erlang cookie文件的所有用户和组(因为复制过来的文件默认用户和组有可能是 root:root,因此需要修改)
rabbitmq-server -detached 开启rabbitmq服务
rabbitmqctl stop_app 关闭应用服务 (注意关闭rabbitmq服务和关闭应用服务的区别)
rabbitmqctl join_cluster rabbit@node01 将node02节点添加的node01的集群中
rabbitmqctl start_app 开启应用服务
rabbitmqctl status 可以看到集群中多了一个节点node02
登录rabbitMq管理界面查看192.168.92.66:15672 或者 192.168.92.67:15672