Keepalived 简介

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: Keepalived 采用 VRRP CVirtual Router Redundancy Protocol , 虚拟路由冗余协议) ,以 软件的形式实现服务的热备功能 。
       Keepalived 采用 VRRP CVirtual Router Redundancy Protocol , 虚拟路由冗余协议) ,以 软件
的形式实现服务的热备功能 。 通常情况下是将两台 Linux 服务器组成一个热备组 (Master 和
Backup ) ,同 一时间内热备组只有 一 台主服务器 Master 提供服务,同时 Master 会虚拟出一个公
用的虚拟 E 地址,简称 VIP 。 这个 VIP 只存在于 Master 上并对外提供服务 。 如果 Keepalived
检测到 Master 宿机或者服务故障,备份服务器 Backup 会自动接管 VIP 并成为 Master , Keepalived
将原 Master 从热备组中移除 。 当原 Master 恢复后,会自动加入到热备组,默认再抢占成为 Master ,
起到故障转移的功能 。
        Keepalived 工作在 OSI 模型中的第 3 层、第 4 层和第 7 层 。
工作在第 3 层是指 Keepalived 会定期向热备组中的服务器发送一个 ICMP 数据包来判断某
台服务器是否故障,如果故障则将这台服务器从热备组移除。
工作在第 4 层是指 Keepalived 以 TCP 端口的状态判断服务器是否故障,比如检测 RabbitMQ
的 5672 端口,如果故障则将这台服务器从热备组中移除。
工作在第 7 层是指 Keepalived 根据用户设定的策略(通常是一个自定义的检测脚本)判断
服务器上的程序是否正常运行,如果故障将这台服务器从热备组移除

部分参数详解:

nopreempt : 通常如果master服务死掉后backup会变成master,但是当master服务又好了的时候 master此时会抢占VIP,这样就会发生两次切换对业务繁忙的网站来说是不好的。所以我们要在配置文件加入 nopreempt 非抢占,但是这个参数只能用于state 为backup,故我们在用HA的时候最好master 和backup的state都设置成backup 让其通过priority来竞争。

vim /etc/keepalived/keepalived.conf   #(见下面文件详细配置)
#启动服务
/etc/init.d/keepalived start
#启动后加载配置文件(一般无需该操作,只有在更新了配置之后重新加载时使用)
/usr/sbin/keepalived -f /etc/keepalived/keepalived.conf
#如下是keepalived.conf配置文件内容,因为我们的需求是主主热备,无需其他功能,故主从的配置文件一致即可
#在同一局域网内,两组keepalived两参数 router_id 和 virtual_router_id 不可以一致
#
#主从库需要区别修改的三处如下:
#
# state 初始状态值,主库对应参数为 MASTER 从库对应的参数为 BACKUP
# priority 主库的优先级参数为150 从库的优先级参数为 100  注意这里的参数,从库的优先级一定要低于主库
# virtual_ipaddress 定义虚拟VIP地址以及绑定的网卡参数
#
###########################keepalived.conf配置内容##########################
! Configuration File for keepalived
global_defs {
  router_id mysql     #keepalive主机标识,这里的标识很重要,影响到主从库之间的keepalived通讯
}
vrrp_script check_run {
    script "/etc/keepalived/check_mysql.sh"    #服务器检查脚本,主要检查mysql是否可以正常访问
    interval 3                                 #服务检查周期,单位:秒
}
vrrp_sync_group VG1 {
  group {
    VI_1    #服务组名,多个时候一个出错就切换
  }
  notify_master  /etc/keepalived/takeover.sh    #状态切换为从库接管时执行该脚本,即主库宕机时,从库接管
  notify_backup  /etc/keepalived/recovery.sh    #状态切换为主库接管时执行该脚本,即主库恢复时,从库归还
}
vrrp_instance VI_1 {
  state BACKUP           #初始状态,都设置为BACKUP,配合不抢占参数
  interface eth1         #实例绑定网卡
  virtual_router_id 11   #VRID标识0-255
  priority 150           #主库的高优先级竞选为MASTER,从库的优先级要低于主库,故需要设置为100
  advert_int 1           #检查时间,单位:秒
  nopreempt              #不抢占,只能设置在BACKUP上
  authentication {
    #验证方式
    auth_type PASS
    auth_pass 1qaz@WSX
  }
  track_script {
    check_run          #定义程序的检查方法,调用脚本
  }
  virtual_ipaddress {
    #VIP
    10.10.20.205 dev eth1 label eth1:1
  }
}
log]# more /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   router_id LVS_DEVEL
}
#vrrp_script chk_codis_port {
#    script "/opt/chk_codis_proxy.sh"
#    interval 2
#    weight -5
#    fall 2
#    rise 1
#}
vrrp_instance VI_2 {
    state MASTER
    interface bond0
    virtual_router_id 37
    priority 100
    advert_int 6
    authentication {
        auth_type PASS
        auth_pass 3333
    }
    virtual_ipaddress {
      10.50.10.165
    }
#    track_script {
#    chk_codis_port
#    }
}

-- update 2022年2月28日14:50:21

mysql 双主集群keepalived 配置

[(EDWDB01)root@edwrac1 ~]#more /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
ops@wangshibo.cn
tech@wangshibo.cn
}
notification_email_from ops@wangshibo.cn
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MASTER-HA
}
vrrp_script chk_mysql_port {
    script "/opt/chk_mysql.sh"
    interval 2
    weight -5
    fall 2
    rise 1
}
vrrp_instance VI_1 {
    state BACKUP
    interface bond0
    mcast_src_ip 10.50.10.49
    virtual_router_id 188
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.50.10.180
    }
track_script {
   chk_mysql_port
}
}
[(EDWDB01)root@edwrac1 ~]#
[(EDWDB01)root@edwrac1 ~]#more /opt/chk_mysql.sh
#!/bin/bash
counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)
if [ "${counter}" -eq 0 ]; then
    /etc/init.d/keepalived stop
fi
[(EDWDB02)root@edwrac2 ~]#more /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
ops@wangshibo.cn
tech@wangshibo.cn
}
notification_email_from ops@wangshibo.cn
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MASTER-HA
}
vrrp_script chk_mysql_port {
    script "/opt/chk_mysql.sh"
    interval 2
    weight -5
    fall 2
    rise 1
}
vrrp_instance VI_1 {
    state MASTER
    interface bond0
    mcast_src_ip 10.50.10.50
    virtual_router_id 188
    priority 80
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.50.10.180
    }
track_script {
   chk_mysql_port
}
}
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
应用服务中间件 nginx 数据安全/隐私保护
HAProxy的高级配置选项-配置haproxy的状态页
这篇文章详细介绍了如何配置HAProxy的状态页,包括隐藏版本信息、设置自动刷新时间、自定义访问URI、配置认证信息以及启用管理功能等,并通过实战案例展示了配置过程和效果。
645 5
HAProxy的高级配置选项-配置haproxy的状态页
|
22天前
|
人工智能 JavaScript Linux
【Claude Code 全攻略】终端AI编程助手从入门到进阶(2026最新版)
Claude Code是Anthropic推出的终端原生AI编程助手,支持40+语言、200k超长上下文,无需切换IDE即可实现代码生成、调试、项目导航与自动化任务。本文详解其安装配置、四大核心功能及进阶技巧,助你全面提升开发效率,搭配GitHub Copilot使用更佳。
12839 22
|
11月前
|
机器学习/深度学习 运维 数据挖掘
时间序列特征提取:18 种高效工具库及其应用分析
时间序列特征提取是数据科学的重要环节,可将原始数据转化为分析价值高的特征表示。本文介绍18个Python库,涵盖通用与专业领域(如医疗、金融)的特征提取工具。这些库包括tsfeatures、tsfresh、librosa等,各自针对特定任务(如预测、分类、异常检测)提供独特功能。通过结合不同库的特点,数据科学家能更高效地进行特征工程,提升模型性能与分析深度。文章总结了各库的优势及适用场景,为实际应用提供了全面指导。
650 0
|
Docker 容器
docker:记录如何在x86架构上构造和使用arm架构的镜像
为了实现国产化适配,需将原x86平台上的Docker镜像转换为适用于ARM平台的镜像。本文介绍了如何配置Docker buildx环境,包括检查Docker版本、安装buildx插件、启用实验性功能及构建多平台镜像的具体步骤。通过这些操作,可以在x86平台上成功构建并运行ARM64镜像,实现跨平台的应用部署。
10315 2
|
关系型数据库 API Apache
Flink CDC:基于 Apache Flink 的流式数据集成框架
本文整理自阿里云 Flink SQL 团队研发工程师于喜千(yux)在 SECon 全球软件工程技术大会中数据集成专场沙龙的分享。
22437 11
Flink CDC:基于 Apache Flink 的流式数据集成框架
|
存储 监控 安全
Keepalive 具体介绍
Keepalive 具体介绍
|
算法 机器人
改进算法|混合策略改进的蝴蝶优化算法
改进算法|混合策略改进的蝴蝶优化算法
|
SQL 运维 资源调度
大数据CDH集群安装实录
通过ClouderaManager管理CDH集群,从而为大数据集群做统一管理,在整个大数据集群运维的角度来说,提供了很多便利点。
1146 0
大数据CDH集群安装实录
|
弹性计算 Ubuntu Cloud Native
阿里云服务器操作系统选哪个比较好?
阿里云服务器操作系统如何选择?Windows还是Linux?Windows选哪个版本?Linux选哪个版本?
4006 0
阿里云服务器操作系统选哪个比较好?
|
机器学习/深度学习 编解码 运维
高可用方案组件,Keepalived详解
高可用方案组件,Keepalived详解
2182 0