centos7
安装环境
yum install -y openssl-devel popt-devel curl gcc libnl3-devel net-snmp-devel libnfnetlink-devel
安装
yum install keepalived
主机配置
vi /etc/keepalived/keepalived.conf
global_defs {
notification_email { #故障发生时给谁发邮件通知。
root@localhost
root@192.168.9.141
}
notification_email_from keepalived@localhost #通知邮件的发出地址。
smtp_server 127.0.0.1 #发现Email的smtp地址
smtp_connect_timeout 30 #超时时间
router_id node1 #运行keepalived的机器标识号,主从机必须不同
}
vrrp_instance VI_1 {
state MASTER #可以是 MASTER 或 BACKUP,不过当其他节点 keepalived 启动时
#会将 Priority(优先级)比较大的节点选举为 MASTER,因此该项其实没有实质用途。
interface enp5s0 #本机物理网卡,节点固有 IP(非 VIP)的网卡,用来发 VRRP 包。
lvs_sync_daemon_inteface enp5s0 #绑定 lvs syncd 的网卡。
virtual_router_id 151 #虚拟路由,主从机必需一致。设置 VRID,取值在 0-255 之间,用来区分多个 instance 的 VRRP 组播
#(同一网段中 virtual_router_id 的值不能重复,否则会出错)。
#将决定多播的 MAC 地址
priority 100 #用来选举 master,要成为 master,这个选项的值最好高于其他机器 50 个点,
#该项取值范围是 1-255(在此范围之外会被识别成默认值 100)。
advert_int 5 #发 VRRP 包的时间间隔,即多久进行一次 master 选举(可以认为是健康查检时间间隔,默认为 1 秒)。
authentication { #认证区域,保持master和backup一致
auth_type PASS
auth_pass 123456
}
virtual_ipaddress { #VIP(虚拟 IP 地址),随着 state 的变化而增加删除,
#当 state 为 master 的时候就添加,当 state 为 backup 的时候删除,
#主要由优先级来决定的,和 state 设置的值没有多大关系,可以设置多个 IP 地址。
192.168.9.100 dev enp5s0
}
}
virtual_server 192.168.9.100 3306 { #LVS配置,VIP
delay_loop 6 #服务轮询的时间间隔
lb_algo wrr #LVS 调度算法
lb_kind DR #LVS 集群算法
persistence_timeout 60 #同一IP的链接50秒内被分配到同一台realserver
protocol TCP #用TCP协议检查realserver状态
real_server 192.168.9.141 3306 { #实际服务器的IP和端口
weight 100
notify_down /data/sh/mysql.sh
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
启动
service keepalived start
ps -ef | grep keep
查看
ip addr
修改成单播通信
服务器网络环境中,路由交换层禁用了ARP的广播限制,造成了keepalived主备协议无法通过广播的方式进行通信,
造成主备两台服务器都强制占用HAVIP地址,出现同时两台服务器都有VIP地址的情况出现。必须通过配置来指定IP的两台服务器间进行通
需要修改配置文件
priority 100
unicast_src_ip 192.168.9.161 #本机实际IP
unicast_peer {
192.168.9.213 #对端实际IP
}
从机配置
global_defs {
notification_email {
root@localhost
root@192.168.9.213
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node2
}
vrrp_instance VI_1 {
state BACKUP
interface enp3s0
lvs_sync_daemon_inteface enp3s0
virtual_router_id 151
priority 90
advert_int 5
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.9.100 dev enp3s0
}
}
virtual_server 192.168.9.100 3306 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.9.161 3306 {
weight 100
notify_down /data/sh/mysql.sh
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
配置systemctl
1;systemctl daemon-reload 重新加载
2:systemctl enable keepalived.service 设置开机自动启动
3:systemctl disable keepalived.service 取消开机自动启动
4:systemctl start keepalived.service 启动
5:systemctl stop keepalived.service停止