keepalived

keepalived用于实现集群高可用,相对于zookeeper 配置简单,只负责分清主从关系,不传输元数据(元数据指的是描述数据信息的数据)。
Zookeeper传输元数据,所以Zookeeper下的组件“人人平等”,都可以处理请求。而keepalived中的cluster只有在master宕机才能起作用。
keepalived 通过脚本的形式检测组件的状态(如haproxy)
keepalived各节点之间通过抢占虚拟IP(即VIP)的方式来实现请求的转发。

keepalived的安装
第一步安装openssl

yum install gcc gcc-c++ openssl openssl-devel

第二步解压安装keepalived

tar -zxvf keepalived-1.2.18.tar.gz
cd keepalived-1.2.18
./configure --prefix=/usr/local/keepalived
make && make install

第三步 将keepalived设成系统服务

复制默认配置文件到默认路径
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
复制 keepalived 服务脚本到默认的地址
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
设置 keepalived 服务开机启动
chkconfig keepalived on


## keepalived 抢占式获取VIP(虚拟IP地址)

Master主机配置

- 注意选择绑定VIP的网络接口
- 主、从机要使用同一虚拟路由ID
- backup模式和master模式的区别(即state属性):backup即使有优先级更高的备用机出现,也不会抢占VIP,除非当前master宕机;master模式高优先级的备用机会立即抢占VIP。

global_defs {
## keepalived 自带的邮件提醒需要开启 sendmail 服务。建议用独立的监控或第三方 SMTP
router_id master ## 标识本节点的字条串,通常为 hostname

##这里可以开启邮件提醒
notification_email {
saltstack@163.com #开启提醒
}
notification_email_from dba@dbserver.com #变更提醒
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MySQL-HA

}
vrrp_script chk_haproxy {
script "/etc/keepalived/haproxy_check.sh" ## 检测 haproxy 状态的脚本路径
interval 2 ## 检测时间间隔
weight 2 ## 如果条件成立,权重+2
}
## 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
state BACKUP ## 默认主设备(priority 值大的)和备用设备(priority 值小的)都设置为 BACKUP,
## 由 priority 来控制同时启动情况下的默认主备,否则先启动的为主设备
interface ens33 ## 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同,我的是 eth1
virtual_router_id 91 ## 虚拟路由的 ID 号,两个节点设置必须一样,可选 IP 最后一段使用,
## 相同的 VRID 为一个组,他将决定多播的 MAC 地址
priority 120 ## 节点优先级,值范围 0-254,MASTER 要比 BACKUP 高
nopreempt ## 主设备(priority 值大的)配置一定要加上 nopreempt,否则非抢占也不起作用
advert_int 1 ## 组播信息发送间隔,两个节点设置必须一样,默认 1s
## 设置验证信息,两个节点必须一致
authentication {
auth_type PASS
auth_pass 1111 ## 真实生产,按需求对应该过来
}
## 将 track_script 块加入 instance 配置块
track_script {
chk_haproxy ## 检查 HAProxy 服务是否存活
}
## 虚拟 IP 池, 两个节点设置必须一样
virtual_ipaddress {
192.168.25.102 ## 虚拟 ip,可以定义多个,每行一个
}
}

备用机配置

! Configuration File for keepalived
global_defs {
router_id cluster

##这里可以开启邮件提醒
notification_email {
saltstack@163.com #开启提醒
}
notification_email_from dba@dbserver.com #变更提醒
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MySQL-HA
}
vrrp_script chk_haproxy {
script "/etc/keepalived/haproxy_check.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 91
priority 110
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_haproxy
}
virtual_ipaddress {
192.168.25.102
}
}

Keepalived实现Haproxy高可用_IP