rabbitmq集群搭建

rabbimtq简介

rabbitmq是用erlang语言开发的,erlang语言最初用于交换机领域,这样就使得rabbitmq和broker(server)之间进行数据交互的性能是非常优秀的,erlang有着和原生socket一样的延迟,集群非常方便,因为erlang天生就是分布式语言,但其本身不支持负载均衡。

rabbitmq模式

rabbitmq模式大概分为以下三种:

  1. 单一模式
  2. 普通模式(默认的集群模式)
  3. 镜像模式(把需要的队列做成镜像队列,存在于多个节点。属于rabbitmq的HA方案,在对业务的可靠性要求较高的场合中比较适用)

rabbitmq特点

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

rabbitmq集群安装

环境规划

  • 10.200.200.10 rabbitmq01 --disk
  • 10.200.200.20 rabbitmq02 --ram
  • 10.200.200.30 rabibtmq03 --ram

1、安装依赖包

yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz socat

2、下载erlang

wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm

3、下载rabbitmq

wget www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm

4、安装erlang和rabbitmq

rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm
rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm

5、修改hosts,保证三台服务器直接都可以相互ping通

vim /etc/hosts
  10.200.200.10 rabbitmq01
  10.200.200.20 rabbitmq02
  10.200.200.30 rabibtmq03

6、启动rabbitmq服务

systemcetl start rabbitmq-server

7、选择其中一台erlang.cookie为准,拷贝到其他节点,这里假设为第一台

cd /var/lib/rabbitmq/
scp .erlang.cookie root@rabbit02:/var/lib/rabbitmq/
scp .erlang.cookie root@rabbit03:/var/lib/rabbitmq/

8、拷贝完如果直接重启的话会导致服务起不来,因为文件的权限不对

cd /var/lib/rabbitmq/
chown -R rabbitmq. .erlang.cookie
chmod 400 .erlang.cookie

9、检查插件

/usr/lib/rabbitmq/bin/rabbitmq-plugins list //查看插件安装情况
/usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management //启用rabbitmq_management服务
systemctl restrart rabbitmq-server

10、将rabbitmq02/rabbitmq03加入到集群节点

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq01
rabbitmqctl start_app

11、查看集群状态

rabbitmqctl cluster_status

12、添加全局镜像策略

admin->Policies->Add/update a policy

Name:ha_all
Pattern:^
Defiinition: ha-mode=all

Add policy

或者使用命令行工具
./rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}' ./rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}' 

在创建队列时,Arguments中设置ha-mode = all,创建完成之后,在Policy中要看到刚刚创建的queue,会显示+2(表示3个节点)。

当有节点故障时,服务恢复,显示粉色的+,需要在该节点手动执行 rabbitctl sync_quere队列名称同步,就会恢复。

原文地址:https://www.cnblogs.com/hzxyf/p/13857432.html