1、实现nginx+keepalived至少需要4台虚拟机,两台做负载均衡器,两台做后端服务器
虚拟机 | 需安装服务 | 用途 |
keepalived(master) | 需要安装keepalived和nginx | 主负载 |
keepalived(backup) | 需要安装keepalived和nginx | 主备 |
nginx1 | 只需要安装nginx | web1 |
nginx2 | 只需要安装nginx | web2 |
2、安装好服务后先配置两台后端服务器
[root@nginx1 ~]# vim /usr/share/nginx/html/index.html
nginx2同理,这里做简单的页面用于区分两台后端服务器。
3、配置keepalived服务器上的nginx负载均衡
[root@keepalived-master ~]# vim /etc/nginx/conf.d/default.conf
进入nginx的子配置文件进行修改
upstream nginx {
server 192.168.188.175:80;
server 192.168.188.174:80;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://nginx;
}
}
keepalived的master端和backup端的nginx子配置文件保持一致
4、配置完成之后使用浏览器访问keepalived端IP,查看负载均衡是否正常
5、配置keepalived(master)配置文件
[root@keepalived-master ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
#全局配置
global_defs {
router_id master #自定义,主和备不能一样(机器标识)
}
vrrp_script check_nginx {
script "/etc/keepalived/check_nginx_status.sh"
interval 5 #五秒执行一次
}
#配置虚拟路由器
vrrp_instance VI_1 {
state MASTER #定义主还是备
interface ens33 #VIP绑定接口
virtual_router_id 80 #整个集群的调度器一致(虚拟路由器的唯一标识)
priority 100 #优先级,back改为50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.188.66/24 # vip
}
track_script {
check_nginx
}
}
6、配置keepalived(backup)配置文件
[root@keepalived-backup ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
#全局配置
global_defs {
router_id backup #自定义,主和备不能一样(机器标识)
}
vrrp_script check_nginx {
script "/etc/keepalived/check_nginx_status.sh"
interval 5 #五秒执行一次
}
#配置虚拟路由器
vrrp_instance VI_1 {
state BACKUP #定义主还是备
interface ens33 #VIP绑定接口
virtual_router_id 80 #整个集群的调度器一致(虚拟路由器的唯一标识)
priority 50 #优先级,back改为50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.188.66/24 # vip
}
track_script {
check_nginx
}
}
7、写判断脚本,功能是当nginx宕机,可以关闭本机的keepalived(主和备都要写)
注意:要给脚本授予执行权,否则无法执行
[root@keepalived-master ~]# vim /etc/keepalived/check_nginx_status.sh
#!/bin/bash
/usr/bin/curl -I http://localhost &>/dev/null
if [ $? -ne 0 ];then
systemctl stop keepalived
fi
8、启动keepalived(主备都启动)
master端的虚拟IP生成
backup端没有虚拟IP
关闭master端的nginx
注:恢复时,必须先启动nginx,再启动keepalived