安装服务:
yum install -y keepalived
关闭防火墙/selinux,以免引起脑裂。
编写配置文件:
配置文件主要分三个部分:
1.全局配置
global_defs {
notification_email { 设置邮件收件人
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc 设置邮箱名
smtp_server 192.168.200.1 邮箱服务器
smtp_connect_timeout 30
router_id LVS_DEVEL 这个参数必须有,表示这台服务器在高可用集群中的身份标识,在一个集群中每个主机标识不能一样
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
邮件配置部分可删除,使用其他监控服务来监控集群主机。
2.VRRP协议配置
vrrp_instance VI_1 { VRRP实例,VI_1名称可自定义
state MASTER 指定身份为MASTER
interface eth0 指定虚拟地址VIP在哪个网卡上
virtual_router_id 51 虚拟主机ID,集群中每个服务器配置要一致
priority 100 本机优先级
advert_int 1 组播包发送间隔,主备要配置一致
authentication { 集群主机间通信认证
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.16 虚拟主机IP地址
192.168.200.17
192.168.200.18
}
3.LVM配置(忽略)
脑裂问题的可能原因:
1.服务器之间的网络不通,组播包无法接收;
2.安全策略阻止
解决脑裂的最直接办法:关闭其他服务器上的keepalived服务,只保留一台运行。
Nginx负载均衡和keepalived服务联动:
当主要负载均衡服务器的nginx服务停止时,我们需要将keepalived服务也关掉,可以通过脚本实现:
判断nginx服务是否正常(正常运行时ps -ef |grep nginx输出的信息不少于3行),
不正常则关闭keepalived。
有两种方法执行这个脚本:
1.放在定时任务中。
2.编辑keepalived.conf添加以下内容:
vrrp_script check_web部分放在全局配置之后,VRRP配置之前。
track_script部分放在配置文件末尾
当存在多个VIP地址对应多个域名时,双主配置(多个VRRP实例)可以减轻服务器的压力。在不同的VRRP实例中配置不同的VIP,不同的主备角色。实现访问不同的域名定位到不同的主用负载上。
安全访问:
为了实现只在负载均衡服务器的VIP上接收web请求,可以修改nginx负载均衡配置文件:指定监听的地址和端口。
但是当监听的VIP地址不在本服务器的网卡上时(VIP可能在主用机上),系统是无法监听的,需要修改内核参数来允许系统监听本地网卡上没有的地址: