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