暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

keepalived高可用部署

IT那活儿 2022-12-08
471
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

keeplived简介

Keepalived是用纯ANSI/ISO C编写的。该软件围绕一个中央I/O多路复用器进行连接,以提供实时网络设计。

1.1 Keepalived进程被分为3个不同进程

  • A.一个极简的父进程,负责fork和监控子进程,父进程监控框架称为watchdog
  • B.两个子进程,一个负责VRRP框架,另一个负责健康检查

1.2 使用场景

  • mysql数据库双主架构;
  • nginx主从架构;通过keepalived进行切换。
1.3 故障切换框架
Keepalived实现了用于导向器故障切换的VRRP协议。在实现的VRRP堆栈中,VRRP数据包调度程序负责为每个VRRP实例多路分发特定的I/O。

VRRP实例同步:我们可以指定2个VRRP实例之间的状态监控,也称为VRRP同步组。它保证2个VRRP实例保持相同状态,同步实例间相互监视。


安装部署

2.1 通过二进制安装
1)安装依赖
yum install curl gcc openssl-devel libnl3-devel net-snmp-devel
2)下载解压安装包并编译
tar xz keepalived-1.2.15.tar.gz
./configure
Make && make install

3)安装到指定目录
./configure --prefix=/usr/local/keepalived-1.2.15
2.2 通过依赖包安装
yum -y install keepalived
yum -y install nmap-ncat

-- 测试

systemctl status keepalived.service
systemctl start keepalived.service


配 置

例如两台互为主主的nginx或mysql同时可提供服务,一台服务宕掉后另一台可接管。
示例:主节点
! Configuration File for keepalived

global_defs {
    router_id test_kp
}

vrrp_script chk_local {
    script "/local/keepalived/etc/stop.sh"
    interval 15
    fall 3
    rise 1
# weight 10
}
vrrp_instance VI_1 {
    state BACKUP
    interface bond0
    virtual_router_id 1001
    priority 100
    advert_int 1
    nopreempt   ## backup 节点不需要配置
    authentication 
{
        auth_type PASS
        auth_pass server101
    }
    track_script {
        chk_local
    }
    virtual_ipaddress {
        192.168.10.101/24
    }
}

示例:备节点
! Configuration File for keepalived

global_defs {
    router_id test_kp
}

vrrp_script chk_local {
    script "/local/keepalived/etc/stop.sh"
    interval 3
    weight -5
    }


vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 1001
    priority 99
    advert_int 1
    authentication 
{
        auth_type PASS
        auth_pass server101
    }
    virtual_ipaddress {
        192.168.10.101/24
    }
track_script {
    chk_local
    }
}

参数详解
关键字
定义
类型
vrrp_instance
标识VRRP实例定义块
Block
state
在标准使用中指定实例状态

interface
指定实例运行所要用到的网络接口
string
mcast_src_ip
指定VRRP通告的IP头的源地址

lvs_sync_daemon_inteface
指定LVS sync_daemon运行所要用到的网络接口
string
virtual_router_id
指定实例所属的VRRP路由器ID
numerical
priority
指定实例在VRRP路由器中的优先级
numerical
advert_int
以秒为单位指定通告的间隔时间(设置为1)
numerical
smtp_alert
激活MASTER状态转换的SMTP通知

authentication
标识VRRP认证定义块
Block
auth_type
指定要使用哪种身份认证(PASS|AH)

auth_pass
指定要使用的密码字符串
string
virtual_ipaddress
标识VRRP VIP定义块
Block
virtual_ipaddress_excluded
标识VRRP VIP排除定义块
Block
notify_master
指定在切换到master时要执行的脚本
path
notify_backup
指定在切换到backup时要执行的脚本
path
notify_fault
指定在切换到故障状态时要执行的脚本
path
vrrp_sync_group
标识VRRP同步组定义块
Block



常见问题

4.1 日志提示
WARNING - script '/etc/keepalived/check_nginx.sh' is not executable for uid:gid 0:0 - disabling.
原因:备机上keepalived监控脚本没有执行权限。
解决:chmod +x ~/check_nginx.sh。
4.2 Keeplived主备vip地址无法切换
原因:keeplived配置的优先级相同。
解决:检查keepalived.cof配置文件的priority参数,主从节点优先级设置为不同。


本文作者王 哲(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论