安装服务: 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可能在主用机上),系统是无法监听的,需要修改内核参数来允许系统监听本地网卡上没有的地址: