RabbitMQ模式有三种,分别是:单一模式、普通模式、镜像模式,镜像模式才是RabbitMQ真正的HA方案,关于更详细的简绍,请移步到官网:http://www.rabbitmq.com/ha.html ,下面是关于RabbitMQ集群的部署过程:
集群中有两种节点:
内存节点:只保存状态到内存(一个例外的情况是:持久的 queue 的持久内容将被保存到 disk);
磁盘节点:保存状态到内存和磁盘,内存节点虽然不写入磁盘,但是它执行比磁盘节点要好,集群中,只需要一个磁盘节点来保存状态 就足够了,如果集群中只有内存节点,那么不能停止它们,否则所有的状态,消息等都会丢失。
链接:https://pan.baidu.com/s/1tb4VwmUbaCw7-KHgC6n93A 提取码:x7i5
erlang版本:
erlang-19.0.4-1.el7.centos.x86_64
rabbitmq版本:
rabbitmq-server-3.6.6
服务器主机名:
192.168.137.58 node01 磁盘节点
192.168.137.59 node02 内存节点
192.168.137.60 node03 内存节点
使用指令rpm -ivh erlang-19.0.4-1.el7.centos.x86_64.rpm 安装elang语言包
使用指令yum install -y socat 安装socat依赖
使用指令rpm -ivh rabbitmq-server-3.6.6-1.el7.noarch.rpm 安装rabbitmq
使用指令/sbin/rabbitmq-plugins enable rabbitmq_management 启动插件
软件配置
1, 使用指令vim /etc/rabbitmq/rabbitmq.config 新建配置文件,并写入下面内容
[
{rabbit, [{tcp_listeners, [5672]}, {loopback_users, ["admin"]}]}
].
2, 使用指令分别systemctl start rabbitmq-server 启动rabbitmq服务
3, 登录rabbimq的web控制台进行账号配置
4, 访问地址:http://xxx.xxx.xxx.xxx:15672/ 账号:guest 密码 :guest
5, 添加rabbimq用户
用户名:qq 密码:1234
1.先停止rabbitmq服务(所有机器)
systemctl stop rabbitmq-server
2.进入cookie文件目录
cd /var/lib/rabbitmq/
3.编辑.erlang.cookie文件序列号(各节点需要有相同序列号值)
vim .erlang.cookie
4.再启动rabbitmq服务(所有机器)
systemctl start rabbitmq-server
5.停止rabbitmq应用(注意: 在node02和node03机器执行)
rabbitmqctl stop_app
6.将node02、node03加入node01,使它们成为一个集群(注意:在node02和node03机器执行)
rabbitmqctl join_cluster --ram rabbit@node01
7.启动rabbitmq应用(注意: 在node02和node03机器执行)
rabbitmqctl start_app
8.分别查看rabbitmq服务器状态
rabbitmqctl cluster_status
[root@node01 rabbitmq]# rabbitmqctl cluster_status
Cluster status of node rabbit@node01 ...
[{nodes,[{disc,[rabbit@node01]},{ram,[rabbit@node03,rabbit@node02]}]},
{running_nodes,[rabbit@node03,rabbit@node02,rabbit@node01]},
{cluster_name,<<"rabbit@node01">>},
{partitions,[]},
{alarms,[{rabbit@node03,[]},{rabbit@node02,[nodedown]},{rabbit@node01,[]}]}]
[root@node02 rabbitmq]# rabbitmqctl cluster_status
Cluster status of node rabbit@node02 ...
[{nodes,[{disc,[rabbit@node01]},{ram,[rabbit@node03,rabbit@node02]}]},
{running_nodes,[rabbit@node03,rabbit@node01,rabbit@node02]},
{cluster_name,<<"rabbit@node01">>},
{partitions,[]},
{alarms,[{rabbit@node03,[]},{rabbit@node01,[]},{rabbit@node02,[]}]}]
[root@node03 rabbitmq]# rabbitmqctl cluster_status
Cluster status of node rabbit@node03 ...
[{nodes,[{disc,[rabbit@node01]},{ram,[rabbit@node03,rabbit@node02]}]},
{running_nodes,[rabbit@node02,rabbit@node01,rabbit@node03]},
{cluster_name,<<"rabbit@node01">>},
{partitions,[]},
{alarms,[{rabbit@node02,[nodedown]},{rabbit@node01,[]},{rabbit@node03,[]}]}]
通过客户端浏览器进行访问RabbitMQ node01 (用户名:guest 密码:guest)http://192.168.137.58:15672
用户名: qq 密码: 1234
添加用户角色
设置权限:
rabbitmqctl add_user qq2 qwer1234
rabbitmqctl add_vhost /qq2
rabbitmqctl set_user_tags qq administrator
rabbitmqctl set_permissions -p /qq02 qq2 ".*" ".*" ".*"
rabbitmqctl list_vhosts
rabbitmqctl list_users
Haproxy特别适合于那些负载特大的web站点,这些站点通常又需要回话保持活七层处理。负载均衡LVS是基于四层,haproxy的优点如下:
1、Haproxy是支持虚拟主机的,可以工作的4、7层
2、能够补充nginx的一些缺点,比如session的保持、cookie的引导等工作。
3、支持url检测后端的服务器
4、跟LVS一样,只是一款负载均衡软件,单纯从效率上来讲,haproxy更会比nginx有更有出色的负载均衡速度,在并发处理上也是优于nginx的
5、haproxy可以对mysql读进行负载均衡,对后端的mysql节点进行检测和负载均衡,haproxy支持多种算法
6、haproxy+keepalived企业高性能web能够支持千万级并发网站。
一种:
yum install -y haproxy
文件存放位置:
/usr/sbin/haproxy #二进制文件
/usr/share/haproxy #共享文件
/var/lib/haproxy #库文件
/etc/rc.d/init.d/haproxy #启动二进制文件
/etc/logrotate.d/haproxy #日志切割
/etc/sysconfig/haproxy #配置
/etc/haproxy #配置目录
二:编译安装
此处不做介绍
cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak
vim /etc/haproxy/haproxy.cfg
cat /etc/haproxy/haproxy.cfg
global #全局设置
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
defaults #默认设置
#log global
log 127.0.0.1 local3 #日志文件的输出定向
mode http #所处理的类别,默认采用http模式,可配置成tcp作4层消息转发
option httplog #日志类别,采用httplog
option dontlognull
option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
option httpclose #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现
retries 3 #3次连接失败就认为服务器不可用,主要通过后面的check检查
option redispatch #当serverid对应的服务器挂掉后,强制定向到其他健康服务器
maxconn 2000 #最大连接数
stats uri /haproxy-admin #haproxy 监控页面的访问地址
contimeout 5000 #连接超时时间
clitimeout 50000 #客户端连接超时时间
srvtimeout 50000 #服务器端连接超时时间
stats auth admin:admin #设置监控页面的用户和密码:admin
stats hide-version #隐藏统计页面的HAproxy版本信息
listen rabbitmq_local_cluster 0.0.0.0:5672 #前段IP,供product和consumer来进行选择,由于5672端口已经默认使用,这里选择5670端口
mode tcp #负载均衡选项
balance roundrobin #轮询算法将负载发给后台服务器
server rabbit-node02 192.168.137.59:5672 check inter 5000 rise 2 fall 3 #负载均衡中的集群节点配置,这里选择的rabbit节点
server rabbit-node03 192.168.137.60:5672 check inter 5000 rise 2 fall 3
## server rabbit-node01 192.168.137.58:5672 check inter 5000 rise 2 fall 3 #用作备份
listen private_monitoring :8100
mode http
option httplog
stats enable
stats uri /stats
stats refresh 60s
注意:listen private_monitoring:8100 后面的 也可以不要
负载均衡器会监听 5672 端口,轮询咱们的两个内存节点nod02和nod03的 5672 端口,nede01为磁盘节点,只做备份不提供给生产者、消费者使用,当然如果我们服务器资源充足情况也可以配置多个磁盘节点,这样磁盘节点除了故障也不会影响,除非同时出故障。
systemctl start haproxy
http://192.168.137.53:8100/stats 可以看到具体的监控页面
增加超时时间重启再试即可
vim /etc/haproxy/haproxy.cfg
contimeout 3h #连接超时时间
clitimeout 3h #客户端连接超时时间
srvtimeout 3h #服务器端连接超时时间