如何在两个节点安装高可用集群(rabbitMq+haproxy+keepalived)

284 阅读6分钟

# 本文已参与「新人创作礼」活动,一起开启掘金创作之路。

首先下载keepalived,下载地址:www.keepalived.org/download.ht…

链接在此!!!快快下载 文章先读:如果节点够的话,建议rabbitmq放在单独的节点,haproxy和keepalived放在同一个节点,keepalived做主备,然后使用虚拟IP;

1、然后点击上面的链接下载MQ,tar -zxvf rabbit.install.tgz进行解压 解压后文件列表如下

2、然后执行./install进行安装,需要安装几台节点,就把压缩包拷贝几个节点,然后重述上述命令进行安装 3、节点1操作:以节点1 为集群节点进行演示, 关闭MQ服务 service rabbitmq-server stop 以集群模式启动 rabbitmq-server –detached 查看集群状态 rabbitmqctl cluster_status 创建一个用户,用于整个集群:rabbitmqctl add_user roboconf roboconf rabbitmqctl set_permissions roboconf "." "." ".*" 确保HA同步是自动的 rabbitmqctl set_policy ha-all "" '{"ha-mode":"all","ha-sync-mode":"automatic"}' 修改 /etc/hosts文件 增加((本地IP) (节点名称))(IP与rabbitMQ安装对应node名,有几个节点加几个) 如果不知道怎么修改节点名称的话,执行:hostnamectl set-hostname 节点名称 至此,节点1配置结束,

4、节点2n操作:2n节点的操作都一样, 编辑/var/lib/rabbitmq/.erlang.cookie并插入与节点Rabbit1相同的内容 可以这么操作(在节点1执行命令如下)scp/var/lib/rabbitmq/.erlang.cookie 节点2的IP:/var/lib/rabbitmq/.erlang.cookie

关闭MQ服务 service rabbitmq-server stop

以集群模式启动rabbitmq-server –detached 然后关闭MQ rabbitmqctl stop_app

将节点2加入节点1的集群中 rabbitmqctl join_cluster rabbit@节点1 启动MQ rabbitmqctl start_app

查看集群状态 rabbitmqctl cluster_status 出现以下画面者,恭喜你,集群已经配置好,两个节点属于一个集群,下一步配置负载均衡HAProxy

5、选一台节点安装HAproxy 使用yum源安装haproxy,没有yum源的自己配去,yum install -y haproxy 修改配置文件/etc/haproxy/haproxy.cfg(因为修改的比较多,建议把之前的给删掉,然后新建一个配置文件,给400权限) 配置内容如下:(需要修改的我会标红)

global

指定日志记录路径,这个local2是需要在/etc/rsyslog.conf文件中指定的,指定了日志存储路径之后,需要重启rsyslog服务哦

#查看/etc/rsyslog.conf文件,看看有local几,下面就是local几

log 127.0.0.1 local7

指定haproxy的运行环境

chroot /var/lib/haproxy

指定进程的pid

pidfile /var/run/haproxy.pid

指定单个进程的最大并发连接数

maxconn 4000

指定允许haproxy的用户,groupadd haproxy : useradd -r -g haproxy haproxy

user haproxy

指定允许haproxy的组

group haproxy

指定haproxy以守护进程模式运行

daemon

设置后台运行2个haproxy进程,但是后台运行了3个进程

nbproc 2

指定Unix socket通信(基本没用过)

stats socket /var/lib/haproxy/stats

这里是默认的选项,如何在listen段,backend段,frontend段中将这些选项按需求重新制定

defaults

指定默认的模式

mode http

指定日志信息使用全局指定的日志存储路径,全局日志是存储在rsyslog服务中

log global

将log日志记录到rsyslog日志服务器中,指定日志级别为notice级别

log 172.19.4.109 local7 notice

日志格式可以不指定,有其默认的值

#log-format %T\ %t\ Some\ Text

指定压缩类型

compression algo gzip

指定需要压缩的资源类型

compression type text/html text/plain option httplog option dontlognull option http-server-close

在后端服务器中可以记录客户端的源IP地址,在日志中加上%{X-Forwarded-For}i

option forwardfor except 127.0.0.1/8

如果后端服务器不提供服务,那么将会重新di

option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s

指定接受10000个并发

maxconn 10000

haproxy统计页面配置段

listen stats

指定统计页面监听的端口

bind *:33559

指定统计页面运行的模式

mode http

指定开启统计页面功能

stats enable

如果不设置URI,默认是/haproxy?stats

stats uri /admin

指定登入是提示信息,\表示转义空白字符

stats realm HAProxy\ statistics

指定用户名和密码,在网页登录的时候用

stats auth admin:123456

指定统计页面自动刷新的时长

stats refresh 20

如果用户认证成功,统计页面可以被访问

stats admin if TRUE #隐藏统计页面上HAProxy的版本信息 stats hide-version

#####rabbitmq的管理界面 listen rabbitmq_admin bind 0.0.0.0:15672 server rabbit-01 172.19.4.107:15672 server rabbit-02 172.19.4.109:15672 ####### listen rabbitmq bind 0.0.0.0:5672 option tcplog mode tcp timeout client 3h timeout server 3h balance roundrobin

inter 2000 是健康状态检测的时间间隔,rise 2:2次请求成功认为服务器可用,fall 3:3次请求不成功认为服务器不可用

server rabbit-01 自己的节点IP:5672 check fall 3 rise 2 server rabbit-02 有几个节点写几个IP:5672 check fall 3 rise 2

配置结束后,haproxy -c -f /etc/haproxy/haproxy.cfg检查配置文件是否有错,有错的话,看日志自己解决,不行就百度 最后启动HA sudo /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -D -p /var/run/haproxy.pid 6、验证是否正确 登录地址,出现以下画面,输入用户名密码

出现以下画面者,haproxy配置成功,

配置keepalived 1、首先从官网下载tar包后解压,

#/usr/local/keepalived/ 为你要安装的目录,不要把安装目录弄到tar包

./configure --prefix=/usr/local/keepalived/

configure的时候可能会报错,是因为缺少opensll依赖,有yum源的话可使用yum install -y openssl openssl-devel命令,没有的话自己下载依赖包去安装。

#编译并安装 make && make install

vim /usr/local/keepalived/etc/keepalived

主节点,可直接拷贝 vrrp_script chk_haproxy {undefined script "pidof haproxy" #检查脚本 interval 2 } vrrp_instance VI_1 {undefined interface ens192 #网卡信息,查看自己的网卡,填进去 state MASTER #代表主节点 priority 200 virtual_router_id 10 unicast_src_ip 192.168.1.1 #本机IP地址 unicast_peer {undefined 192.168.1.2 #备份节点IP地址 } authentication {undefined auth_type PASS auth_pass password } virtual_ipaddress {undefined 192.168.1.10 //虚拟ip,对外提供服务,可设置多个 } track_script { #检查进程是否存在脚本 chk_haproxy } }

备: vrrp_script chk_haproxy {undefined script "pidof haproxy" interval 2 } vrrp_instance VI_1 {undefined interface ens192 state BACKUP priority 100 virtual_router_id 10 unicast_src_ip 192.168.1.2 unicast_peer {undefined 192.168.1.1 } authentication {undefined auth_type PASS auth_pass password } virtual_ipaddress {undefined 192.168.1.10 } track_script {undefined chk_haproxy } }

在两个节点都执行下面命令

加入自启动

cp /usr/local/keepalived-2.0.18/keepalived/etc/init.d/keepalived /etc/init.d/(注意,keepalived 在解压后的没有configure之前的文件夹中)

mkdir /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

cp /usr/local/keepalived-2.0.18/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

设置开机自启动

chkconfig keepalived on
启动keepalived 服务 systemctl start keepalived.service

systemctl status keepalived.service 查看启动状态,如果是dead,则启动失败,看日志并解决,

启动成功后

使用虚拟IP访问haproxy Web界面,访问成功,则配置完成,访问失败,自己看着步骤再看下是否哪步有错 ———————————————— 版权声明:本文为CSDN博主「W_kiven」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/W_kiven/art…