Keepalived 简介

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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
}
}
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
运维 网络协议 Shell
keepalived详解(一)——keepalived理论基础
keepalived详解(一)——keepalived理论基础
192 0
|
6月前
|
运维 应用服务中间件 Linux
keepalived详解(三)——keepalived与Nginx配合实战
keepalived详解(三)——keepalived与Nginx配合实战
205 1
|
2月前
|
负载均衡
keepalived基础介绍
Keepalived是一个基于VRRP协议的软件,用于实现高可用的IPVS负载均衡服务,具备故障转移、健康检查和邮件通知等功能。
137 1
keepalived基础介绍
|
监控 网络协议 应用服务中间件
Keepalived工作原理
Keepalived工作原理
|
数据安全/隐私保护 网络架构
Keepalived 安装与配置
安装好之后, 下一步就开始去来写这个配置文件了,就在这里面去建一个 etc 当中,就是在这个 etc 当中建一个这个 Keepalived 的 config 这样的一个文件:
193 1
|
缓存 负载均衡 网络协议
LVS+KeepAlived快速入门2
LVS+KeepAlived快速入门2
124 0
|
负载均衡 算法 网络协议
LVS+KeepAlived快速入门1
LVS+KeepAlived快速入门2
110 0
|
网络架构
|
网络协议 网络架构