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
来源:oschina
链接:https://my.oschina.net/attacker/blog/3222748