2方式二
1yum安装
yum install -y keepalived
到这里源码安装Keepalived就已经完成
2获取压缩包,解压
持续更新中…
高可用配置
1抢占模式
3keepalived调用脚本进行资源监控
keepalived调用外部的辅助脚本进行资源监控,并根据监控的结果状态能实现优先动态调整
vrrp_script:自定义资源监控脚本,vrrp实例根据脚本返回值,公共定义,可被多个实例调用,定义在vrrp实例之外的独立配置块,一般放在global_defs设置块之后。
通常此脚本用于监控指定应用的状态。一旦发现应用的状态异常,则触发对MASTER节点的权重减至低于SLAVE节点,从而实现 VIP 切换到 SLAVE 节点
分两步:(1) 先定义一个脚本;(2) 调用此脚本
vrrp_script SCRIPT_NAME { # 定义用于实例执行的脚本内容,比如可以在线降低优先级,用于强制切换,定义在与vrrp_instance平级。
script <STRING>|<QUOTED-STRING> # shell命令或脚本路径,此脚本返回值为非0时(假),会触发下面OPTIONS执行
interval <INTEGER> # 间隔时间,单位为秒,默认1秒
timeout <INTEGER> # 超时时间
weight <INTEGER:-254..254> # 权重,监测失败后会执行权重相加,权重可以为负数即相加后降低本机权重
fall <INTEGER> # 脚本几次失败转换为失败
rise <INTEGER> # 脚本连续监测成功后,把服务器从失败标记为成功的次数
user USERNAME [GROUPNAME] # 执行监测的用户或组
init_fail # 设置默认标记为失败状态,监测成功之后再转换为成功状态
}
track_script { #追踪脚本,通常用于去执行上面的vrrp_script定义的脚本内容,定义在vrrp_instance里。
SCRIPT_NAME
SCRIPT_NAME
}
2非抢占模式
3将配置文件拷贝到/etc/keepalived下
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
1先安装keepalived依赖组件
yum -y install libnl libnl-devel libnfnetlink-devel popt-devel gcc make
4keepalived的抢占与非抢占模式
3预编译
./configure --prefix=/usr/local/keepalived
官方配置手册-原版官方配置手册-中文版
安装
4编译、安装
make && make install
1双机主备
global_defs {
router_id keep_86
}
vrrp_instance VI_1 {
# 主用机设置为 MASTER
state MASTER
interface ens33
virtual_rhouter_id 51
priority 100
advert_int 2
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
# 注意:主备两台的vip都是一样的,绑定到同一个vip
192.168.1.88
}
}
global_defs {
router_id keep_87
}
vrrp_instance VI_1 {
# 备用机设置为BACKUP
state BACKUP
interface ens33
virtual_router_id 51
# 权重低于MASTER
priority 80
advert_int 2
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
# 注意:主备两台的vip都是一样的,绑定到同一个vip
192.168.1.88
}
}
Keepalived是免费软件;您可以根据自由软件基金会发布的GNU通用公共许可条款重新分发和/或修改它;许可证的第2版,或任何更高版本。
5加入开机启动项、系统命令
2将keepalived文件拷贝到/etc下
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
重点:第4种非抢占式俩节点state必须为bakcup,且必须配置nopreempt注意:这样配置后,我们要注意启动服务的顺序,优先启动的获取master权限,与优先级没有关系了
以上3种,只要级别高就会获取master,与state状态是无关的
1方式一
4将keepalived加入系统命令系统
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
官方下载地址
mkdir /usr/src/software && cd /usr/src/software
wget http://www.keepalived.org/software/keepalived-2.0.20.tar.gz
tar zxvf keepalived-2.0.20.tar.gz
cd keepalived-2.0.20
2双主热备
global_defs {
router_id keep_86
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.161
}
}
vrrp_instance VI_2 {
state BACKUP
interface ens33
virtual_router_id 52
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.162
}
}
global_defs {
router_id keep_87
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.161
}
}
vrrp_instance VI_2 {
state MASTER
interface ens33
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.162
}
}
例如调用监控Nginx状态脚本:
! 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 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_nginx { #定义脚本
script "/home/test/chk_nginx.sh " #0表示检查进程是否运行。
interval 2 # 间隔时间,单位为秒,默认1秒
weight -20 #减后要小于backup中priority的值。
fall 3 # 脚本几次失败转换为失败
rise 1 # 脚本连续监测成功后,把服务器从失败标记为成功的次数
}
vrrp_instance VI_1 {
state MASTER
interface ens192
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
# chk_down
chk_nginx #调用此脚本
}
virtual_ipaddress {
192.168.200.16
}
}
1把keepalived的启动文件复制到init.d
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
运行过程中,当master发生异常,且后期恢复master正常后,存在抢占或非抢占两种情况。简单点说抢占模式就是,当master宕机后,backup接管服务。后续当master恢复后,vip漂移到master上,master重新接管服务,多了一次多余的vip切换,而在实际生产中是不需要这样。
1)俩台都为master时,比如server1的优先级大于server2,keepalived启动后server1获得master,server2自动降级为backup。此时server1宕机后,server2接管服务,当server1恢复后,server1又变为master,重新接管服务,server2变为backup。属于抢占式。 |
2)server1为master,server2位backup,且master优先级大于backup。keepalived启动后server1获得master,server2为backup。当server1宕机后,server2接管服务。当server1恢复后,server1重新接管服务变为master,而server2变为backup。属于抢占式。 |
3)server1为master,server2位backup,且master优先级低于backup。keepalived启动后server2获得master,server1为backup。当server2宕机后,server1接管服务。此时server2恢复后抢占服务,获得master,server1降级将为backup。属于抢占式。 |
实际生产中是,当原先的master恢复后,状态变为backup,不接管服务,这是非抢占模式。
4)server1和server2都为backup。我们要注意启动server服务的启动顺序,先启动的升级为master,与优先级无关。且配置nopreempt项。 |
比如server1获得master权限,server2为backup。此时server1宕机后,server2接管服务升级为master。当server1恢复后权限将为backup,
不会争抢server2的master权限,server2将会继续master权限。属于非抢占式。
2查看版本
rpm -qa|grep keepalived
rpm -qc keepalived
文章为作者独立观点,不代表股票交易接口观点