rabbitmq集群部署

若如初见. 提交于 2020-04-07 10:19:50

0x00 RabbiMQ简介

RabbiMQ是用Erang开发的,集群非常方便,因为Erlang天生就是一门分布式语言,但其本身并不支持负载均衡。

RabbiMQ模式

RabbitMQ模式大概分为以下三种: (1)单一模式。 (2)普通模式(默认的集群模式)。 (3) 镜像模式(把需要的队列做成镜像队列,存在于多个节点,属于RabbiMQ的HA方案,在对业务可靠性要求较高的场合中比较适用)。 要实现镜像模式,需要先搭建一个普通集群模式,在这个模式的基础上再配置镜像模式以实现高可用。

RabbiMQ特点

RabbitMQ的集群节点包括内存节点、磁盘节点。RabbitMQ支持消息的持久化 也就是数据写在磁盘上,最合适的方案就是既有内存节点,又有磁盘节点。

0x01 部署步骤

hosts环境

/etc/hosts

192.168.66.61 xx-mq-1
192.168.66.62 xx-mq-2
192.168.66.63 xx-mq-3

安装包

#  wget http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el7.centos.x86_64.rpm
# wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.15/rabbitmq-server-3.6.15-1.el7.noarch.rpm
#  yum install rabbitmq-server-3.6.15-1.el7.noarch.rpm

yum install erlang rabbitmq-server
# yum安装(阿里源默认3.3版本,这里手动安装了rabbitmq-server-3.6.15-1.el7.noarch.rpm)
systemctl enable rabbitmq-server # 设置开机启动

节点1上配置

systemctl start rabbitmq-server
# 启动服务生成:/var/lib/rabbitmq/.erlang.cookie

ssh-keygen  -t rsa -P ''
ssh-copy-id  xx-mq-2
ssh-copy-id  xx-mq-3
# 推送ssh公钥

scp    -r /var/lib/rabbitmq/.erlang.cookie  xx-mq-2:/var/lib/rabbitmq/
scp    -r /var/lib/rabbitmq/.erlang.cookie  xx-mq-3:/var/lib/rabbitmq/
# 推送文件
ssh xx-mq-2 chown rabbitmq.rabbitmq /var/lib/rabbitmq/.erlang.cookie
ssh xx-mq-3 chown rabbitmq.rabbitmq /var/lib/rabbitmq/.erlang.cookie
# 远程文件赋权

ssh  xx-mq-2 systemctl start rabbitmq-server
ssh  xx-mq-3 systemctl start rabbitmq-server

#rabbitmqctl stop
# rabbitmq-server -detached
# 可以不执行

各个节点配置

rabbitmqctl stop_app
rabbitmqctl join_cluster  rabbit@xx-mq-1
rabbitmqctl start_app
# node2、3加入集群

rabbitmqctl cluster_status
# 任意节点查看集群状态

rabbitmqctl reset
# 除节点时在某个节点里执行即可

设置集群策略:镜像队列

rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
# 任意节点上执行命令设置镜像队列策略:将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态保持一直

配置文件参考

RabbitMQ的配置文件为:/etc/rabbitmq/rabbitmq.config
RabbitMQ的环境配置文件为:/etc/rabbitmq/rabbitmq-env.conf

插件管理

rabbitmq-plugins list

rabbitmq-plugins enable rabbitmq_management
# 启用rabbitmq_management web界面管理插件

haproxy 负载(可用nginx tcp负载)

cat /etc/haproxy/haproxy.cfg

listen rabbitmq_cluster 0.0.0.0:5672

mode tcp
balance roundrobin
 
server   node1 192.168.1.1:5672 check inter 2000 rise 2 fall 3  
server   node2 192.168.1.2:5672 check inter 2000 rise 2 fall 3
server   node2 192.168.1.3:5672 check inter 2000 rise 2 fall 3

listen private_monitoring :8100
       mode    http
       option  httplog
       stats   enable
       #设置haproxy监控地址为http://localhost:8100/rabbitmq-stats 
       stats   uri  /rabbitmq-stats
       stats   refresh 5s

web管理

/usr/lib/rabbitmq/lib/rabbitmq_server-3.6.15/ebin/rabbit.app

 {loopback_users, [ ]},
systemctl restart rabbitmq-server
# 重启服务

或者新建用户

查看用户 :rabbitmqctl list_users

rabbitmqctl add_user admin 123456
# 创建一个admin用户

abbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / asdf ".*" ".*" ".*"
# 用户授权

rabbitmqctl  change_password  admin  'Newpassword'
# 修改用户密码

http://192.168.66.61:15672/ 账号密码: admin 123456

参考文档

https://blog.51cto.com/11134648/2155934

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!