keepalived配置文件详解

keepalived配置文件分为三个部分:全局配置(Globals configurations)、vrrp配置(VRRP configuration)、 LVS配置(LVS configuration),针对这三部分对keepalived配置文件进行解析。

1、全局配置

全局配置分为2个子块:Global definitions与Static routes。

(1)、Global definitions

主要要是配置故障发生时的通知对象以及机器标识

global_defs{

notification_email {

<EMAIL ADDRESS>

<EMAIL ADDRESS>

...

}

notification_email_from <EMAILADDRESS>

smtp_server <IP ADDRESS>

smtp_connect_timeout <INTEGER>

router_id <STRING>

}

notification_email:接收告警通知的邮箱,可以设置多个。

notification_email_fromemail:告警邮件从那个邮箱发出。

smtp_server:发送告警邮件的SMTP服务器地址。

smtp_connect_timeout:连接SMTP服务器超时时间。

router_id: #运行keepalived的机器的路由标识,主备机一致。

(2)、Static addresses

static_ipaddress和static_routes用来给服务器配置静态的IP地址/路由。如果你的机器上已经配置了IP和路由,那么这两个区域可以不用配置。

一般情况下你的机器都会有IP地址和路由信息的,因此没必要再在这两个区域配置。

语法如下:

static_ipaddress{

<IP ADDRESS>/<MASK> brd <IPADDRESS> dev <STRING> scope <SCOPE>

<IP ADDRESS>/<MASK> brd <IPADDRESS> dev <STRING> scope <SCOPE>

}

static_routes{

src <IP ADDRESS> [to] <IPADDRESS>/<MASK> via|gw <IP ADDRESS> dev <STRING> scope<SCOPE> table <TABLE-ID> # to is optional

src <IP ADDRESS> [to] <IPADDRESS>/<MASK> via|gw <IP ADDRESS> dev <STRING> scope<SCOPE> table <TABLE-ID> # to is optional

src <IP ADDRESS> [to] <IPADDRESS>/<MASK> via|gw <IP ADDRESS> or <IP ADDRESS> dev<STRING> scope <SCOPE> table <TABLE-ID> # will use multipathroute

blackhole <IP ADDRESS>[/<MASK>]

}

备注:以上两部份中的SCOPE可以指定的值为:site、link、host、nowhere、global。

如下为静态地址与静态路由配置示例:

示例1:

static_ipaddress{

192.168.200.16 dev eth0 scope link

192.168.200.17 dev eth1 scope link

192.168.200.18 dev eth2

}

示例2:

static_routes{

src 192.168.100.1 192.168.209.0/24 via192.168.200.254 dev eth0

192.168.210.0/24 via 192.168.200.254 deveth0

192.168.211.0/24 via 192.168.200.254 deveth0

192.168.212.0/24 dev eth3 scope site

192.168.213.0/24 dev eth1 scope link

}

2、VRRP配置

VRRP configuration配置是keepalive实现HA部分重要内容,同样也分为VRRP scripts、VRRP synchronization group、VRRP instance三个子块实现。

(1)、VRRP scripts

vrrp_script <STRING> {          # vrrp_script与track_script结合使用,<STRING>与track_script中<STRING>值设置为相同。

script <QUOTED_STRING>     #监控脚本或者监控命令。

interval<INTEGER>          #脚本运行时间间隔。

weight <INTEGER:-254..254> #设置weight值,取值范围-254-254。keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。

fall <INTEGER>              #运行失败指定次数后发生切换。

rise <INTEGER>              #运行成功指定次数后不发生切换。

}

(2)、VRRP synchronization group

vrrp_rsync_group用来定义vrrp_intance组,使得这个组内成员动作一致。举个例子来说明其功能:两个vrrp_instance同属于一个vrrp_rsync_group,那么其中一个vrrp_instance发生故障切换时,另一个vrrp_instance也会跟着切换(即使这个instance没有发生故障)。

vrrp_sync_group <STRING>{ #vrrp_sync_group组名。

group {

<STRING>      #指定加入vrrp_sync_group组的VRRP_Instance。

<STRING>

}

notify_master <STRING>|<QUOTED-STRING> #表示切换为master时所执行的脚本。

notify_backup <STRING>|<QUOTED-STRING> #表示切换为backup时所执行的脚本。

notify_fault <STRING>|<QUOTED-STRING>  #表示切换为fault时所执行的脚本。

notify <STRING>|<QUOTED-STRING>        #表示任何一状态切换时都会调用该脚本,并且该脚本在以上三个脚本执行完成之后进行调用,keepalived会自动传递4个参数。

$1 = A stringindicating whether it's a "GROUP" or an "INSTANCE"

$2 = The name of said groupor instance

$3 = The state it'stransitioning to ("MASTER", "BACKUP" or "FAULT")

$4 = The priorityvalue

$1 and $3 are ALWAYSsent in uppercase, and the possible strings sent are the

same ones listed above("GROUP"/"INSTANCE", "MASTER"/"BACKUP"/"FAULT").

smtp_alert  #使用global_defs里面定义的邮件地址和smtp服务器在切换后发送邮件通知。

}

(3)、VRRP instance

vrrp_instance用来定义对外提供服务的VIP区域及其相关属性。

常用参数说明:

use_vmac:使用VRRP的虚拟MAC地址。

state MASTER|BACKUP:设置节点状态。keepalived启动时会将priority比较大的节点选举为MASTER。

interface <STRING>:用于HA检测与对外提供服务的网络的接口。

track_interface :监控指定的网卡,如果任何一个不通就会切换到FALT状态。

track_script:与vrrp_script参数一同使用,设定监控服务的脚本,<STRING>与vrrp_script参数中的名称相同。

mcast_src_ip :发送多播包的地址,如果不设置,默认使用绑定的网卡的primary IP。

dont_track_primary:忽略vrrp的interface错误,默认不设置。

lvs_sync_daemon_interface <STRING>:负载均衡器之间的监控接口,类似于HA HeartBeat的心跳线。但它的机制优于Heartbeat,因为它没有“裂脑”这个问题,它是以优先级这个机制来规避这个麻烦的。.

garp_master_delay <INTEGER>:当切为主状态后多久更新ARP缓存,默认为5秒。

virtual_router_id <INTEGER-0..255>:虚拟路由标识,主机与备机保持一致。

priority <INTEGER-0..255>:优先级,主机与备机必须不同。

advert_int <INTEGER>:同步通知间隔,MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位为秒。

authentication {

auth_type PASS|AH:认证类型为PASS或AH,推荐使用PASS,主备必须使用相同认证方式及密码才可以通信。

auth_pass<STRING>:设置认证密码。密码最多8位。

}

virtual_ipaddress:漂移地址设置,可以设置多个。

virtual_routes : 虚拟路由,当IP漂过来之后需要添加的路由信息。

nopreempt:功能类似于heartbeat的auto_failback,设置不自动切回,该参数只能设置在state为backup的服务器上,且优先权必须高于其他节点的服务器上。

preempt_delay: 抢占延时,默认为0。

notify_master <STRING>|<QUOTED-STRING>:与vrrp_sync_group中相同。

notify_backup <STRING>|<QUOTED-STRING>:与vrrp_sync_group中相同。

notify_fault <STRING>|<QUOTED-STRING>: 与vrrp_sync_group中相同。

notify_stop <STRING>|<QUOTED-STRING>:  停止vrrp时,执行指定的脚本。

notify <STRING>|<QUOTED-STRING>:       与vrrp_sync_group中相同。

smtp_alert:与vrrp_sync_group中相同。

3、LVS配置

LVS的配置包括2部分:虚拟主机组(virtual server group)和虚拟主机(virtual server)。虚拟主机组一般用不到,这里不介绍。以下为虚拟主机常用参数介绍。

virtual_server<IP ADDRESS> <PORT> {     # 虚拟服务器设置标识,指定虚拟ip与端口,ip地址与端口号之间用空格隔开。

delay_loop <INTEGER>                # 延迟轮询时间

lvs_sched rr|wrr|lc|wlc|lblc|sh|dh  # LVS调度算法

ops                 #Apply One-Packet-Scheduling (only for UDP),不常用。

lvs_method NAT|DR|TUN               # LVS调度类型

persistence_timeout <INTEGER>       # 会话保持时间,单位为秒。

persistence_granularity <NETMASK>   # 此选项是配合persistence_timeout,后面跟的值是子网掩码,表示持久连接的粒度。

protocol TCP                        # 指定协议

ha_suspend                          #节点状态从MASTER到BACKUP状态切换时,暂不启用real_server健康检查。

virtualhost <STRING>                # HTTP_GET做健康检查时,检查的Web服务器的虚拟主机。

sorry_server <IP ADDRESS><PORT>     # 备用机,所有的real server失效后启用。

 real_server健康检查方法有HTTP_GET|SSL_GET、TCP_CHECK、SMTP_CHECK、MISC_CHECK多种,以下分别做以介绍如何使用。

real_server <IP ADDRESS> <PORT> {  # 定义realserver

weight <INTEGER>    # 用来配置real server节点的权值,数字越大权值越高。默认为1,0为失效。

inhibit_on_failure  # 服务器健康检查失败时,将其weight设置为0,而不是直接从IPVS里面删除。

notify_up <STRING>|<QUOTED-STRING>   # 在检测到real server节点服务up状态后执行脚本。

notify_down<STRING>|<QUOTED-STRING>  # 在检测到real server节点服务down状态后执行脚本。

HTTP_GET|SSL_GET {

url {               # HTTP/SSL检查的URL,这里可以指定多个URL。

path <STRING>     # 详细的URL路径。

digest <STRING>       # SSL检查后的摘要信息。

status_code <INTEGER> # HTTP检查的返回状态码,一般为200.

}

url {

path <STRING>

digest <STRING>

status_code <INTEGER>

}

connect_ip <IP ADDRESS> # 健康检查连接的ip地址,如果不指定默认为realserver指定的IP。

connect_port <PORT>     # 健康检查的端口,如果不指定默认为real server指定的端口。

bindto <IP ADDRESS>     # 如果本机有多个网卡配置多个地址,那么通过此地址来发送请求对服务进行健康检查。

bind_port <PORT>        # 通过本机此端口来发送请求对服务进行健康检查。

connect_timeout <INTEGER>   # 连接超时时间

fwmark <INTEGER>        # fwmark to set on socket (SO_MARK)

nb_get_retry <INTEGER>  # 重试次数。

delay_before_retry <INTEGER> # 重试间隔时间(秒)。

warmup <INTEGER>        # 如果后端有众多realserver时,如果按精确时间发送检测报文,可能会造成本机的网络堵塞,因此可以使用warmup 指定一个时间,表示将发送检测报文的精确时间差开一点的时间,以免造成本机堵塞。

}

}

real_server <IP ADDRESS> <PORT>{   # 同上

weight <INTEGER>        # 同上

inhibit_on_failure      # 同上

notify_up<STRING>|<QUOTED-STRING> # 同上

notify_down<STRING>|<QUOTED-STRING> # 同上

TCP_CHECK {

connect_ip <IP ADDRESS> # IPaddress to connect

connect_port <PORT>     # TCP port to connect

bindto <IP ADDRESS>     # IP address to bind to

bind_port <PORT>        # TCP port to bind to

connect_timeout<INTEGER>   # Timeout connection

fwmark <INTEGER>        # fwmark to set on socket (SO_MARK)

warmup <INTEGER>        # random delay for maximum N seconds

}

}

real_server <IP ADDRESS> <PORT>{   # 同上

weight <INTEGER>               # 同上

inhibit_on_failure             # 同上

notify_up<STRING>|<QUOTED-STRING>   # 同上

notify_down<STRING>|<QUOTED-STRING> # 同上

SMTP_CHECK {

connect_ip <IP ADDRESS>     #Optional IP address to connect to

connect_port <PORT>         # Optional port to connect to

bindto <IP ADDRESS>         # Optional interface to use tooriginate the connection

bind_port <PORT>            # Optional source port to originatethe connection from

connect_timeout<INTEGER>   # Optional per-hostconnection timeout.

fwmark <INTEGER>          # Optional fwmark to mark alloutgoing checker pakets with

host {                      # Optional additional host/port to check

connect_ip <IP ADDRESS> #IP address to connect

connect_port <PORT>     # TCP port to connect

bindto <IP ADDRESS>     # IP address to bind to

bind_port <PORT>        # TCP port to bind to

connect_timeout<INTEGER>   # Timeout connection

fwmark <INTEGER>        # fwmark to set on socket (SO_MARK)

}

host {

connect_ip <IP ADDRESS> #IP address to connect

connect_port <PORT>     # TCP port to connect

bindto <IP ADDRESS>     # IP address to bind to

bind_port <PORT>        # TCP port to bind to

connect_timeout<INTEGER>   # Timeout connection

fwmark <INTEGER>        # fwmark to set on socket (SO_MARK)

}

connect_timeout<INTEGER>  # Connection andread/write timeout

warmup <INTEGER>        # random delay for maximum N seconds

retry <INTEGER>             # Number of times to retry afailed check

delay_before_retry <INTEGER># Delay in seconds before retrying

helo_name<STRING>|<QUOTED-STRING> # Host to use for the HELO request

}

}

real_server <IP ADDRESS> <PORT>{   # 同上

weight <INTEGER>               # 同上

inhibit_on_failure             # 同上

notify_up<STRING>|<QUOTED-STRING>   # 同上

notify_down <STRING>|<QUOTED-STRING># 同上

MISC_CHECK {

misc_path<STRING>|<QUOTED-STRING>  # 外部执行脚本。

misc_timeout <INTEGER>      # 脚本执行超时时间。

warmup <INTEGER>        # random delay for maximum N seconds

# If set, exit code from healthcheckeris used

# to dynamically adjust the weightas follows:

#  exit status 0: svc check success, weight

#     unchanged.

#  exit status 1: svc check failed.

#  exit status 2-255: svc check success, weight

#     changed to 2 less than exit status.

#  (for example: exit status of 255 would set

#     weight to 253)

misc_dynamic

}

}

}

转载于:https://blog.51cto.com/369day/1729528

keepalived配置文件详解   ​相关推荐

  1. Keepalived配置文件详解

    keepalived keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障. keepalived工作原理 keepalived是以VRRP( ...

  2. keepalived安装及配置文件详解

    一.安装Keepalived服务 两种安装方式: (1)yum方式安装 yum -y install keepalived# 查看安装路径 rpm -ql keepalived (2)源码安装 1)安 ...

  3. keepalived配置文件keepalived.conf详解

    keepalived.conf详解 一个功能比较完整的常用的 keepalived 配置文件,主要包含以下三块 第2行全局定义块是必须配置项, 一,全局定义块 这部分主要用来设置Keepalived的 ...

  4. mybatis mysql 配置文件_Mybatis配置文件详解(4)

    本次主要来了解: MyBatis数据库配置文件SqlMapConfig.xml SQL映射配置中输入映射的配置 SQL映射配置中输出映射的配置 SQL映射配置中动态SQL语句的配置 1. SqlMap ...

  5. MyBatis复习笔记2:配置文件详解

    配置文件详解 属性(properties) MyBatis可以使用 properties 来引入外部 properties 配置文件的内容 resource:引入类路径下的资源 url:引入网络路径或 ...

  6. vuecli 编译后部署_基于vue-cli 打包时抽离项目相关配置文件详解

    前言:当使用vue-cli进行开发时时常需要动态配置一些设置,比如接口的请求地址(axios.defaults.baseURL),这些设置可能需要在项目编译后再进行设置的,所以在vue-cli里我们需 ...

  7. (转) SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解

    springboot采纳了建立生产就绪spring应用程序的观点. Spring Boot优先于配置的惯例,旨在让您尽快启动和运行.在一般情况下,我们不需要做太多的配置就能够让spring boot正 ...

  8. CENTOS7 高性能Linux集群 通过yum进行 haproxy配置 !安装 !使用!HAProxy配置文件详解

    Haproxy配置 永久修改名字:便于区分虚拟机! Haproxy:hostnamectl set-hostname haproxy Web1: hostnamectl set-hostname WE ...

  9. 用户管理 之 用户(User)和用户组(Group)配置文件详解

    作者:北南南北 来自:LinuxSir.Org 摘要:本文详解用户(User)和用户组(Group)的配置文件,本文是<Linux 用户(User)和用户组(Group)管理概述>文档的关 ...

最新文章

  1. 美多商城之用户中心(用户基本信息)
  2. 某天没有数据能查出来0数量_用Excel对纽约市出租车费数据探索性分析
  3. linux虚拟机如何加网卡,linux虚拟机添加新的网卡
  4. OpenGL Shader基本概念
  5. 大数据系列2-liunx基础-2基本操作
  6. JAVA面向对象中继承子父类构造函数-子类的实例化过程-图解
  7. Marquee首尾相连不间断移动 开始完全显示
  8. 马云:中国企业不缺创新缺管理思想
  9. 启用或禁用笔记本自带键盘
  10. 计算机网络教程第5版-第1章计算机网络概述
  11. C语言循环结构作业总结
  12. 51 个漂亮的电子商务网站设计分享
  13. 2022年免费企业邮箱大全,用免费邮箱发邮件安全吗?
  14. 163个人邮箱如何注册申请?vip邮箱有哪些优点?
  15. 使用纯JavaCV实现颜色分割 / 轮廓提取 / 离焦 / 线性旋转变焦模糊 / 灰度化 / 标注等处理
  16. P1456 Monkey King
  17. matlab解常微分方程
  18. 基于嵌入式的密码访问的门锁系统
  19. 如何翻译Word文档?这几种方法很好用
  20. 利用卡口数据绘制断面基本图——Python交通数据分析

热门文章

  1. Android应用开发SharedPreferences存储数据的使用方法
  2. SpringMVC响应的方式,无数据跳转页面,带数据跳转页面.Json数据返回
  3. 良好的JavaScript编码风格(语法规则)
  4. mmap内存映射学习笔记
  5. [AHOI2008] 紧急集合
  6. 怎样在wp7中检测“主题背景”
  7. Linux文件目录及其作用
  8. springboot动态加载native类库
  9. Python之上下文管理协议
  10. linux上安装mysql5.7