全网超详细攻略——高可用集群KEEPALIVED详解

目录

一、Keepalived概述

1.1 什么是Keepalived ?

1.2 Keepalived架构

1.3 Keepalived工作原理

1.3.1 VRRP 相关术语

1.3.2 VRRP 相关技术

1.4 Keepalived工作区域

1.5 高可用集群

1.5.1 集群类型

1.5.2 系统可用性

1.5.3 实现高可用

二、Keepalived部署

2.1 Keepalived 环境准备

2.2 Keepalived 相关文件

2.3 Keepalived 安装

2.4 KeepAlived 配置说明

2.4.1 配置文件组成部分

2.4.2 配置语法说明

2.4.2.1 全局配置

2.4.2.2 配置虚拟路由器

2.4.2.3 启用keepalived日志功能

2.4.2.4 实现独立子配置文件

三、Keepalived 企业应用示例

3.1 实现master/slave的 Keepalived 单主架构

3.2 抢占模式和非抢占模式

3.2.1 非抢占模式 nopreempt

3.2.2 抢占延迟模式 preempt_delay

3.3 VIP单播配置

3.4 Keepalived 通知脚本配置

3.5 实现 master/master 的 Keepalived 双主架构

3.6 实现IPVS的高可用性

3.6.1 IPVS相关配置

3.6.1.1 virtual server (虚拟服务器)的定义格式

3.6.1.2 虚拟服务器配置

3.6.1.3 应用层监测

3.6.1.4 TCP监测

3.6.2 实战案例

实现单主的 LVS-DR 模式

3.7 实现其它应用的高可用性 VRRP Script

3.7.1 VRRP Script 配置

3.7.1.1 定义 VRRP script

3.7.1.2 调用 VRRP script

实现HAProxy高可用


一、Keepalived概述

1.1 什么是Keepalived ?

 Keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。它可以自动检测集群中服务器的健康状况,比如主从模式时,当主服务器发生故障时,Keepalived会根据服务器的VRRP优先级来选举一个从服务器成为主服务器,实现主从的无缝切换,保证持续的提供服务,并且Keepalived也会及时的通过邮件通知到相关负责人进行维护出现问题的服务器。               Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件。      
        Keepalived软件主要是通过VRRP协议实现高可用功能的。VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行。所以,Keepalived一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用功能。(因此Keepalived在给Nginx,Haproxy做高可用的时候,仅仅 只是用了keepalived的VRRP协议。)

1.2 Keepalived架构

  • 用户空间核心组件:

        vrrp stack:VIP消息通告

        checkers:监测real server

        system call:实现 vrrp 协议状态转换时调用脚本的功能

        SMTP:邮件组件

        IPVS wrapper:生成IPVS规则

        Netlink Reflector:网络接口

        WatchDog:监控进程

  • 控制组件:提供keepalived.conf 的解析器,完成Keepalived配置
  • IO复用器:针对网络目的而优化的自己的线程抽象
  • 内存管理组件:为某些通用的内存管理功能(例如分配,重新分配,发布等)提供访问权限

1.3 Keepalived工作原理

         Keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。虚拟路由冗余协议,解决静态网关单点风险 ,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

物理层:路由器、三层交换机
软件层:keepalived

1.3.1 VRRP 相关术语

  • 虚拟路由器:Virtual Router
  • 虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器
  • VIPVirtual IP
  • VMACVirutal MAC (00-00-5e-00-01-VRID)
  • 物理路由器:
        master:主设备
        backup:备用设备
        priority:优先级

1.3.2 VRRP 相关技术

通告:心跳,优先级等;周期性
工作方式:抢占式,非抢占式
  • 安全认证:
  • 无认证
  • 简单字符认证:预共享密钥
  • MD5
工作模式:
  • /备:单虚拟路由器
  • /主:主/备(虚拟路由器1),备/主(虚拟路由器2

1.4 Keepalived工作区域

         Layer3,4,&5工作在IP/TCP协议栈的网络层,传输层,及应用层。

网络层:Keepalived通过ICMP协议向服务器集群中的每一个节点发送一个ICMP数据包(有点类似与Ping的功能),如果某个节点没有返回响应数据包,那么认为该节点发生了故障,Keepalived将报告这个节点失效,并从服务器集群中剔除故障节点。

传输层:Keepalived在传输层里利用了TCP协议的端口连接和扫描技术来判断集群节点的端口是否正常,比如对于常见的WEB服务器80端口。或者SSH服务22端口,Keepalived一旦在传输层探测到这些端口号没有数据响应和数据返回,就认为这些端口发生异常,然后强制将这些端口所对应的节点从服务器集群中剔除掉。

应用层:,Keepalived的运行方式也更加全面化和复杂化,用户可以通过自定义Keepalived工作方式,例如:可以通过编写程序或者脚本来运行Keepalived,而Keepalived将根据用户的设定参数检测各种程序或者服务是否允许正常,如果Keepalived的检测结果和用户设定的不一致时,Keepalived将把对应的服务器从服务器集群中剔除。

1.5 高可用集群

1.5.1 集群类型

  • LBLoad Balance 负载均衡
        LVS/HAProxy/nginx( http/upstream, stream/upstream
  • HAHigh Availability 高可用集群
        数据库、Redis
  • SPoF: Single Point of Failure,解决单点故障
        HPC: High Performance Computing 高性能集群

1.5.2 系统可用性

SLA Service-Level Agreement 服务等级协议(提供服务的企业与客户之间就服务的品质、水准、性能等方面所达成的双方共同认可的协议或契约)
A = MTBF / (MTBF+MTTR
99.95%:(60*24*30)*(1-0.9995)=21.6 分钟 # 一般按一个月停机时间统计
指标 : 99.9%, 99.99%, 99.999%,99.9999%

1.5.3 实现高可用

提升系统高用性的解决方案:降低 MTTR- Mean Time To Repair( 平均故障时间 )
解决方案:建立冗余机制
active/passive /
active/active 双主
active --> HEARTBEAT --> passive
active <--> HEARTBEAT <--> active

二、Keepalived部署

2.1 Keepalived 环境准备

  • 各节点时间必须同步:ntp, chrony
  • 关闭防火墙及SELinux
  • 各节点之间可通过主机名互相通信:非必须
  • 建议使用/etc/hosts文件实现:非必须
  • 各节点之间的root用户可以基于密钥认证的ssh服务完成互相通信:非必须

2.2 Keepalived 相关文件

  • 软件包名:keepalived
  • 主程序文件:/usr/sbin/keepalived
  • 主配置文件:/etc/keepalived/keepalived.conf
  • 配置文件示例:/usr/share/doc/keepalived/
  • Unit File/lib/systemd/system/keepalived.service
  • Unit File的环境配置文件:/etc/sysconfig/keepalived

2.3 Keepalived 安装

[root@ka1 ~]# yum install keepalived -y
[root@ka1 ~]# systemctl start keepalived.service 
[root@ka1 ~]# ps axf | grep keepalived
  3488 pts/1    S+     0:00          \_ grep --color=auto keepalived
  3472 ?        Ss     0:00 /usr/sbin/keepalived -D
  3473 ?        S      0:00  \_ /usr/sbin/keepalived -D
  3474 ?        S      0:00  \_ /usr/sbin/keepalived -D

2.4 KeepAlived 配置说明

2.4.1 配置文件组成部分

配置文件: /etc/keepalived/keepalived.conf
配置文件组成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值