首页天道酬勤java实现消息队列,rabbitmq集群需要几台机器

java实现消息队列,rabbitmq集群需要几台机器

张世龙 05-12 07:54 25次浏览

一、集群构建环境构建

B:192.168.200.139

C:192.168.200.140

D:192.168.200.141

设定/etc/hosts

VI/etc/hosts 192.168.200.139节点b 192.168.200.140节点c 192.168.200.141节点# 重新启动网络systemctlrestartnetworkseter防火墙systemctlstopiptablessystemctlstopfirewalldsystemctldisablefirewalld.service

将. erlang.cookie复制到其他两个相应的目录中

如果没有此文件,请手动创建/var/lib/rabbitmq/. Erlang.cookie、生成cookie字符串或启动rabbit MQ自动生成文件

建议在生产环境中使用第三方工具生成

首先,在b中启动独立版本的RabbitMQ以生成Cookie文件。

CD/usr/lib/rabbit MQ/lib/rabbit MQ _ server-3.8.16/sbin/rabbit MQ-server-detached CD/var/lib/rabit-rabit TT

开始同步. erlang.cookie文件。 RabbitMQ的集群依赖于Erlang的分散特性,为了实现集群节点的认证和通信,需要保持Erlang Cookie的一致性

然后复制到c和d的当前目录

scp.Erlang.cookie root @ nodec :/var/lib/rabbit MQ/scp.Erlang.cookie root @ noded 3360/var/lib/rabit MQ

ll-achownrabbitmq : rabbit MQ.Erlang.cookie

c和d也启动

CD/usr/lib/rabbit MQ/lib/rabbit MQ _ server-3.8.16/sbin/rabbit MQ-server-detached将c和d两个节点添加到群集中

停止正在#ErlangVM上运行的RabbitMQ APP应用程序,并保留正在运行Erlang VM的RabbitMQctl stop_app#以从当前rabbit MQ虚拟主机中删除所有数据: rabbitmqctl reset# rabbitmqctljoin _ cluster rabbit @ nodeb #启动当前Erlang VM上的RabbitMQ APP应用程序rabbitmqctlstart _ app rabbit @ nodeb表示rabbit MQ节点名称,

默认前缀为rabbit,@后面跟当前虚拟主机所在的物理主机hostname

缺省情况下,join_cluster使用磁盘模式,稍后可以添加参数ram启用内存模式

通过nodeB查看群集的状态,可以看到nodeC和nodeD已加入群集

添加用户

三台机器启动插件

rabbit MQ-pluginsenablerabbitmq _ management位于其中一台计算机上

rabbitmqctladd _ user root 123456 rabbitmqctlset _ permissions-- vhost '/' root '.* '.* '.* ' rabbitmqctlset _ _ }

3http://192.168.200.139336015672 /

登录

重命名群集和查看群集状态

#重命名群集(可在任何节点上运行) rabbitmqctl set_cluster_name# (显示群集状态)可在任何节点上运行)删除rabbitmqctl cluster_status群集

#虚拟主机(RabbitMQ的节点)从群集中删除rabbit@nodeD。 #但是,rabbit@nodeD保存了集群信息。 #尝试加入群集,但被拒绝。 可以重置rabbit@nodeD节点。 rabbitmqctlforget _ cluster _ node rabbit @ noded二、镜像集群配置概述

RabbitMQ队列的内容本地存储在一个节点上。 (声明队列的节点) ) )。

与交换机和绑定不同,它用于群集中的所有节点

因此,队列的内容有单点故障。 一种解决方案是使用镜像队列将队列的副本复制到多个节点

启用镜像队列#在/节点上配置镜像队列,并使用全局复制rabbitmqctlset _ policy ha-all ' ^ ' { ' ha-mode ' 3360 ' all ' } #进行镜像

olicy ha-halfmore "queueA" '{"ha-mode":"exactly", "haparams":2}'#指定优先级,数字越大,优先级越高 rabbitmqctl set_policy --priority 1 ha-all "^" '{"ha-mode":"all"}' 三、负载均衡-HAProxy 简介
nodeA:192.168.200.136
将客户端的连接和操作的压力分散到集群中的不同节点,防止单个或几台服务器压力过大成为访问的瓶颈,甚至宕机安装
在nodeA上安装HAProxyyum -y install haproxy haproxy默认在/usr/sbin/haproxy,且会自动创建配置文 件/etc/haproxy/haproxy.cfg配置haproxy.cfg#查看uid, 用于配置id haproxy#配置vim /etc/haproxy/haproxy.cfg 配置详细:global log 127.0.0.1 local0 info #服务器最大并发连接数;如果请求的连接数高于此值,将其放入请求队列,等待其它连接被释放; maxconn 5120 #chroot /tmp #指定用户 uid 188 #指定组 gid 188 #让haproxy以守护进程的方式工作于后台,其等同于“-D”选项的功能 #当然,也可以在命令行中以“-db”选项将其禁用; daemon #debug参数 quiet #指定启动的haproxy进程的个数,只能用于守护进程模式的haproxy; #默认只启动一个进程, #鉴于调试困难等多方面的原因,在单进程仅能打开少数文件描述符的场景中才使用多进程模式; #nbproc 20 nbproc 1 pidfile /var/run/haproxy.piddefaults log global #tcp:实例运行于纯TCP模式,第4层代理模式,在客户端和服务器端之间将建立一个全双工的连接, #且不会对7层报文做任何类型的检查; #通常用于SSL、SSH、SMTP等应用; mode tcp option tcplog option dontlognull retries 3 option redispatch maxconn 2000 #contimeout 5s timeout connect 5s #客户端空闲超时时间为60秒则HA 发起重连机制 timeout client 60000 #服务器端链接超时时间为15秒则HA 发起重连机制 timeout server 15000listen rabbitmq_cluster #VIP,反向代理到下面定义的三台Real Server bind 192.168.200.136:5672 #配置TCP模式 mode tcp #简单的轮询 balance roundrobin #rabbitmq集群节点配置 # nter 每隔五秒对mq集群做健康检查,2次正确证明服务器可用,2次失败证明服务器不可用,并且配置主备机制 server rabbitmqNode1 192.168.200.139:5672 check inter 5000 rise 2 fall 2 server rabbitmqNode2 192.168.200.140:5672 check inter 5000 rise 2 fall 2 server rabbitmqNode3 192.168.200.141:5672 check inter 5000 rise 2 fall 2#配置haproxy web监控,查看统计信息listen stats bind 192.168.200.136:9000 mode http option httplog #启用基于程序编译时默认设置的统计报告 stats enable #设置haproxy监控地址为http://192.168.200.136:9000/rabbitmq-stats stats uri /rabbitmq-stats #每5s刷新一次页面 stats refresh 5s 启动haproxy -f /etc/haproxy/haproxy.cfg 查看
访问http://192.168.200.136:9000/rabbitmq-stats
关闭kill -9 <pid>
rabbitmq脱离集群,rabbitmq集群需要几台机器