计算机系统应用教程网站

网站首页 > 技术文章 正文

干货分享-RabbitMQ 优化、集群部署、与日常问题处理

btikc 2024-09-24 08:33:21 技术文章 27 ℃ 0 评论

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工具),否则这些端口不应公开

一、安装

  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
systemctl start rabbitmq-server

3. 创建用户(注意替换命令中的变量)

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

4. 启用web界面管理插件

rabbitmq-plugins enable rabbitmq_management

5.访问web页面

http://IP:15672

二、.配置优化

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, []}]}].  

3.开启用户远程访问

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

{loopback_users, []}

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

{loopback_users, ["admin"]}


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


三、集群设置

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

四、报错处理

主机名修改后,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

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表