集群搭建
1. 服务器说明
1)Win下3个Nginx当工作服务器
nginx1.20.1 192.168.31.1 xuecheng.com 80
nginx1.20.1b 192.168.31.1 www.ying.com 8012
nginx1.20.1c 192.168.31.1 localhost 8013
2) 2个Linux下2个Nginx当负载均衡服务器
nginx1.20.1d backup 192.168.5.143 load1.nginx.com 80
nginx1.20.1e master 192.168.5.157 load2.nginx.com 80
3)虚拟IP(按照虚拟机的IP排列来设置,否则ping不通)
192.168.0.242 ×
192.168.200.17 ×
192.168.5.190 √
2. 全局apt安装keepalived
两个负载均衡的主机都安装了keepalived
sudo apt-get install keepalived
启动keepalived
/etc/init.d
中有keepalived
就可以直接用service
// 启动
service keepalived start
// 停止
service keepalived stop
// 重启
service keepalived restart
3. 编写检测nginx是否正常运行的脚本文件
cd /etc/keepalived/
sudo vim nginx_check.sh
#! /bin/bash
A=`ps -C nginx --no-header |wc -l`
#echo $A
if [ $A -eq 0 ];then
echo 'nginx not running, stop keepalived!'
systemctl stop keepalived
fi
sudo chmod 777 nginx_check.sh
4. Nginx+Keepalived配置
cd /etc/keepalived
sudo vim keepalived.conf
! Configuration File for keepalived
global_defs {
#路由id,主备节点不能相同
router_id [ip地址]
}
#自定义监控脚本
vrrp_script chk_haproxy {
# 脚本位置
script "/etc/keepalived/nginx_check.sh"
# 脚本执行的时间间隔
interval 1
weight 0
}
vrrp_instance VI_1 {
# Keepalived的角色,MASTER 表示主节点,BACKUP 表示备份节点
state MASTER
# 指定监测的网卡,可以使用 ifconfig 或 ip a 进行查看
interface ens33
# 虚拟路由的id,主备节点需要设置为相同
virtual_router_id 51
# 优先级,主节点的优先级需要设置比备份节点高
priority 100
# 设置主备之间的检查时间,单位为秒
advert_int 1
# 定义验证类型和密码
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP地址,可以设置多个
virtual_ipaddress {
192.168.5.190
192.168.5.191
……
}
# 调用上面自定义的监控脚本
track_script {
chk_haproxy
}
}
5. 启动keepalived
#启动
service keepalived start
ps -ef | grep keepalived
2个虚拟ip被绑定在MASTER的ens33网卡上
BACKUP没有绑定
6. 验证keepalived是否有效
1)关闭MASTER的keepalived进程
service keepalived stop
2)检查MASTER网卡 ip a
3)检查BACKUP网卡 ip a
4)在浏览器中,有效