RabbiMQ模式
RabbitMQ模式大概分为以下三种:
(1)单一模式。
(2)普通模式(默认的集群模式)。
(3) 镜像模式(把需要的队列做成镜像队列,存在于多个节点,属于RabbiMQ的HA方案,在对业务可靠性要求较高的场合中比较适用)。
要实现镜像模式,需要先搭建一个普通集群模式,在这个模式的基础上再配置镜像模式以实现高可用。
RabbiMQ特点
RabbitMQ的集群节点包括内存节点、磁盘节点。RabbitMQ支持消息的持久化也就是数据写在磁盘上,最合适的方案就是既有内存节点,又有磁盘节点。
1.环境信息
1.1 服务器信息
root@upsmiddelvm01:~# cat /etc/issue
Ubuntu 16.04.6 LTS \n \l
root@upsmiddelvm01:~# cat /etc/hosts
127.0.0.1 localhost
10.0.162.11 upsmiddelvm01
10.0.162.12 upsmiddelvm02
10.0.162.13 upsmiddelvm03
root@upsmiddelvm01:~# uname -r
4.4.0-165-generic
1.2 服务角色规划
IP地址 |
主机名 |
操作系统 |
用途 |
10.0.162.11 |
upsmiddelvm01 |
Ubuntu 16.04.6 |
内存节点 |
10.0.162.12 |
upsmiddelvm02 |
Ubuntu 16.04.6 |
磁盘节点 |
10.0.162.13 |
upsmiddelvm03 |
Ubuntu 16.04.6 |
内存节点 |
2 安装rabbitmq
2.1 下载rabbitmq包
wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server_3.6.5-1_all.deb
2.2 安装rabbitmq
sudo dpkg -i rabbitmq-server_3.6.5-1_all.deb
sudo apt-get -f install
注:dpkg -i pkg.deb #手动安装软件包(不能解决软依赖性问题,可以用apt-get -f install解决)
2.3 设置相同的.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie root@10.0.162.12:/var/lib/rabbitmq
scp /var/lib/rabbitmq/.erlang.cookie root@10.0.162.13:/var/lib/rabbitmq
2.4 启动rabbitmq服务
sudo service rabbitmq-server restart |stop |start
3 创建rabbitmq集群
把10.0.162.11 10.0.162.13加入10.0.162.12并设置 为内存节点
sudo rabbitmqctl stop_app
sudo rabbitmqctl join_cluster --ram rabbit@upsmiddelvm02
sudo rabbitmqctl start_app
4 查看rabbitmq集群状态
root@upsmiddelvm02:~# rabbitmqctl cluster_status
Cluster status of node rabbit@upsmiddelvm02 ...
[{nodes,[{disc,[rabbit@upsmiddelvm02]},
{ram,[rabbit@upsmiddelvm03,rabbit@upsmiddelvm01]}]},
{running_nodes,[rabbit@upsmiddelvm01,rabbit@upsmiddelvm03,
rabbit@upsmiddelvm02]},
{cluster_name,<<"rabbit@upsmiddelvm02">>},
{partitions,[]},
{alarms,[{rabbit@upsmiddelvm01,[]},
{rabbit@upsmiddelvm03,[]},
{rabbit@upsmiddelvm02,[]}]}]
root@upsmiddelvm02:~#
5 设置集群为镜像集群
#将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态一致。
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
例
rabbitmqctl set_policy -p my-vhosts my-policy"^" '{"ha-mode":"all"}'
命令说明:
在vhost名称为“my-vhosts” 上创建了一个策略,策略名称为my-policy,
策略正则表达式为 “^” 表示所有匹配所有队列名称,
策略模式为 all 即复制到所有节点,包含新增节点。
6 rabbitmq常用命令
1.创建用户
sudo rabbitmqctl add_user suixiaofeng suixiaofeng
sudo rabbitmqctl set_user_tags suixiaofeng administrator
sudo rabbitmqctl set_permissions -p / suixiaofeng ".*" ".*" ".*"
sudo rabbitmqctl list_users
2.创建vhost
rabbitmqctl add_vhost /dev
rabbitmqctl set_permissions -p /dev suixiaofeng ".*" ".*" ".*"
rabbitmqctl list_permissions -p /dev
3.参数调整
配置最大连接限制
要限制vhost vhost_name中并发客户端连接的 总数,请使用以下限制定义:
rabbitmqctl set_vhost_limits -p vhost_name'{“max-connections”:256}'
要禁用到虚拟主机的客户端连接,请将限制设置为零:
rabbitmqctl set_vhost_limits -p vhost_name'{“max-connections”:0}'
要解除限制,请将其设置为负值:
rabbitmqctl set_vhost_limits -p vhost_name'{“max-connections”:-1}'
配置最大队列数
要限制vhost vhost_name中的队列 总数,请使用以下限制定义:
rabbitmqctl set_vhost_limits -p vhost_name'{“max-queues”:1024}'
要解除限制,请将其设置为负值:
rabbitmqctl set_vhost_limits -p vhost_name'{“max-queues”:-1}'
4.启动web
sudo rabbitmq-plugins enable rabbitmq_management