我是靠谱客的博主 听话发箍,最近开发中收集的这篇文章主要介绍keepalived.conf配置文件介绍一、 基本说明二、 配置文件结构三、 全局配置块四、 VRRPD 实例配置块五、 LVS 配置块六、VRRP script,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、 基本说明

keepalived.conf是配置文件,其中描述所有的 Keepalived 关键字。
关键字需要放置在含有等级结构的块和子块中,每一层都由成对的大括号 {
} 组成。

注释使用 #! , 它们可放在一行的开头, 也可以放在一行中的任何地方,直到一行的结尾,都会被看做注释。

关键字 include允许包含其他配置文件, 就行 Nginx 的配置文件一样。

下面的配置说明中的参数语法:

  • on | off | true | false | yes | no 之一
  • 是以秒为单位的时间值,包括小数秒,例如2.71828或3;计时器的分辨率是微
    秒。

二、 配置文件结构

Keepalived 配置文件围绕一组配置块进行连接。
每个块都针对特定功能,并有专门的守护进程。

! Configuration File for keepalived

global_defs {
    全局配置块
}

vrrp_instance VI_1 {
    vrrpd 实例配置块, 可以配置多个
}

virtual_server 192.168.200.100 443 {
    LVS 配置块, 可以配置多个
}

三、 全局配置块

global_defs {
   notification_email {
     # 接收通知邮件的电子邮箱账户列表
     # 注意发送邮件需要本机开启邮件服务,目前一般企业不用这种方式
     # 而是使用 zabbix 等监控实现
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   # 指定发件人,这将会显示在发送的邮件中
   notification_email_from Alexandre.Cassen@firewall.loc
  
   # 用于发送邮件通知的SMTP服务器
   smtp_server 127.0.0.1
   
   # 指定SMTP流处理的超时时间
   smtp_connect_timeout 30
   
   # 标识机器的字符串(不必是主机名)。
   router_id LVS_DEVEL
   
   # 检查收到的VRRP 组播中的所有地址可能很耗时。 
   # 设置此标志意味着,如果组播与先前收到的组播来自同一主路由器,则不会进行检查。
   vrrp_skip_check_adv_addr
   
   # 强制严格遵守VRRP协议。 这将禁止:
   #0 VIP
   #单播对等
   #VRRP版本2中的IPv6地址
   vrrp_strict
   
   vrrp_garp_interval 0.001
   vrrp_gna_interval 0.000001
}

四、 VRRPD 实例配置块

配置示例

vrrp_instance VI_1 { # 实例名称, 所有机器应保持一致
    # 此 keepalived 的角色,在一组 keepalived 中只允许有一个 MASTER
    # 其他的应该设置为 BACKUP.
    # 实际上,一旦其他机器启动,将举行一次选举,
    # 并且具有最高优先级的计算机将成为MASTER。
    # 因此,这里的条目并不重要,只是有利于可读性。
    state MASTER
    
    # 绑定 vrrp 的内部接口,用于发送心跳信息(组播信息,地址是:224.0.0.18)
    interface eth0
    
    # 从1到255的任意唯一数字
    # 用于区分在同一NIC(并因此使用的同一套接字)上运行的vrrpd的多个实例
    # 同一个集群中的每个调度器上应该设置为一致
    virtual_router_id 51
    
    # 优先级,用于选举 MASTER
    # 要想成为 MASTER, 使其比其他机器多50
    priority 100
   # VRRP 组播通告间隔,单位是秒(例如0.92)。
    advert_int 1
   #  认证信息,所有的机器上应该一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    # VIP 地址,会随着角色转换而改变,VIP 总是在 MASTER 上被绑定。
    # 所有的机器应设置为一样的内容
    virtual_ipaddress {
        192.168.122.100
    }
    
    notify_master /path_to_script/script_master.sh
        (or notify_master “ /path_to_script/script_master.sh <arg_list>)
    notify_backup /path_to_script/script_backup.sh
        (or notify_backup “ /path_to_script/script_backup.sh <arg_list>)
    notify_fault /path_to_script/script_fault.sh
        (or notify_fault “ /path_to_script/script_fault.sh <arg_list>)
}

配置项参考

关键字定义类型
vrrp_instance标识VRRP实例定义块Block
state在标准使用中指定实例状态
interface指定实例运行所要用到的网络接口string
mcast_src_ip指定VRRP通告的IP头的源地址
lvs_sync_daemon_inteface指定LVS sync_daemon运行所要用到的网络接口string
virtual_router_id指定实例所属的VRRP路由器IDnumerical
priority指定实例在VRRP路由器中的优先级numerical
advert_int以秒为单位指定通告的间隔时间(设置为1)numerical
smtp_alert激活MASTER状态转换的SMTP通知
authentication标识VRRP认证定义块Block
auth_type指定要使用哪种身份认证(PASSAH)
auth_pass指定要使用的密码字符串string
virtual_ipaddress标识VRRP VIP定义块Block
virtual_ipaddress_excluded标识VRRP VIP排除定义块Block
notify_master指定在切换到master时要执行的脚本path
notify_backup指定在切换到backup时要执行的脚本path
notify_fault指定在切换到故障状态时要执行的脚本path

五、 LVS 配置块

假如使用 Keepalived + LVS 应该设置这一部分,假如高可用针对的不是 LVS,则不需要设置此部分。

virtual_server 192.168.122.100 80 {    #LVS配置
	delay_loop 6   #健康检查rs时间间隔
	lb_algo rr     #LVS调度算法
	lb_kind DR     #LVS集群模式(路由模式)
	protocol TCP      #健康检查使用的协议
	real_server 192.168.122.10 80 {
		weight 1
		inhibit_on_failure   #当该节点失败时,把权重设置为0,而不是从IPVS中删除
		TCP_CHECK {          #健康检查
			connect_port 80   #检查的端口
			connect_timeout 3  #连接超时的时间, 单位为: 秒
			}
		}
	real_server 192.168.122.20 80 {
		weight 1
		inhibit_on_failure
		TCP_CHECK {
			connect_timeout 3
			connect_port 80
			}
		}
}


# LVS 的 VIP,要和 virtual_ipaddress 中值一致
virtual_server 192.168.122.100 443 {
    delay_loop 6                # 检查 RS 的轮询间隔,单位秒
    lvs_sched rr                  # LVS 调度算法
    lvs_method DR                  # LVS 的工作模式,默认 NAT
    persistence_timeout 50      # LVS持久性超时(以秒为单位),默认为6分钟
    protocol TCP                # 健康检查使用的协议 
 
    real_server 192.168.122.10 443 {
        # 权重
        weight 1
        
        # Healthchecker检测到故障时将权重设置为0,默认配置文件中没有
        inhibit_on_failure
        
        SSL_GET {
            url {
              path /

              digest ff20ad2481f97b1754ef3e12ecd3a9cc
            }
            url {
              path /mrtg/
              digest 9b3a0c85a887a256d6939da88aabd8cd
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

关键字定义类型
virtual_server标识虚拟服务器定义块Block
fwmark指定虚拟服务器是FWMARK
delay_loop以秒为单位指定检查之间的间隔时间numerical
lb_algo选择一个特定的调度程序(rrwrr
lb_kind选择一个特定的转发方法(NATDR
persistence_timeout为持久连接指定超时时间numerical
persistence_granularity为持久连接指定粒度掩码
virtualhost指定用于HTTPSSL_GET的虚拟主机
protocol指定协议类型(TCPUDP)
sorry_server当所有真实服务器都宕掉时添加到池中的服务器
real_server指定一个真实服务器成员
weight为真实服务器指定负载均衡的权重numerical
TCP_CHECK使用TCP连接检查真实服务器的可用性
MISC_CHECK使用用户定义的脚本检查真实服务器的可用性
misc_path标识要运行脚本的完整路径path
HTTP_GET使用HTTP GET请求检查真实服务器的可用性
SSL_GET使用HTTPS GET请求检查真实服务器的可用性
url标识url定义块Block
path指定url路径alphanum
digest指定特定url路径的摘要alphanum
connect_port指定连接远程服务器的TCP端口numerical
connect_timeout指定连接远程服务器的超时时间numerical
retry最大重试次数numerical
delay_before_retry两次连续重试之间的延迟numerical

类型“path”指的是被调用脚本的完整路径。对于需要参数的脚本,路径和参数必须用双引号括起来。

六、VRRP script

vrrp_script 关键字用于设置检查脚本,主要是检查 keepalived 程序自身是否正常,比如是否正常向 224.0.0.18 发送组播,可以防止脑裂。 此配置块是独立的,也就是说它是顶级配置块,需要顶满格写。注意:需要至少有一个实例配置使用此脚本,此脚本才会运行。

track_script 用于添加一个跟踪脚本到 VRRP 实例中,这个脚本就是 vrrp_script 配置块中定义的,用于监控 VRRP 实例是否正常。

1 vrrp_script

vrrp_script <SCRIPT_NAME> {
           #要执行的脚本的路径, 假如有参数,使用双引号引起来 quoted 是双引号的意思
           script <STRING> | <QUOTED-STRING>

           # 脚本调用之间的秒数(默认值:1秒)
           interval <INTEGER>

           # 多少秒后,脚本被视为执行失败
           timeout <INTEGER>

           #通过此权重调整优先级,(默认值:0)
           #有关反转的描述,请参见track_script。
           #'weight 0 reverse' 将在脚本启动时导致vrrp实例关闭,反之亦然。。
           weight <INTEGER:-253..253> [reverse]

           #进行OK转换所需的成功次数
           rise <INTEGER>

           #KO转换所需的成功次数
           fall <INTEGER>

           #用这里设置的用户名和组执行此脚本。
           #组默认为用户组
           user USERNAME [GROUPNAME]

           #假设脚本最初处于失败状态
           init_fail
       }

该脚本将每隔秒执行一次。

默认权重等于0,这意味着在脚本连续失败后,任何监视脚本的VRRP实例都将转换为故障状态。
此后,连续成功将导致VRRP实例退出故障状态,除非由于它们正在跟踪的其他脚本或接口而使它们也处于故障状态。

2 track_script

vrrp_instance <STRING> {
     ...略...
	 track_script {
	     <SCRIPT_NAME>
	 }
}

<SCRIPT_NAME> 是 vrrp_script 配置块中的名称,例如:

vrrp_script check_nginx{
 ...
}

track_script`<SCRIPT_NAME> 的值应该是 `check_nginx

最后

以上就是听话发箍为你收集整理的keepalived.conf配置文件介绍一、 基本说明二、 配置文件结构三、 全局配置块四、 VRRPD 实例配置块五、 LVS 配置块六、VRRP script的全部内容,希望文章能够帮你解决keepalived.conf配置文件介绍一、 基本说明二、 配置文件结构三、 全局配置块四、 VRRPD 实例配置块五、 LVS 配置块六、VRRP script所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部