RabbitMQ安装和高可用集群搭建

RabbitMQ安装和高可用集群搭建

准备:使用VMware软件搭建3台centos服务器并完成host相关配置,可以使用我的软件地址。

链接:https://pan.baidu.com/s/1D-NIyFGLRiLeBXTNqBDe9w 
提取码:bn32

由于版本等原因,安装过程容易出现各种莫名其妙的问题,关于软件安装和集群搭建的主要流程部分,我将以1.2.3开头标明执行时序,建议严格按照顺序执行!!!

一.RabbitMQ安装

rabbitmq和erlang必须相兼容,注意版本对应关系,官网链接如下:
https://www.rabbitmq.com/which-erlang.html

1.mkdir -p /root/rabbitmq;cd /root/rabbitmq
##新建一个目录并进入,本文使用的的路径是/root/rabbitmq
2.yum -y install epel-release
##安装前置依赖
3.wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
4.rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
##更新yum库中的erlang [可能需要epel-release,我们第一步已经安装]
5.yum install erlang
##不要直接-y,安装时注意erlang的版本,我的是22.3.2-1.el7
6.wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.3/rabbitmq-server-3.8.3-1.el7.noarch.rpm
##根据安装的erlang版本,调整此处下载的rabbitmq版本
7.yum -y install rabbitmq-server-3.8.3-1.el7.noarch.rpm
8.rabbitmq-plugins enable rabbitmq_management

##安装管理控制台
9.顺序执行下面的用户相关命令,启动rabbitmq,访问 host:15672 user/pwd[cheng/1234],出现类似如下界面说明rabbitmq安装成功
rabbitmqctl add_user cheng 1234 
rabbitmqctl set_permissions -p / cheng '.*' '.*' '.*' 
rabbitmqctl set_user_tags cheng administrator

卸载[如果安装出现问题,使用如下相关命令尝试卸载并重新安装]
yum list installed | grep rabbitmq
yum list installed | grep erlang
yum -y remove rabbitmq-server.noarch
yum -y remove erlang-*
yum -y remove erlang.x86_64
yum -y remove erlang-asn1.x86_64
yum -y remove erlang-compiler.x86_64
yum -y remove erlang-solutions.noarch
yum -y remove epel-release
rm -rf /usr/lib64/erlang
rm -rf /var/lib/rabbitmq
rm -rf /var/cache/yum/x86_64/7/epel/

管理命令:
service rabbitmq-server start  启动
service rabbitmq-server status 查看状态
service rabbitmq-server stop   停止
#虚拟主机相关命令 查看/添加/删除
rabbitmqctl list_vhosts
rabbitmqctl add_vhost abc[host名称]
rabbitmqctl delete_vhost
#用户相关命令 新增/授权/授角色 [/代表默认host,新增一个cheng的用户,密码1234,拥有配置和读写权限,角色为admin]
rabbitmqctl add_user cheng 1234
rabbitmqctl set_permissions -p / cheng '.*' '.*' '.*'
rabbitmqctl set_user_tags  cheng  administrator
#其他实用命令
rabbitmq-server 会启动Erlang节点和Rabbitmq应用
rabbitmqctl stop会关闭Erlang节点和Rabbitmq应用
rabbitmqctl stop_app关闭Rabbitmq应用
rabbitmqctl start_app启动Rabbitmq应用
rabbitmqctl status 检查消息节点是否正常
rabbitmqctl list_queues 查看队列
rabbitmqctl list_exchanges 查看交换器

可以直接输入 rabbitmqctl 查询其他命令

二.Rabbitmq集群搭建
集群搭建 常用命令解释
rabbitmqctl stop_app/reset/start_app 停止/重置/启动
rabbitmqctl join_cluster rabbit@node1 将当前节点加入node1构成集群
rabbitmqctl cluster_status 查询集群状态
rabbitmqctl reset 将node节点恢复为空白状态,在集群下,通过这个命令,可以让节点离开集群。

Rabbitmq 集群对延迟非常敏感, 只能在本地局域网内使用。
1.vim /etc/hosts  
##修改三台服务器host映射 三台服务ip分别为101/102/103
192.168.42.101 node1
192.168.42.102 node2
192.168.42.103 node3


2.vim /etc/hostname  
##分别修改三台服务器的机器名 修改完成后使用reboot重启虚拟机,出现如下图说明成功
node1/node2/node3


3.vim /var/lib/rabbitmq/.erlang.cookie
rabbitmq集群需要Erlang Cookie文件内容一致,该文件默认隐藏,使用ll -a命令可查看
文件地址:/var/lib/rabbitmq/.erlang.cookie,需要将node1的该文件复制到node2、node3,可以复制内容也可以直接复制文件替换。
注意这个文件权限是 400,复制内容需要先修改写权限,写完后再改回只读权限。
4.service rabbitmq-server start ##启动各节点
service rabbitmq-server status ##测试是否启动成功
5.node1不变,在 node2、node3上顺序执行如下命令
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@node1
rabbitmqctl start_app
rabbitmqctl cluster_status

##默认添加磁盘节点,若要添加内存节点,则此处第三条命令改为:rabbitmqctl join_cluster rabbit@node1 --ram
出现如下界面则说明集群安装成功
ps:rabbitmq集群默认不复制队列数据,会复制元数据和exchange路由信息 为了确保集群性能 至少有两个磁盘节点 仅存活一个磁盘节点时 无法执行修改操作 1.当一个节点宕机时生产者和消费者仍然能运行 2.集群能提高吞吐量


说明:rabbitmq集群间只会同步元数据和路由[exchange]数据,当某一个节点宕机时,该节点的队列数据会丢失,因此若需要保持集群的高可用,需要使用镜像队列策略,有三种方案
1.代码中添加x-ha-policy策略
Map<String, Object> args = new HashMap<String, Object>();
args.put("x-ha-policy", "all");
在声明队列时传入 channel.queueDeclare(queueName,false,false, false, args);
2.命令行执行
rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority]
eg:rabbitmqctl set_policy ha-queue-one '^queue_' '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'
3.控制台修改

三.RabbitMQ集群高可用 [HAProxy]
HAProxy功能类似于nginx,keepalive的LVS策略
rabbitmq集群最高可用方案:镜像队列 x-ha-policy[事务+高可用队列+数据持久化]
官网:http://www.haproxy.org/
1.cd /root/rabbitmq
##进入安装目录
2.wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.14.tar.gz
##下载最新的LTS版本
3.uname -r
##查看内核版本,我的是3.10.0-1062.18.1.el7.x86_64
4.make TARGET=linux310 ARCH=x86_64 PREFIX=/root/rabbitmq/haproxy-2.0.14
5.make install PREFIX=/root/rabbitmq/haproxy-2.0.14
6.mkdir /root/rabbitmq/haproxy-2.0.14/conf
##新建conf文件夹
vim /root/rabbitmq/haproxy-2.0.14/conf/haproxy.cfg
##新建配置文件。可以参考系统默认配置 cp /root/rabbitmq/haproxy-2.0.14/examples/option-http_proxy.cfg /root/rabbitmq/haproxy-2.0.14/conf/haproxy.cfg
编辑配置文件如下:

global #全局配置
    log 127.0.0.1   local0
    maxconn 1000
    daemon	#后台运行
 
defaults #默认参数配置
    log     global
    mode    http
    #option  httplog
    option  dontlognull
    retries 3
    timeout connect 5000
    timeout client  50000
    timeout server 50000
 
listen admin_stats #admin客户端配置
    bind 0.0.0.0:1080
    mode http
    option httplog
    maxconn 10
    stats refresh 30s
    stats uri /stats
    stats realm XingCloud\ Haproxy
    stats auth admin:admin
    stats auth  Frank:Frank
    stats hide-version
    stats  admin if TRUE

listen rabbitmq_admin
    bind 0.0.0.0:15670
    server rabbitadmin01 node1:15672
    server rabbitadmin02 node2:15672
    server rabbitadmin03 node3:15672
		
listen rabbitmq_cluster #rabbitmq监听配置
    bind 0.0.0.0:5670
    mode tcp
    balance roundrobin #轮询,心跳5s,成功2次失败3次确认
    server rabbit01 node1:5672 check inter 5000 rise 2 fall 3
    server rabbit02 node2:5672 check inter 5000 rise 2 fall 3
    server rabbit03 node3:5672 check inter 5000 rise 2 fall 3

7./root/rabbitmq/haproxy-2.0.14/sbin/haproxy -f /root/rabbitmq/haproxy-2.0.14/conf/haproxy.cfg
##启动HAProxy
8.验证lsof -i:1080

访问HAProxy统计页面http://192.168.42.101:1080/stats
访问RabbitMQ页面http://192.168.42.101:15670/
结果如下页面:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值