首先下载keepalived,下载地址:https://www.keepalived.org/download.html
链接在此!!!快快下载
文章先读:如果节点够的话,建议rabbitmq放在单独的节点,haproxy和keepalived放在同一个节点,keepalived做主备,然后使用虚拟IP;
1、然后点击上面的链接下载MQ,tar -zxvf rabbit.install.tgz进行解压
解压后文件列表如下
![](https://img-blog.csdnimg.cn/20200714153134486.png)
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、节点2~n操作:2~n节点的操作都一样,
- 编辑/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
-
-
然后关闭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 {
script "pidof haproxy" #检查脚本
interval 2
}
vrrp_instance VI_1 {
interface ens192 #网卡信息,查看自己的网卡,填进去
state MASTER #代表主节点
priority 200
virtual_router_id 10
unicast_src_ip 192.168.1.1 #本机IP地址
unicast_peer {
192.168.1.2 #备份节点IP地址
}
authentication {
auth_type PASS
auth_pass password
}
virtual_ipaddress {
192.168.1.10 //虚拟ip,对外提供服务,可设置多个
}
track_script { #检查进程是否存在脚本
chk_haproxy
}
}
备:
vrrp_script chk_haproxy {
script "pidof haproxy"
interval 2
}
vrrp_instance VI_1 {
interface ens192
state BACKUP
priority 100
virtual_router_id 10
unicast_src_ip 192.168.1.2
unicast_peer {
192.168.1.1
}
authentication {
auth_type PASS
auth_pass password
}
virtual_ipaddress {
192.168.1.10
}
track_script {
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界面,访问成功,则配置完成,访问失败,自己看着步骤再看下是否哪步有错