生产环境之负载均衡LVS+keepalived方案(3)_KeepAlived介绍

keepalived简介

Keepalived 软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,加入了可以实现高可用的VRRP(Virtual Router RedundancyProtocol(虚拟路由器冗余协议))功能,解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行。因此Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件。
官网: https://www.keepalived.org/

VRRP协议介绍

虚拟路由冗余协议VRRP(Virtual Router Redundancy Protocol)通过把几台路由设备联合组成一台虚拟的路由设备,将虚拟路由设备的IP地址作为用户的默认网关实现与外部网络通信。当网关设备发生故障时,VRRP机制能够选举新的网关设备承担数据流量,从而保障网络的可靠通信。
VRRP协议组播地址是224.0.0.18,TTL是255,协议号是112。

VRRP报文结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qf0FRa93-1685415839210)(image/2023-05-17-11-13-57.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r8fVlPc8-1685415839213)(image/2023-05-17-11-14-29.png)]

PS: 由于markdown对图片支持的缺陷,如想查看对应的图片可至博客:
https://blog.csdn.net/zhjuan
查看下载对应的pdf文档。

keepalived主要功能

软件框架结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ACzcBHW3-1685415839214)(image/2023-05-17-10-40-16.png)]
PS: 由于markdown对图片支持的缺陷,如想查看对应的图片可至博客:
https://blog.csdn.net/zhjuan
查看下载对应的pdf文档。

主要功能模块介绍

vrrp stack

vrrp协议的实现。

ipvs wrapper

为集群中的节点生成ipvs规则。

checkers

基于网络层(IP)、传输层(TCP)、应用层(HTTP、SSL等)对真实业务服务进行健康状态检查,支持的检测包括:

  • TCP_CHECK 以服务器的ip地址及TCP端口的状态决定服务器工作是否正常;
  • HTTP_GET 基于应用层的方式检测,依据访问返回的状态码来确定主机是否正常;
  • MISC_CHECK 自定义脚本检测;
  • SSL_GET 基于应用层的方式检测,依据访问返回的状态码来确定主机是否正常。

WatchDog

用于监控VRRP Stack和Checkers这两个Keepalived关键组件是否正常工作。

配置文件详解

https://blog.51cto.com/johnnyfang/5419017
这篇博文写得比较详细,以下只是摘录以做备忘:
keepalived配置文件为/etc/keepalived/keepalived.conf,主要模块有: global_defs、vrrp_instance及virtual_server。

global_defs

global_defs模块为keepalived全局配置模块,它包括以下内容:

  • notification_email:可添加keepalived发生切换故障时发送邮件所对应的邮箱,可以分行添加多个邮箱;

  • notification_email_from:可添加发送邮件的地址;

  • smtp_server:可添加邮件服务器地址;

  • smtp_connect_timeout:可设置邮件服务器连接超时时长;

  • router_id:每个keepalived节点的唯一标识,建议设置为当前主机名,并且多个节点重名时是不受影响的;

  • vrrp_skip_check_adv_addr:keepalived会以对所有通告报文都进行检查,进而比较消耗性能,启用此配置后,如果收到的通告报文和上一个报文是同一个路由器则跳过检查,默认值为全检查;

  • vrrp_strict:表示严格遵守VRRP协议,启用此项后以下状况将无法启动服务——
    a. 未设置VIP地址
    b. 配置了单播邻居
    c. 在VRRP的2版本中带有IPV6地址,如果开启了此项后没有设置vrrp_iptables则会自动开启iptables防火墙规则,导致VIP地址无法访问,建议不加此项

  • vrrp_garp_interval:可设置ARP接口之间发送免费报文的延迟时间,可以精确到毫秒,默认是0;

  • vrrp_gna_interval:设置非请求消息的发送延迟时间,默认为0;

  • vrrp_mcast_group4:可指定组播IP范围,可选择224.0.0.0到239.255.255.255之间的地址,默认为224.0.0.18;

  • vrrp_iptables:与vrrp_strict同时设置时可禁止iptables规则的生成,注释或者无vrrp_strict时可不加此项。

vrrp_instance

vrrp_instance模块可配置虚拟路由器,它包含以下内容:

  • vrrp_instance模块后面的STRING为VRRP的实例名,一般设置为业务名称;
  • state:可设置此虚拟路由器的初始状态,可选择MASTER或者BACKUP;
  • interface:可以绑定当前虚拟路由器所使用的物理接口,如eth0、bond0和br0等,可以和VIP地址不在同一张网卡上;
  • virtual_router_id:可设置每个虚拟路由器的唯一标识,取值范围为0-255,每个虚拟路由器的该项值必须是唯一的,否则无法启动服务,并且同属一个虚拟路由器的多个keepalived节点必须相同,务必要确认在同一网络中此值必须唯一;
  • priority:可设置当前物理节点在此虚拟路由器中的优先级,优先级取值范围为1-254,值越大优先级越高,每个keepalived节点取值不同;
  • advert_int:可设置VRRP通告的时间间隔,默认为1秒;
  • authentication:可设置认证机制,由以下两部分构成——
    a. auth_type为认证类型,可选择AH和PASS两种,AH为IPSC互联网安全协议认证,PASS为简单密码认证,推荐PASS认证
    b. auth_pass为预共享秘钥设置,仅前8位有效,同一虚拟路由器的多个keepalived节点auth_pass值必须保持一致
  • virtual_ipaddress:可添加虚拟路由器的VIP,并可设置VIP对应的子网掩码、网卡和标签等,生产中可能会在同一个虚拟路由器上添加上百个VIP,不同的VIP分行隔开,不指定网卡时默认添加在eth0上,不设置子网掩码时默认为32位。在添加VIP地址时,需确保将要使用的VIP不存在,即还没被使用。

virtual_server

virtual_server模块用于虚拟服务器配置,将虚拟路由器中添加的VIP与后端real server对应起来,该模块包括以下内容:

  • virtual_server后面需要跟上VIP地址和端口,即客户端是通过哪一个VIP和哪个端口向后端服务器发起访问;
  • delay_loop:检查后端服务器的时间间隔;
  • lb_algo:可定义调度算法,如rr、wrr、lc、wlc、lblc、sh和dh等;
  • lb_kind:可定义集群的类型,如NAT、DR和TUN,注意要使用大写;
  • persistence_timeout:可设置持久连接时长;
  • protocol:可指定服务协议,如TCP、UDP和SCTP,一般使用TCP;
  • sorry_server:可设置当所有后端服务器都不可用时的备用服务器地址;
  • real_server:设置VIP所对应的后端服务器IP和端口,包括以下构成部分——
    a. weight可以设置对应后端服务器的权重
    b. SSL_GET、HTTP_GET、TCP_CHECK、SMTP_CHECK和MISC_CHECK等可以定义当前后端主机的健康状况检查方法
    c. connect_timeout表示客户端连接超时时长
    d. nb_get_retry表示重试次数
    e. delay_before_retry表示重试之前的延迟时长

你可能感兴趣的:(#,lvs,keepalived,负载均衡,流量负载均衡,网络负载均衡)