1 下载两个小玩意
yum -y install keepalived
yum install psmisc -y
2 配置nginx1,2自启脚本
vim /root/shell/check-nginx.sh 我的脚本放在root/shell里
#!/bin/bash
#获取nginx正在运行的进程数
npsnum=`ps -C nginx --no-header | wc -l`if [ $npsnum == 0 ]; then#等0说明nginx没启动/usr/local/nginx/sbin/nginx#再次判断nginx是否活着if [ `ps -C nginx --no-header | wc -l` == 0 ]; then#等0说明nginx启动失败killall keepalivedfifi
chmod +x /root/shell/check-nginx.sh
3 测试脚本是否能用
ll /root/shell/check-nginx.sh
ps -ef |grep nginx |grep -v grep (有的话杀死)
kill -9 1304 kill -9 1306 (我的有我杀)
ps -ef |grep nginx |grep -v grep 再次查看
./check-nginx.sh 启动 (进脚本目录可以这样,没进去全路径)
ps -ef |grep nginx |grep -v grep 再次查看
4 nginx-1keepalived配置
vim /etc/keepalived/keepalived.conf 如果错了cat /var/log/messages可以看
! Configuration File for keepalivedglobal_defs {#唤醒邮箱配置notification_email {acassen@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1#配置邮件服务器连接超时时间smtp_connect_timeout 30#路由id,唯一的,当前机子router_id LVS_27
}
#vrrp脚本 名字与下面track_script里面的名字一致
vrrp_script aaa {script "/root/shell/check-nginx.sh"#调用脚本间隔时间 秒 不配默认1秒interval 2weight -1
}
vrrp_instance VI_1 {#服务器状态state MASTER#当前实例绑定的网卡接口interface ens33 #虚拟路由id,主备必须相同,相同为一组virtual_router_id 51 #优先级取值1-255,master一般比backup高50priority 100#主备心跳间隔时间 单位是秒advert_int 1 #认证 主备切换时,进行认证 主备必须相同authentication { auth_type PASSauth_pass 1111} #虚拟ip配置 LVS=IPVS keepavlied虚拟出的ipvirtual_ipaddress {#虚拟IP 必须和要和保活的软件所在的主机的IP的网段一致192.168.58.188 } #追踪脚本track_script {aaa
}
}
service keepalived start 启动
5 nginx-2 keepalived配置
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {#唤醒邮箱配置notification_email {acassen@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1#配置邮件服务器连接超时时间smtp_connect_timeout 30#路由id,唯一的,当前机子router_id LVS_28
}
#vrrp脚本 名字与下面track_script里面的名字一致,脚本路径
vrrp_script aaa {script "/root/shell/check-nginx.sh"#调用脚本间隔时间 秒 不配默认1秒interval 2weight 1
}#服务器状态state BACKUP#当前实例绑定的网卡接口interface ens33 #虚拟路由id,主备必须相同,相同为一组virtual_router_id 51 #优先级取值1-255,master一般比backup高50priority 50#主备心跳间隔时间 单位是秒advert_int 1 #认证 主备切换时,进行认证 主备必须相同authentication { auth_type PASSauth_pass 1111} #虚拟ip配置 LVS=IPVS keepavlied虚拟出的ipvirtual_ipaddress {#虚拟IP 必须和要和保活的软件所在的主机的IP的网段
一致 192.168.58.188} #追踪脚本track_script {aaa
}
}
service keepalived start 启动
6 配置后
黑窗口 arp -a 192.168.58.188 查看虚拟ip在nginx-1机子上 00-0c-29-d4-55-dc
ping -t 192.168.58.188 可以一直ping
nginx-1 killall keepalived 黑窗口会出现连接超时,然后 继续ping
结束这次ping
再次 黑窗口 arp -a 192.168.58.188 查看虚拟ip在nginx-2机子上 00-0c-29-e9-a0-36
再次 ping -t 192.168.58.188
service keepalived start 启动 再次出现
结束这次ping
黑窗口 arp -a 192.168.58.188 查看虚拟ip在nginx-1机子上 00-0c-29-d4-55-dc
7 keepalived 作用 目的
高可用 和 负载均衡
Keepalived的作用是检测服务器(目前保活的是nginx,可以保活其他软件)的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
Keepalived 是一个用 C 语言编写的路由软件。这个项目的主要目标是为 Linux 系统和基于 Linux 的基础设施提供简单而强大的负载平衡和高可用性设施 。底层基于VRRP( Virtual Router Redundancy Protocol,简称VRRP)协议编写。VRRP作用:它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱。