准备两台主备主机,都安装keepalived yum install -y keepalived
master上前期已安装nginx
backup 上使用yum 安装nginx yum install -y nginx
提示错误时没有可用软件包nginx,解决办法: yum install -y epel-release
在主(master)上编辑配置文件
vim /etc/keepalived/keepalived.conf
global_defs {
notification_email { #如果有异常,发送邮件br/>[email protected]
}
notification_email_from [email protected] #编辑邮箱信息
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_nginx {
script "/usr/local/sbin/check_ng.sh" #编辑自定义检查脚本
interval 3
}
vrrp_instance VI_1 {
state MASTER
interface ens33 #编辑网卡名称
virtual_router_id 51 #编辑路由ID信息
priority 100
advert_int 1
authentication {
auth_type PASS #访问类型是密码加密
auth_pass aminglinux>com
}
virtual_ipaddress {
192.168.188.100 #VIP服务ip地址
}
track_script { #加载上面的自定义检查脚本
chk_nginx
}
}
再编辑自定义检查脚本
vim /usr/local/sbin/check_ng.sh
给脚本 755权限 ,重启keepalived服务,查看keepalived进程是否开启
因为脚本上定义了开启keepalived服务,即使关闭了nginx,也会自动重启
在备上编辑keepalived配置文件
vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {br/>[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_nginx {
script "/usr/local/sbin/check_ng.sh"
interval 3
}
vrrp_instance VI_1 {
state BACKUP
interface eno16777736 #指定备的网卡名称,指定监听的网卡
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass aminglinux>com
}
virtual_ipaddress {
192.168.188.100 #服务IP VIP
}
track_script {
chk_nginx
}
}
编辑检查脚本
跟主一样,给脚本文件赋值755权限,并重启keepalived服务
重启时keepalived时发现没有启动,检测是因为从配置上的网卡名称没有及时修改。
顺便查看下主从的网卡信息,发现服务ip已经生效
主(master)网卡信息:
备网卡信息:
打开浏览器输入 主从地址,服务地址,查看nginx结果
推测从上IP不成功可能是php还没配置。
测试高可用
先确定好两台机器上nginx差异,比如可以通过curl -I 来查看nginx版本
测试1:关闭master上的nginx服务
测试2:在master上增加iptabls规则
iptables -I OUTPUT -p vrrp -j DROP
访问主 和服务ip,仍有效
查看主从ip网卡信息,100的服务IP 也还没释放
iptable -F 取消策略
测试3:关闭master上的keepalived服务
主上的服务ip已经释放了
从上的服务ip还在
监测下服务ip,网页不通,curl已经发生了改变,说明master挂掉后,服务ip自动选择备服务器,高可用已经生效
看起来有必要在从上安装个php....
测试4:启动master上的keepalived服务
起来之后会发现 主上服务ip已起来了,访问也ok
原文地址:http://blog.51cto.com/13528516/2096312