ip link set multicast on interface
配置语法:
配置虚拟路由器:
vrrp_instance {
………
}
专用参数:
state MASTER|BACKUP:当前节点在此虚拟路由器上的初始状态;只能有一个是MASTER,余下的都应该为BACKUP;
interface IFACE_NAME:绑定为当前虚拟路由器使用的物理接口;
virtual_router_id VRID:当前虚拟路由器的惟一标识,范围是0-255;
priority 100:当前主机在此虚拟路径器中的优先级;范围1-254;
advert_int 1:vrrp通告的时间间隔;
authentication {
auth_type AH|PASS
auth_pass (这里为任意的8个字符,各节点要保持一致
可以用“openssl rand -base64 7”生成)
}
virtual_ipaddress {
/ brd dev scope label
例如:192.168.200.17/24 dev eth1
192.168.200.18/24 dev eth2 label eth2:1
}
track_interface {
eth0
eth1
…
}
配置要监控的网络接口,一旦接口出现故障,则转为FAULT状态;
nopreempt:定义工作模式为非抢占模式;
preempt_delay 300:抢占式模式下,节点上线后触发新选举操作的延迟时长;
vrrp_script {
script “”
interval INT 每隔多长时间脚本执行一次
weight -INT 减去的优先级
}
track_script { #跟踪监控脚本,放在vrrp_instance中
SCRIPT_NAME_1
SCRIPT_NAME_2
…
}
双主模型示例:
vim /etc/keepalived/keepalived.conf
节点一配置:
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
vrrp_mcast_group4 224.0.100.19(组播地址自行定义)
}
节点二配置:! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node2
vrrp_mcast_group4 224.0.100.19(组播地址自行定义,要与节点一一直)
}
通过systemctl status keepalived.service查看结果
高可用:
keepalived调用外部的辅助脚本进行资源监控,并根据监控的结果状态能实现优先动态调整;
分两步:(1) 先定义一个脚本,为MASTER时启动nginx,BACKUP时关闭nginx,对于双主模型,只需启动不能关闭,地址转移走后可以重启,但是不能关闭;(2) 调用此脚本;
在各个节点上定义通知脚本,放在vrrp_instance中:
notify_master |:当前节点成为主节点时触发的脚本;
notify_backup |:当前节点转为备节点时触发的脚本;
notify_fault |:当前节点转为“失败”状态时触发的脚本;
notify |:通用格式的通知触发机制,一个脚本可完成以上三种状态的转换时的通知;
通知脚本配置:
节点配置示例:
在配置文件中加入下图中的配置
vrrp_script chk_down {
script “[[ -f /etc/keepalived/down ]] && exit 1 || exit 0”
……….
}
vrrp_script chk_nginx {
script “killall -0 nginx && exit 0 || exit 1” killall -0 测试能否杀掉进程 用来查询nginx进程是否存在
interval 1
………
fall 1 检查1次
rise 1 若是之后检查是正常的则把权重加回去
}
配置示例:
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
vrrp_mcast_group4 224.0.100.19
}
vrrp_script chk_down {
script “[[ -f /etc/keepalived/down ]] && exit 1 || exit 0”
weight -10
interval 1
fall 1
rise 1
}
vrrp_script chk_ngx {
script ” killall -0 nginx && exit 0 || exit 1″
weight -10
interval 1
fall 1
rise 1
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass tEtMBpfA
}
virtual_ipaddress {
172.16.0.66/16 dev ens33 label ens33:0
}
track_script {
chk_down
chk_nginx
}
notify_master “/etc/keepalived/notify.sh master”
notify_backup “/etc/keepalived/notify.sh backup”
notify_fault “/etc/keepalived/notify.sh fault”
}
vrrp_instance VI_2 {
state BACKUP
interface ens33
virtual_router_id 41
priority 96
advert_int 1
authentication {
auth_type PASS
auth_pass d/aiJhXT
}
virtual_ipaddress {
172.16.0.67/16 dev ens33 label ens33:1
}
}
track_script {
chk_down
chk_nginx
}
notify_master “/etc/keepalived/notify.sh master”
notify_backup “/etc/keepalived/notify.sh backup”
notify_fault “/etc/keepalived/notify.sh fault”
}