本文转载自:https://blog.csdn.net/weixin_42256765/article/details/103223793感谢分享

keepalived 原理及配置介绍

什么是 Keepalived 呢,keepalived 观其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生,Keepalived 通过请求一个 vip 来达到请求真是 IP 地址的功能,而 VIP 能够在一台机器发生故障时候,自动漂移到另外一台机器上,从来达到了高可用 HA 功能。那说到 keepalived 时不得不说的一个协议就是 VRRP 协议,可以说这个协议就是 keepalived 实现的基础,那么首先我们来看看 VRRP 协议;

VRRP 协议

网络在设计的时候必须考虑到冗余容灾,包括线路冗余,设备冗余等,防止网络存在单点故障,那在路由器或三层交换机处实现冗余就显得尤为重要,在网络里面有个协议就是来做这事的,这个协议就是 VRRP 协议,Keepalived 就是巧用 VRRP 协议来实现高可用性 (HA) 的 VRRP 协议。

Keepalived 配置文件详解

1.global_defs 全局配置

notification_email:指定当 keepalived 出现问题时,发送邮件给哪些用户。

notification_emai_from:发送邮件时,邮件的来源地址。

smtp_server <DOMAIN|IP> [PORT]:smtp 服务器的地址或域名。默认端口为 25, 如:smtp_server smtp.felix.com 25

smtp_helo_name <HOST_NAME>:指定在 HELO 消息中所使用的名称。默认为本地主机名。

smtp_connect_timeout:指定 smtp 服务器连接的超时时间。单位是秒。

router_id:指定标识该机器的 route_id. 如:route_id LVS_01

vrrp_mcast_group4 224.0.0.18:指定发送 VRRP 组播消息使用的 IPV4 组播地址。默认是224.0.0.18

vrrp_mcast_group6 ff02::12 指定发送 VRRP 组播消息所使用的 IPV6 组播地址。默认是ff02::12

default_interface eth0:设置静态地址默认绑定的端口。默认是 eth0。

lvs_sync_daemon <VRRP_INSTANCE> [id <SYNC_ID>] [maxlen ] [port ] [ttl ] [group ] 设置 LVS 同步服务的相关内容。可以同步 LVS 的状态信息。

INTERFACE:指定同步服务绑定的接口。

VRRP_INSTANCE:指定同步服务绑定的 VRRP 实例。

id <SYNC_ID>:指定同步服务所使用的 SYNCID,只有相同的 SYNCID 才会同步。范围是0-255.

maxlen:指定数据包的最大长度。范围是 1-65507

port:指定同步所使用的 UDP 端口。

group:指定组播 IP 地址。

lvs_flush:在 keepalived 启动时,刷新所有已经存在的 LVS 配置。

vrrp_garp_master_delay 10:当转换为 MASTER 状态时,延迟多少秒发送第二组的免费 ARP。默认为 5s,0 表示不发送第二组免的免费 ARP。

vrrp_garp_master_repeat 1:当转换为 MASTER 状态时,在一组中一次发送的免费 ARP 数量。默认是 5.

vrrp_garp_lower_prio_delay 10:当 MASTER 收到更低优先级的通告时,延迟多少秒发送第二组的免费 ARP。

vrrp_garp_lower_prio_repeat 1:当 MASTER 收到更低优先级的通告时,在一组中一次发送的免费 ARP 数量。

vrrp_garp_master_refresh 60:当 keepalived 成为 MASTER 以后,刷新免费 ARP 的最小时间间隔(会再次发送免费 ARP)。默认是 0,表示不会刷新。

vrrp_garp_master_refresh_repeat 2: 当 keepalived 成为 MASTER 以后,每次刷新会发送多少个免费 ARP。默认是 1.

vrrp_garp_interval 0.001:在一个接口发送的两个免费 ARP 之间的延迟。可以精确到毫秒级。默认是 0.

vrrp_lower_prio_no_advert true|false:默认是 false。如果收到低优先级的通告,不发送任何通告。

vrrp_version 2|3:设置默认的 VRRP 版本。默认是 2.

vrrp_check_unicast_src:在单播模式中,开启对 VRRP 数据包的源地址做检查,源地址必须是单播邻居之一。

vrrp_skip_check_adv_addr:默认是不跳过检查。检查收到的 VRRP 通告中的所有地址可能会比较耗时,设置此命令的意思是,如果通告与接收的上一个通告来自相同的 master 路由器,则不执行检查(跳过检查)。

vrrp_strict:严格遵守 VRRP 协议。下列情况将会阻止启动 Keepalived:1. 没有 VIP 地址。2. 单播邻居。3. 在 VRRP 版本 2 中有 IPv6 地址。

vrrp_iptables:不添加任何 iptables 规则。默认是添加 iptables 规则的。
如果 vrrp 进程或 check 进程超时,可以用下面的 4 个选项。可以使处于 BACKUP 状态的 VRRP 实例变成 MASTER 状态,即使 MASTER 实例依然在运行。因为 MASTER 或 BACKUP 系统比较慢,不能及时处理 VRRP 数据包。

vrrp_priority <-20 – 19>:设置 VRRP 进程的优先级。

checker_priority <-20 – 19>:设置 checker 进程的优先级。

vrrp_no_swap:vrrp 进程不能够被交换。

checker_no_swap:checker 进程不能够被交换。

script_user [groupname]:设置运行脚本默认用户和组。如果没有指定,则默认用户为 keepalived_script (需要该用户存在),否则为 root 用户。默认 groupname 同 username。

enable_script_security:如果脚本路径的任一部分对于非 root 用户来说,都具有可写权限,则不会以 root 身份运行脚本。

nopreempt 默认是抢占模式 要是用非抢占式的就加上 nopreempt;

vrrp_script

scrip “/path/to/somewhere”:指定要执行的脚本的路径。

interval :指定脚本执行的间隔。单位是秒。默认为1s。

timeout :指定在多少秒后,脚本被认为执行失败。

weight <-254 — 254>:调整优先级。默认为2.

如果脚本执行成功(退出状态码为 0),weight 大于 0,则 priority 增加。
如果脚本执行失败(退出状态码为非 0),weight 小于0,则 priority 减少。
其他情况下,priority 不变。
rise :执行成功多少次才认为是成功。

fall :执行失败多少次才认为失败。

user [GROUPNAME]:运行脚本的用户和组。

init_fail:假设脚本初始状态是失败状态。

vrrp_sync_group

notify_master /path/to_master.sh [username [groupname]]
作用:当成为 MASTER 时,以指定的用户和组执行脚本。

notify_backup /path/to_backup.sh [username [groupname]]
作用:当成为 BACKUP 时,以指定的用户和组执行脚本。

notify_fault “/path/fault.sh VG_1” [username [groupname]]
作用:当该同步组 Fault 时,以指定的用户和组执行脚本。

notify /path/notify.sh [username [groupname]]
作用:在任何状态都会以指定的用户和组执行脚本。
说明:该脚本会在 notify_* 脚本后执行。

notify 可以使用 3 个参数,如下:
a. 可以是 GROUP 或 INTANCE,表明后面是组还是实例.
b. 组名或实例名。
c. 转换后的目标状态。有:MASTER、BACKUP、FAULT。

smtp_alert:当状态发生改变时,发送邮件。

global_tracking:所有的 VRRP 实例共享相同的 tracking 配置。

vrrp_instance

state MASTER|BACKUP:指定该 keepalived 节点的初始状态。

interface eth0:vrrp 实例绑定的接口,用于发送 VRRP 包。

use_vmac [VMAC_INTERFACE]:在指定的接口产生一个子接口,如 vrrp.51,该接口的 MAC 地址为组播地址,通过该接口向外发送和接收 VRRP 包。

vmac_xmit_base:通过基本接口向外发送和接收 VRRP 数据包,而不是通过 VMAC 接口。

native_ipv6:强制 VRRP 实例使用 IPV6.(当同时配置了 IPV4 和 IPV6 的时候)

dont_track_primary:忽略 VRRP 接口的错误,默认是没有配置的。

mcast_src_ip :指定发送组播数据包的源 IP 地址。默认是绑定 VRRP 实例的接口的主 IP 地址。

unicast_src_ip :指定发送单薄数据包的源 IP 地址。默认是绑定 VRRP 实例的接口的主 IP 地址。

version 2|3:指定该实例所使用的 VRRP 版本。

virtual_router_id 51:指定 VRRP 实例 ID,范围是 0-255.

priority 100:指定优先级,优先级高的将成为 MASTER。

advert_int 1:指定发送 VRRP 通告的间隔。单位是秒。

nopreempt:设置为不抢占。默认是抢占的,当高优先级的机器恢复后,会抢占低优先级的机器成为 MASTER,而不抢占,则允许低优先级的机器继续成为 MASTER,即使高优先级的机器已经上线。如果要使用这个功能,则初始化状态必须为 BACKUP。

preempt_delay:设置抢占延迟。单位是秒,范围是 0—1000,默认是 0. 发现低优先级的 MASTER 后多少秒开始抢占。

通知脚本:

notify_master | [username [groupname]]
notify_backup | [username [groupname]]
notify_fault | [username [groupname]]
notify | [username [groupname]]
当停止 VRRP 时执行的脚本。

notify_stop | [username [groupname]]
smtp_alert

virtual_server

virtual_server IP Port | virtual_server fwmark int | virtual_server group string {delay_loop <INT>:健康检查的时间间隔。lb_argo rr|wrr|lc|wlc|lblc|sh|dh:LVS 调度算法。lb_kind NAT|DR|TUN:LVS 模式。persistence_timeout 360:持久化超时时间,单位是秒。默认是6分钟。persistence_granularity:持久化连接的颗粒度。protocol TCP|UDP|SCTP:4 层协议。ha_suspend:如果virtual server 的 IP 地址没有设置,则不进行后端服务器的健康检查。virtualhost <STRING>:为 HTTP_GET 和 SSL_GET 执行要检查的虚拟主机。如virtualhost www.felix.comsorry_server <IPADDR> <PORT>:添加一个备用服务器。当所有的 RS 都故障时。sorry_server_inhibit:将inhibit_on_failure 指令应用于 sorry_server 指令。alpha:在 keepalived 启动时,假设所有的 RS 都是 down,以及健康检查是失败的。有助于防止 启动时的误报。默认是禁用的。omega:在 keepalived 终止时,会执行 quorum_down 指令所定义的脚本。quorum <INT>:默认值 1. 所有的存活的服务器的总的最小权重。quorum_up <STRING>:当 quorum 增长到满足 quorum 所定义的值时,执行该脚本。quorum_down <STRING>:当 quorum 减少到不满足 quorum 所定义的值时,执行该脚本。}

real_server

real_server IP Port {weight <INT>:给服务器指定权重。默认是 1.inhibit_on_failure:当服务器健康检查失败时,将其 weight 设置为 0,而不是从 Virtual Server 中移除。notify_up <STRING>:当服务器健康检查成功时,执行的脚本。notify_down <STRING>:当服务器健康检查失败时,执行的脚本。uthreshold <INT>:到这台服务器的最大连接数。lthreshold <INT>:到这台服务器的最小连接数。
}

Real_server 中的健康检查

HTTP_GET | SSL_GET {url {path <STRING>:指定要检查的 URL 的路径。如 path / or path /mrtg2digest <STRING>:摘要。计算方式:genhash -s 172.17.100.1 -p 80 -u /index.status_code <INT>:状态码。}nb_get_retry <INT>:get 尝试次数。delay_before_retry <INT>:在尝试之前延迟多长时间。connect_ip <IP ADDRESS>:连接的 IP 地址。默认是 real server 的 ip 地址。connect_port <PORT>:连接的端口。默认是 real server 的端口。bindto <IP ADDRESS>:发起连接的接口的地址。bind_port <PORT>:发起连接的源端口。connect_timeout <INT>:连接超时时间。默认是 5s。fwmark <INTEGER>:使用 fwmark 对所有出去的检查数据包进行标记。warmup <INT>:指定一个随机延迟,最大为 N 秒。可防止网络阻塞。如果为 0,则关闭该功能。}
TCP_CHECK {connect_ip <IP ADDRESS>:连接的 IP 地址。默认是 real server 的 ip 地址。connect_port <PORT>:连接的端口。默认是 real server 的端口。bindto <IP ADDRESS>:发起连接的接口的地址。bind_port <PORT>:发起连接的源端口。connect_timeout <INT>:连接超时时间。默认是 5s。fwmark <INTEGER>:使用 fwmark 对所有出去的检查数据包进行标记。warmup <INT>:指定一个随机延迟,最大为 N 秒。可防止网络阻塞。如果为 0,则关闭该功能。retry <INIT>:重试次数。默认是 1 次。delay_before_retry <INT>:默认是 1 秒。在重试之前延迟多少秒。}
SMTP_CHECK {connect_ip <IP ADDRESS>:连接的 IP 地址。默认是 real server 的 ip 地址。connect_port <PORT>:连接的端口。默认是 real server 的端口。 默认是 25 端口bindto <IP ADDRESS>:发起连接的接口的地址。bind_port <PORT>:发起连接的源端口。connect_timeout <INT>:连接超时时间。默认是 5s。fwmark <INTEGER>:使用 fwmark 对所有出去的检查数据包进行标记。warmup <INT>:指定一个随机延迟,最大为 N 秒。可防止网络阻塞。如果为 0,则关闭该功能。retry <INT>:重试次数。delay_before_retry <INT>:在重试之前延迟多少秒。helo_name <STRING>:用于 SMTP HELO 请求的字符串。}
DNS_CHECK {connect_ip <IP ADDRESS>:连接的 IP 地址。默认是 real server 的 ip 地址。connect_port <PORT>:连接的端口。默认是 real server 的端口。 默认是 25 端口bindto <IP ADDRESS>:发起连接的接口的地址。bind_port <PORT>:发起连接的源端口。connect_timeout <INT>:连接超时时间。默认是 5s。fwmark <INTEGER>:使用 fwmark 对所有出去的检查数据包进行标记。warmup <INT>:指定一个随机延迟,最大为 N 秒。可防止网络阻塞。如果为 0,则关闭该功能。retry <INT>:重试次数。默认是 3 次。type <STRING>:DNS query type。A/NS/CNAME/SOA/MX/TXT/AAAAname <STRING>:DNS 查询的域名。默认是(.)
}
MISC_CHECK {misc_path <STRING>:外部的脚本或程序路径。misc_timeout <INT>:脚本执行超时时间。user USERNAME [GROUPNAME]:指定运行该脚本的用户和组。如果没有指定 GROUPNAME,则 GROUPNAME 同 USERNAME。misc_dynamic:根据退出状态码动态调整权重。0,健康检查成功,权重不变。1,健康检查失败。2-255,健康检查成功。权重设置为退出状态码减去 2.如退出状态码是 250,则权重调整为248warmup <INT>:指定一个随机延迟,最大为 N 秒。可防止网络阻塞。如果为 0,则关闭该功能。
}

linux keepalived配置参数详解相关推荐

  1. linux下网卡参数配置,linux网卡配置参数详解!

    文章也是我需要改网卡配置参数时网上搜来的,记录下来是为了让自己养成随手整理工作素材的习惯. Linux网卡配置文件详解: DEVICE=eth0 #指出设备名称 NM_CONTROLLED=yes # ...

  2. ELK详解(二十五)——elastalert配置参数详解

    今天继续给大家介绍Linux运维相关知识,本文主要内容是elastalert的配置参数详解. 一.配置文件参数详解 首先,我们来讲解一下elastalert的配置文件中的常用参数: 1.ES集群相关参 ...

  3. Equinox OSGi系列之三 Equinox配置参数详解

    1.概述 上文我们对Equinox OSGi运行环境的组成及搭建过程做了详细讲述.本文主要对Equinox OSGi运行环境的可配置参数及其作用加以介绍,从而使用户在实际使用过程中可以对Equinox ...

  4. Linux网卡配置文件-参数详解

    Linux网卡配置文件-参数详解 DEVICE=eth0 #指出网卡名称比如这个是eth0 NM_CONTROLLED=yes #network mamager的参数,实时生效,不需要重启,表示是否受 ...

  5. Linux top命令参数详解

    Linux top命令参数详解 生产环境系统运行慢,出现无法响应通常原因主要还在于分析CPU.内存.磁盘使用率情况,并结合命令查找出具体进程,并在进程中进一步分析主要因子情况,渗透到对于其中包含线程占 ...

  6. Rsync配置参数详解-什么是Rsync

    1.什么是Rsync-Rsync配置参数详解 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的"R ...

  7. Ehcache配置参数详解

    ehcache配置参数详解 <?xml version="1.0" encoding="UTF-8"?><ehcache><dis ...

  8. nginx下gzip配置参数详解

    这篇文章主要介绍了nginx下gzip配置参数详解,本文同时给出了配置例子,以及一些注意事项,需要的朋友可以参考下 Nginx自带的有gzip模块 http://wiki.nginx.org/Ngin ...

  9. build.gradle配置参数详解

    转载地址:http://blog.csdn.net/baidu_31093133/article/details/51860637 build.gradle配置参数详解//声明是Android程序ap ...

最新文章

  1. linux刷新指定URL脚本,【图片】linux下crontab定时执行本地脚本和定时访问指定url【不要牧师吧】_百度贴吧...
  2. 20155204 2016-2017-2 《Java程序设计》第3周学习总结
  3. 可溶于水的机器人见过吗?明胶和糖3D打印而成,现登Science子刊封面
  4. 1、MySQL约束概述
  5. python数据统计代码_Python 数据的累加与统计的示例代码
  6. java 深入了解DTO及如何使用DTO
  7. LeetCode 133. 克隆图(图的BFS/DFS)
  8. PTA-6-3 使用函数的选择法排序 (25分)(C语言)
  9. sybase不支持的条件表达式_包教包会!7段代码带你玩转Python条件语句(附代码)...
  10. 类别动态绑定到TreeView控件
  11. Ubuntu做Tomcat服务:insserv: warning: script 'tomcat' missing LSB tags and overrides
  12. FPGA学习记录(7)<巴特沃斯低通IIR滤波器FPGA实现>
  13. 南师大GIS考研数据库2018年第三题
  14. 查看ftp服务器里的文件,查看ftp服务器所有文件
  15. FastStone注册码
  16. java call_求问java代码中的call是什么意思?
  17. 平面设计中的网格系统pdf_实例讲解:平面设计中的网格系统,怎么用?
  18. 【bzoj 3339】Rmq Problem 【bzoj 3585】mex(可持久化线段树)
  19. 谈谈“老鼠找毒水“和“猪找毒水”问题
  20. 再访洪小文:AI,誓不作恶

热门文章

  1. java中play方法的两个参数_如何避免在play2中到处传递参数?
  2. 垃圾回收中的分代年龄
  3. 2023前端二面高频vue面试题集锦
  4. WorkNC机床碰撞检测(变化角度)
  5. 一小时人生服务器维护,一小时人生诅咒是干嘛的
  6. 直接用TXT文档写HTML编码出现中文乱码问题
  7. Producer 性能调优公式及验证
  8. CC2530的定时/计数器原理与应用
  9. Unity读取Excel文件
  10. 总结些生活和工作的感悟,给可能需要的人