环境:node
HOST | IP |
---|---|
vip | 192.168.12.40 |
keepalived-01 | 192.168.12.41 |
keepalived-02 | 192.168.12.42 |
安装:mysql
yum install keepalived -y systemctl enable keepalived.service
vrrp选举是经过224.0.0.18发送组播的,先把这个加入iptables容许-A RH-Firewall-1-INPUT -d 224.0.0.18/32 -j ACCEPT
nginx
配置参数介绍:sql
notification_email: 表示keepalived在发生诸如切换操做时须要发送email通知以及email发送给哪些邮件地址邮件地址能够多个每行一个 notification_email_from admin@example.com: 表示发送通知邮件时邮件源地址是谁 smtp_server 127.0.0.1: 表示发送email时使用的smtp服务器地址这里能够用本地的sendmail来实现 smtp_connect_timeout 30: 链接smtp链接超时时间 router_id node1: 机器惟一标识 notify_master /path/to/to_master.sh 表示当切换到master状态时要执行的脚本 notify_backup /path_to/to_backup.sh 表示当切换到backup状态时要执行的脚本 notify_fault "/path/fault.sh VG_1" keepalived出现故障时执行的脚本 notify /path/to/notify.sh smtp_alert 表示切换时给global defs中定义的邮件地址发送邮件通知 state: state指定instance(Initial)的初始状态就是说在配置好后这台 服务器的初始状态就是这里指定的但这里指定的不算仍是得要经过竞选经过优先级来肯定里若是这里设置为master但如若他的优先级不及另一台 那么这台在发送通告时会发送本身的优先级另一台发现优先级不如本身的高那么他会就回抢占为master interface: 实例绑定的网卡由于在配置虚拟VIP的时候必须是在已有的网卡上添加的 dont track primary: 忽略VRRP的interface错误 track interface: 跟踪接口设置额外的监控里面任意一块网卡出现问题都会进入故障(FAULT)状态例如用nginx作均衡器的时候内网必须正常工做若是内网出问题了这个均衡器也就没法运做了因此必须对内外网同时作健康检查 mcast src ip: 发送多播数据包时的源IP地址这里注意了这里实际上就是在那个地址上发送VRRP通告这个很是重要必定要选择稳定的网卡端口来发送这里至关于heartbeat的心跳端口若是没有设置那么就用默认的绑定的网卡的IP也就是interface指定的IP地址 garp master delay: 在切换到master状态后延迟进行免费的ARP(gratuitous ARP)请求,默认5s virtual router id: 这里设置VRID这里很是重要相同的VRID为一个组他将决定多播的MAC地址 priority 100: 设置本节点的优先级优先级高的为master advert int: 设置MASTER与BACKUP负载均衡之间同步即主备间通告时间检查的时间间隔,单位为秒,默认1s virtual ipaddress: 这里设置的就是VIP也就是虚拟IP地址他随着state的变化而增长删除当state为master的时候就添加当state为backup的时候删除这里主要是有优先级来决定的和state设置的值没有多大关系这里能够设置多个IP地址 virtual routes: 原理和virtual ipaddress同样只不过这里是增长和删除路由 lvs sync daemon interface: lvs syncd绑定的网卡,相似HA中的心跳检测绑定的网卡 authentication: 这里设置认证 auth type: 认证方式能够是PASS或AH两种认证方式 auth pass: 认证密码 nopreempt: 设置不抢占master,这里只能设置在state为backup的节点上并且这个节点的优先级必须别另外的高,好比master由于异常将调度圈交给了备份serve,master serve检修后没问题,若是不设置nopreempt就会将调度权从新夺回来,这样就容易形成业务中断问题 preempt delay: 抢占延迟多少秒,即延迟多少秒后竞选master debug: debug级别 notify master: 和sync group这里设置的含义同样能够单独设置例如不一样的实例通知不一样的管理人员http实例发给网站管理员mysql的就发邮件给DBA**
配置实例
keepalived-01服务器
! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id 41 } vrrp_instance lvs { state BACKUP interface eth0 virtual_router_id 40 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.12.40 } }
keepalived-02负载均衡
! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id 42 } vrrp_instance lvs { state BACKUP interface eth0 virtual_router_id 40 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.12.40 } }
Keepalived主备配置文件区别:
router_id 这个ID主备必须惟一
state 状态初始信息能够不一致,建议都设置为BACKUP,让他们用过priority设置的值去选举出MASTER。
priority 主备竞选优先级数值不一致
以上为实现高可用的配置,和华为的vrrp配置差不对,思科的私有协议也差很少。ide