keepalived功能就是实现VRRP协议,解决单点故障问题。
参考:
keepalived权威指南
ubuntu server最佳方案2
设备:
树莓派2-1:Yrpi2-cryst,192.168.3.17,当MASTER
树莓派2-2:Yrpi2-black,192.168.3.18,当BACKUP
IP地址:192.168.3.16
树莓派2-1 配置
/etc/hosts:192.168.3.17 Yrpi2-cryst
/etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.ip_nonlocal_bind=1
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_syncookies=1
sudo sysctl -p
/etc/keepalived/keepalived.conf
global_defs {
notification_email {
}
notification_email_from 306@leaf.com
smtp_server 127.0.0.1
smtp_connect_timeout 20
router_id Yrpi2-cryst #机器标识
}vrrp_script chk_haproxy {
script “killall -0 haproxy”
interval 2
weight 2
}
#一个虚拟路由器包含多个物理的VRRP路由器
vrrp_instance VI_1 { #VRRP路由器
state BACKUP
smtp_alert #启用email通知
nopreempt #设置非抢占式,只有设置为BKUP才能设置这个选项
interface eth0 #要绑定的网卡
virtual_router_id 51 #所属虚拟路由器
priority 150 #通过优先级来设置MASTER,跟BACKUP相差要50以上
advert_int 1 #每隔1s进行检测
#设置认证方式和密码
authentication {
auth_type PASS
auth_pass Amitabha
}
#设置共享的虚拟IP地址
virtual_ipaddress {
192.168.3.16
}
#haproxy相关设置:故障检测
track_script {
chk_haproxy
}
}
树莓派2-2 配置
/etc/hosts:192.168.3.18 Yrpi2-black
/etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.ip_nonlocal_bind=1
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_syncookies=1
sudo sysctl -p
/etc/keepalived/keepalived.conf
global_defs {
notification_email {
ywz@leaf.com
}
notification_email_from 306@leaf.com
smtp_server 127.0.0.1
smtp_connect_timeout 20
router_id Yrpi2-black
}vrrp_script chk_haproxy {
script “killall -0 haproxy”
interval 2
weight 2
}vrrp_instance VI_1 {
state BACKUP
smtp_alert
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass Amitabha
}
virtual_ipaddress {
192.168.3.20
}
track_script {
chk_haproxy
}
}
效果