1027  
查询码:00000112
rabbitMq集群搭建
作者: wyasw 于 2020年03月29日 发布在分类 / Linux / 服务安装 下,并于 2020年03月29日 编辑
rabbitmq

rabbitMq集群搭建

1.1 简介

RabbitMQ模式有三种,分别是:单一模式、普通模式、镜像模式,镜像模式才是RabbitMQ真正的HA方案,关于更详细的简绍,请移步到官网:http://www.rabbitmq.com/ha.html ,下面是关于RabbitMQ集群的部署过程:

集群中有两种节点:

内存节点:只保存状态到内存(一个例外的情况是:持久的 queue 的持久内容将被保存到 disk);

磁盘节点:保存状态到内存和磁盘,内存节点虽然不写入磁盘,但是它执行比磁盘节点要好,集群中,只需要一个磁盘节点来保存状态 就足够了,如果集群中只有内存节点,那么不能停止它们,否则所有的状态,消息等都会丢失。

1.2 环境

链接: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 内存节点

1.3 安装(三台机器)

使用指令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 登录rabbimqweb控制台进行账号配置

4 访问地址:http://xxx.xxx.xxx.xxx:15672/ 账号:guest 密码 :guest

5 添加rabbimq用户

用户名:qq 密码:1234

1.4 集群安装

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应用(注意node02node03机器执行)

rabbitmqctl stop_app

6.node02node03加入node01,使它们成为一个集群(注意:在node02node03机器执行)

rabbitmqctl join_cluster --ram rabbit@node01

7.启动rabbitmq应用(注意node02node03机器执行)

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,[]}]}]

1.5 浏览器访问操作

通过客户端浏览器进行访问RabbitMQ node01 (用户名:guest 密码:guesthttp://192.168.137.58:15672

1.6 添加rabbimq用户

用户名: qq  密码: 1234

添加用户角色

设置权限:


1.7 注意命令添加管理员

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

第2章  Haproxy安装配置

Haproxy特别适合于那些负载特大的web站点,这些站点通常又需要回话保持活七层处理。负载均衡LVS是基于四层,haproxy的优点如下:

1Haproxy是支持虚拟主机的,可以工作的47

2、能够补充nginx的一些缺点,比如session的保持、cookie的引导等工作。

3、支持url检测后端的服务器

4、跟LVS一样,只是一款负载均衡软件,单纯从效率上来讲,haproxy更会比nginx有更有出色的负载均衡速度,在并发处理上也是优于nginx

5haproxy可以对mysql读进行负载均衡,对后端的mysql节点进行检测和负载均衡,haproxy支持多种算法

6haproxy+keepalived企业高性能web能够支持千万级并发网站。

2.1  Haproxy安装配置

一种:

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  #配置目录

二:编译安装

此处不做介绍

2.2 配置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模式,可配置成tcp4层消息转发

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,供productconsumer来进行选择,由于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_monitoring8100 后面的 也可以不要

负载均衡器会监听 5672 端口,轮询咱们的两个内存节点nod02nod03 5672 端口,nede01为磁盘节点,只做备份不提供给生产者、消费者使用,当然如果我们服务器资源充足情况也可以配置多个磁盘节点,这样磁盘节点除了故障也不会影响,除非同时出故障。

2.3 启动

systemctl start haproxy

http://192.168.137.53:8100/stats 可以看到具体的监控页面

2.4 一些java项目连接报错

增加超时时间重启再试即可

vim /etc/haproxy/haproxy.cfg

contimeout      3h            #连接超时时间
clitimeout      3h           #客户端连接超时时间
srvtimeout      3h           #服务器端连接超时时间




 推荐知识

 历史版本

修改日期 修改人 备注
2020-03-29 20:21:50[当前版本] wyasw 创建版本

  目录
    文艺知识分享平台 -V 4.9.5 -wcp
    京公网安备100012199188号 京ICP备2021030911号