Keepalived 简介

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: 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 
目录
相关文章
|
Java 数据库
Springboot 多数据源动态切换 以AOP切点方式实现
Springboot 多数据源动态切换 以AOP切点方式实现
790 0
Springboot 多数据源动态切换 以AOP切点方式实现
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
2121 4
|
机器学习/深度学习 运维 数据挖掘
时间序列特征提取:18 种高效工具库及其应用分析
时间序列特征提取是数据科学的重要环节,可将原始数据转化为分析价值高的特征表示。本文介绍18个Python库,涵盖通用与专业领域(如医疗、金融)的特征提取工具。这些库包括tsfeatures、tsfresh、librosa等,各自针对特定任务(如预测、分类、异常检测)提供独特功能。通过结合不同库的特点,数据科学家能更高效地进行特征工程,提升模型性能与分析深度。文章总结了各库的优势及适用场景,为实际应用提供了全面指导。
910 0
|
数据可视化 数据挖掘 BI
ads数据导入
【8月更文挑战第9天】
434 4
|
XML 网络协议 网络安全
Nmap的使用方法
Nmap是一款强大的网络扫描工具,使用格式为`nmap [扫描类型] [选项] {目标规格}`。目标规格支持主机名、IP地址及网络范围,如`scanme.nmap.org`或`192.168.0.1`。通过`-iL`从文件读取目标,`-iR`随机选择目标,`--exclude`排除特定主机。主机发现选项包括`-sP` Ping扫描和`-P0`跳过发现。扫描技术涵盖TCP、UDP和ICMP等多种方式。端口扫描可通过`-p`指定端口,`-F`快速扫描常用端口。服务检测使用`-sV`,操作系统检测使用`-O`。时序和性能可通过`-T`调整。
383 4
|
监控 物联网 关系型数据库
使用PostgreSQL触发器解决物联网设备状态同步问题
在物联网监控系统中,确保设备状态(如在线与离线)的实时性和准确性至关重要。当设备状态因外部因素改变时,需迅速反映到系统内部。因设备状态数据分布在不同表中,直接通过应用同步可能引入复杂性和错误。采用PostgreSQL触发器自动同步状态变化是一种高效方法。首先定义触发函数,在设备状态改变时更新管理模块表;然后创建触发器,在状态字段更新后执行此函数。此外,还需进行充分测试、监控性能并实施优化,以及在触发函数中加入错误处理和日志记录功能。这种方法不仅提高自动化程度,增强数据一致性与实时性,还需注意其对性能的影响并采取优化措施。
509 2
|
机器学习/深度学习 编解码 运维
高可用方案组件,Keepalived详解
高可用方案组件,Keepalived详解
2306 0
|
存储 监控 安全
Keepalive 具体介绍
Keepalive 具体介绍