RabbitMQ 端口说明:
4369 – epmd,RabbitMQ节点和CLI工具使用的对等发现服务
5672 – 由不带TLS和带TLS的AMQP 0-9-1和1.0客户端使用
15672 – HTTP API客户端,管理UI和Rabbitmqadmin (仅在启用管理插件的情况下)
25672 --用于节点间和CLI工具通信(Erlang分发服务器端口),并从动态范围分配(默认情况下限制为单个端口,计算为AMQP端口+ 20000)。除非确实需要这些端口上的外部连接(例如,群集使用联合身份验证或在子网外部的计算机上使用CLI工具),否则这些端口不应公开

我们连接RabbitMQ的话就要用client端通信口:

1.配置yum源

安装epel源

yum install -y epel-release
##安装依赖
yum install erlang -y

rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
yum install https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10-1.el7.noarch.rpm

2.设置开机自启动

systemctl enable rabbitmq-server

3.配置及优化

1) 修改rabbitmq的socket 文件数
##修改rabbitmq的socket 文件数
vim /usr/lib/systemd/system/rabbitmq-server.service

[Service]
LimitNOFILE=300000

###提高rabbitmq的内存低水位线(默认0.4)
vim /etc/rabbitmq/rabbitmq.config

[{rabbit, [{vm_memory_high_watermark_paging_ratio, 0.75}, {vm_memory_high_watermark, 0.6}]}].

2) 配置用户登陆权限
vim /etc/rabbitmq/rabbitmq.config

[{rabbit, [{loopback_users, []}]}].

开启用户远程访问
默认情况下,RabbitMQ的默认的guest用户只允许本机访问, 如果想让guest用户能够远程访问的话,只需要将配置文件中的loopback_users列表置为空即可,如下:

{loopback_users, []}

另外关于新添加的用户,直接就可以从远程访问的,如果想让新添加的用户只能本地访问,可以将用户名添加到上面的列表, 如只允许admin用户本机访问。

{loopback_users, ["admin"]}

4.基础设置

更新配置后,别忘了重启服务哦!

1) 创建用户

rabbitmqctl add_user ${youruser}  ${yourpassword}
rabbitmqctl set_user_tags ${youruser} administrator

2)启用web界面管理插件

rabbitmq-plugins enable rabbitmq_management

3)启动服务

systemctl start rabbitmq-server

5. 集群设置

1)修改 /var/lib/rabbitmq/.erlang.cookie 使集群中的服务器该文件内容保持一致

2)确保各节点网络互通,编辑各节点host解析vim /etc/hosts

192.168.1.1   host1(host这里注意是hostname 而不是rabbit@hostname)
   192.168.1.2   host2

3)主节点开启应用(默认开启)

rabbitmqctl start_app

4)如果主机间有防火墙,先配置防火墙使之互通

firewall-cmd --add-port={5672,4369,25672}/tcp --permanent

5)在主节点以外其他节点执行

rabbitmqctl stop_app
 rabbitmqctl join_cluster rabbit@host1(主节点host)
 rabbitmqctl cluster_status
 rabbitmqctl start_app
 rabbitmqctl cluster_status

安装完成,web页面访问 192.168.1.1:15672

6. 报错处理

主机名修改后,rabbitmq报错:
Error: unable to connect to node rabbit@pub: nodedown

DIAGNOSTICS
===========

attempted to contact: [rabbit@a-pub]

rabbit@pub:
  * unable to connect to epmd (port 4369) on a-pub: nxdomain (non-existing domain)


current node details:
- node name: 'rabbitmq-cli-25@pub'
- home dir: /var/lib/rabbitmq
- cookie hash: hczXpvF39Wr2EpJ4cjRpAQ==

之前没找到原因,修改/etc/hosts,/etc/sysconfig/network 不起作用,然后重启了rabbitmq 也还是不行并且导致重启后用户丢失 ,此时你可以选择将hostname 改回去或者正确的姿势是将原hostname 写入下面的配置文件 ,保证rabbitmq 可以识别,原因见下面
echo ‘NODENAME=rabbit@pub’ > /etc/rabbitmq/rabbitmq-env.conf

ps: Rabbitmq 重启后用户丢失解决办法
原因:
RabbitMQ数据是根据当前hostname作为node节点作为数据名保存
如果在重启之前修改了主机名hostname ,那么程序会在/var/lib/rabbitmq/mnesia/ 下新建数据文件,而原来的账号等数据存在于原hostname命名的数据文件,因此导致用户丢失
解决办法:
echo “NODENAME=rabbit@${yourhostname}” >> /etc/rabbitmq/rabbitmq-env.conf