资料:https://www.cnblogs.com/wuvikr/p/14837187.html
资料:https://bp.aliyun.com/detail/274?spm=a2cls.b8387508.0.0.1f0c208befc26N
yum install -y keepalived
/etc/keepalived/keepalived.conf,Keepalived 的配置文件大概分为三部分组成:
# 全局配置
global_defs {
notification_email {
wuvikr@aliyun.com # keepalived 发生故障切换时发送邮件的目标邮箱
root@localhost
}
notification_email_from wuvikr@aliyun.com # 发邮件的地址
smtp_server 192.168.200.1 # SMTP邮件服务器地址
smtp_connect_timeout 30 # 邮件服务器超时时间
router_id C7-01.wuvikr.top # keepalived 主机唯一标识,建议使用当前主机名
vrrp_skip_check_adv_addr # 如果收到的通告报文和上一个报文是同一个路由,则跳过检查,默认为检查所有报文
#vrrp_strict # 开启vrrp严格模式,一般不建议使用
vrrp_garp_interval 0 # gratuitous ARP messages 报文发送延迟,0表示不延迟
vrrp_gna_interval 0 # unsolicited NA messages (不请自来)消息发送延迟
vrrp_mcast_group4 224.0.0.18 # 指定组播IP地址范围:224.0.0.0到239.255.255.255,默认值:224.0.0.18
}
# VIP 虚拟路由实例配置
vrrp_instance VI_1 {
state MASTER # 当前节点在此虚拟路由器上的初始状态,状态为MASTER或者BACKUP
interface eth0 # 绑定当前虚拟路由器使用的物理接口,可以不和VIP在同一个网卡
virtual_router_id 11 # 每个虚拟路由器惟一标识,范围:0-255,同属一个虚拟路由器的多个 keepalived 节点此值必须相同
priority 100 # 当前物理节点在此虚拟路由器的优先级,范围:1-254
advert_int 1 # vrrp通告的时间间隔,默认1s
nopreempt # 非抢占式
authentication { # 认证机制
auth_type PASS # 认证类型,可以是AH或PASS,AH为IPSEC认证(不推荐),PASS为简单密码(建议使用)
auth_pass 111111 # 预共享密钥,即相互认证密码
}
virtual_ipaddress { # 虚拟路由IP
172.16.200.251 # 指定VIP,不指定网卡,默认eth0,注意:不指定/prefix,默认为32
172.16.200.252/24 dev eth1 # 指定VIP的MASK和网卡
192.168.200.102/24 dev eth2 label eth2:1 # 指定VIP的label
}
# 使用单播配置,按需求和上面的组播二选一即可
# 在vxlan环境中,VM无法通过组播协商VRRP,所以单播指定源目地址是必须要配置。
# 阿里云的havip中如果不指定单播源目地址,则在控制台看到havip实例终态一直为切换中。
unicast_src_ip 172.16.200.10 # 本机IP
unicast_peer{
172.16.200.20 # 指向其他Keepalived主机IP
}
}
# LVS 负载均衡调度器配置
virtual_server 172.16.200.251 3306 { # VS主机IP地址及其端口
delay_loop 6 # 检查后端服务器的时间间隔
lb_algo rr # 定义调度方法,rr|wrr|lc|wlc|lblc|sh|mh|dh|fo|ovf|lblcr|sed|nq
lb_kind NAT # LVS类型,注意要大写, NAT|DR|TUN
persistence_timeout 50 # 持久连接时长
protocol TCP # 指定服务协议,一般默认为TCP,TCP|UDP|SCTP
sorry_server # 所有的RS都故障时,备用服务器地址
# 后端真实服务器配置
real_server 172.16.200.251 3306 { # RS的IP和PORT
weight 1 # 调度权重
notify_up # RS上线通知脚本
notify_down # RS下线通知脚本
HTTP_GET|SSL_GET {
url {
path /health.html # 定义要监控的URL
status_code 200 # 判断上述检测机制为健康状态的响应码,一般为 200
}
connect_timeout 2 # 客户端请求的超时时长, 相当于haproxy的timeout server
nb_get_retry 3 # 重试次数
delay_before_retry 1 # 重试之前的延迟时长
connect_ip 172.16.200.25 # 向当前RS哪个IP地址发起健康状态检测请求
connect_port 80/443 # 向当前RS的哪个PORT发起健康状态检测请求
bindto <IP ADDRESS> # 向当前RS发出健康状态检测请求时使用的源地址
bind_port <PORT> # 向当前RS发出健康状态检测请求时使用的源端口
}
TCP_CHECK {
connect_ip 172.16.200.25 # 向当前RS的哪个IP地址发起健康状态检测请求
connect_port 3306 # 向当前RS的哪个PORT发起健康状态检测请求
bindto <IP ADDRESS> # 发出健康状态检测请求时使用的源地址
bind_port <PORT> # 发出健康状态检测请求时使用的源端口
connect_timeout <INTEGER> # 客户端请求的超时时长, 等于haproxy的timeout server
nb_get_retry 3 # 重新连接次数
delay_before_retry 3 # 重新连接间隔时间
}
}
}
keepalived 支持子配置文件,在主配置文件末尾,添加 include 语句,则可以从指定目录中加载配置文件。
范例:include /etc/keepalived/conf.d/*.conf
Keepalived 日志默认输出到系统日志 /var/log/messages 文件中,可以修改配置使其输出到一个独立的 log 文件中。