Keepalived 简介

简介: 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 
目录
相关文章
|
JavaScript 前端开发 Java
提升Vue.js技能!不得不看的三本Vue.js 3书籍
Vue.js是流行的 Web 前端框架,目前最新版本是Vue.js 3。本节介绍三本有关Vue.js 3的书籍。
654 0
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
2171 4
|
小程序 前端开发 Java
毕业设计-基于微信小程序的智能垃圾分类回收系统
毕业设计-基于微信小程序的智能垃圾分类回收系统
|
机器学习/深度学习 编解码 运维
高可用方案组件,Keepalived详解
高可用方案组件,Keepalived详解
2325 0
|
存储 监控 安全
Keepalive 具体介绍
Keepalive 具体介绍
|
负载均衡 算法 Linux
快速掌握keepalived
快速掌握keepalived
501 0
|
Python
解释Python中的ABC(Abstract Base Classes)是什么,如何使用它们?
【2月更文挑战第4天】【2月更文挑战第8篇】解释Python中的ABC(Abstract Base Classes)是什么,如何使用它们?
1564 2