keepalived详解1-vrrp协议和基本配置文件

9 篇文章 0 订阅
5 篇文章 0 订阅

高可用集群

LB:Load Balance 负载均衡 LVS/HAProxy/nginx(http/upstream, stream/upstream)

HA:High Availability 高可用集群 MySQL、Redis、Zookeeper、Kafka 有状态的服务

KeepAlived 通用的高可用集群,更适合无状态的服务

SPoF: Single Point of Failure,解决单点故障

HPC:High Performance Computing 高性能集群

VRRP(Virtual Router Redundancy Protocol)
前言

保证网络传输不中断通常是我们生产中的硬性指标。但是传统的那种使用网关与外界通讯时,一旦网关出现故障,网络传输中断,业务就会收到影响,然后就出现了VRRP协议技术

VRRP将多台设备组成一个虚拟设备,通过配置虚拟设备的ip为缺省网关,另外的设备设为缺省网关的备份,当默认网关发生故障的时候,将推举新的网关设备承担数据流量。保障了网络的可靠通信,当Master发生故障时。将自动切换到Backup设备进行转发

VRRP是虚拟路由冗余协议,是一种实现网关冗余的协议,在主机的下一跳出现故障时,可以通过VRRP即时的切换到备份设备,从而实现链路的可靠性。

VRRP的工作原理

VRRP协议定义了三种状态:初始状态(Initialize),活动状态(Master),备份状态(Backup),只有处于Master状态的设备才可以转发那些发送到虚拟IP地址的报文

Initialize

通常设备启动时或设备检测到故障时会进入Initialize状态。

该状态为VRRP不可用状态,在此状态时设备不会对VRRP通告报文做任何处理。

Master

Master每隔120秒会向外发送一个免费的ARP,用于下行交换机更新mac地址表,主机学习ARP表项

Master设备会向Backup设备以每秒为周期发送VRRP通告报文,用于告知主设备的存在,Dead时间为3倍通告时间+偏移时间。

Backup

当VRRP设备处于Backup状态时,它不会承担虚拟路由设备的转发工作,并定期接受Master设备的VRRP通告报文,判断Master的工作状态是否正常。

VRRP选举机制

有几台路由器组成的虚拟路由器又称为ARRP备份组,一个VRRP备份组逻辑上为一台路由器。VRRP备份建立后。会根据所配置的优先级来选举Master设备

keepalived架构和安装

功能:vip漂移,为vip地址所在的节点生成ipvs规则。高可用还有健康性检测

  • 用户空间核心组件:
    • vrrp stack:VIP消息通告
    • checkers:监测 Real Server
    • system call:实现 vrrp 协议状态转换时调用脚本的功能
    • SMTP:邮件组件 IPVS wrapper:生成
    • IPVS 规则 Netlink Reflector:网络接口
    • WatchDog:监控进程
  • 控制组件:提供keepalived.conf 的解析器,完成Keepalived配置
  • IO复用器:针对网络目的而优化的自己的线程抽象
  • 内存管理组件:为某些通用的内存管理功能(例如分配,重新分配,发布等)提供访问权限

安装
apt update;apt install keepalived
dpkg -L keepalived
systemctl status keepalived.service
cp /usr/share/doc/keepalived/samples/keepalived.conf.sample /etc/keepalived/keepalived.conf
systemctl status keepalived.service
ll /etc/keepalived/keepalived.conf
systemctl enable --now keepalived
配置说明

/etc/keepalived/keepalived.conf

配置文件组成

  • GLOBAL CONFIGURATION

Global definitions:定义邮件配置,route_id,vrrp配置,多播地址等

  • VRRP CONFIGURATION

VRRP instance(s):定义每个vrrp虚拟路由器

  • LVS CONFIGURATION

Virtual server group(s)

Virtual server(s):LVS集群的VS和RS

全局配置

#/etc/keepalived/keepalived.conf 
global_defs {
 notification_email {
 root@localhost #keepalived 发生故障切换时邮件发送的目标邮箱,可以按行区分写
多个
 root@wangxiaochun.com 
  29308620@qq.com 
 }
 notification_email_from keepalived@localhost  #发邮件的地址
 smtp_server 127.0.0.1     #邮件服务器地址
 smtp_connect_timeout 30   #邮件服务器连接timeout
 router_id ka1.example.com #每个keepalived主机唯一标识,建议使用当前主机名,如果多节点重
名可能会影响切换脚本执行
 vrrp_skip_check_adv_addr  #默认会对所有通告报文都检查,会比较消耗性能,启用此配置后,如果
收到的通告报文和上一个报文是同一个路由器,则跳过检查
 vrrp_strict               #严格遵守VRRP协议,启用此项后以下状况将无法启动服务或工作异
常:1.无VIP地址 2.配置了单播邻居 3.在VRRP版本2中有IPv6地址,开启动此项并且没有配置
vrrp_iptables时会自动开启iptables(旧内核)或者nft(新内核)的防火墙规则,默认导致VIP无法访问,
建议不加此项配置
 vrrp_garp_interval 0      #gratuitous ARP messages 报文发送延迟,0表示不延迟
 vrrp_gna_interval 0       #unsolicited NA messages (不请自来)消息发送延迟
 vrrp_mcast_group4 224.0.0.18 #指定组播IP地址范围:224.0.0.0到239.255.255.255,默认
值:224.0.0.18,如果配置了单播,此项失效
vrrp_iptables   #此项和vrrp_strict同时开启时,则不会添加防火墙规则,如果无配置
vrrp_strict项,则无需启用此项配置,注意:新版加此项仍有iptables(旧内核)或者nft(新内核)规则
}

配置虚拟路由器

vrrp_instance <STRING> { #<String>为vrrp的实例名,一般为业务名称
 配置参数
 ......
 }
#配置参数:
state MASTER|BACKUP#当前节点在此虚拟路由器上的初始状态,状态为MASTER或者BACKUP,当
priority相同时,先启动的节点优先获取VIP
interface IFACE_NAME #绑定为当前VRRP虚拟路由器使用的物理接口,如:eth0,bond0,br0,可以和
VIP不在一个网卡,实现心跳功能
virtual_router_id VRID #每个虚拟路由器唯一标识,范围:0-255,每个虚拟路由器此值必须唯一,否
则服务无法启动,同属一个虚拟路由器的多个keepalived节点必须相同,务必要确认在同一网络中此值必须唯
一
priority 100 #当前物理节点在此虚拟路由器的优先级,范围:1-254,每个keepalived主机节点此
值不同,如果多节点此值相同,则先来后到原理获取VIP
advert_int 1 #vrrp通告的时间间隔,默认1s,注意:集群内多节点此值必须相同
authentication { #认证机制
 auth_type AH|PASS   #AH为IPSEC认证(不推荐),PASS为简单密码(建议使用)
 auth_pass <PASSWORD> #预共享密钥,仅前8位有效,同一个虚拟路由器的多个keepalived节点必
须一样
}
virtual_ipaddress { #虚拟IP,生产环境可能指定几十上百个VIP地址
 <IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
 192.168.200.100 #指定VIP,不指定网卡,默认为eth0,注意:不指定/prefix,默认
为/32
 192.168.200.101/24 dev eth1   #指定VIP的网卡,建议和interface指令指定的网卡不在一个
网卡
 192.168.200.102/24 dev eth2 label eth2:1 #指定VIP的网卡label 
}
track_interface { #配置监控网络接口,一旦出现故障,则转为FAULT状态实现地址转移
 eth0
 eth1
 …
}

[root@client keepalived]#cat keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id kv1
}

vrrp_instance VI_1 {
    state MASTER
    interface eth1
    virtual_router_id 50
    priority 100
    advert_int 1
    virtual_ipaddress {
        10.0.0.10/24 dev eth0 label etho:1
    }
}


[root@client keepalived]#systemctl restart keepalived.service
  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值