当前位置:首页 > 尘凡 > 正文内容

详解keepalived配置和使用

满纸空言1年前 (2023-03-08)尘凡39670

转自:https://blog.51cto.com/johnnyfang/5419017

 

    keepalived是VRRP协议(Virtual Router Redundancy Protocol,虚拟路由冗余协议)的软件实现,其原生目的是为了高可用ipvs服务,它具有如下功能功能:

    ①基于VRRP协议完成地址流动;

    ②为VIP地址所在的节点生成ipvs规则(在配置文件中预先定义好);

    ③为ipvs集群的各个real server做健康性检查;

    ④基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以支持HAProxy和Nginx等服务。

编译安装keepalived2.2.4
    keepalived官方最新版为2.2.7,目前Rocky8系列直接通过yum安装的keepalived为2.1.5版本,也算是比较新的版本,不过keepalived版本更新算是比较快的,且很多企业使用的主机还没进行升级或替换,笔者先通过源码编译方式安装keepalived。

1.1 安装依赖包

    编译安装前先解决依赖问题,keepalived依赖包包括gcc、openssl-devel、libnl3-devel和net-snmp-devel四个。

1.2 获取源码并解压

    keepalived源码可通过官网下载(下载选择界面:​ ​https://www.keepalived.org/download.html​​),笔者选择的是2.2.4版本,下载完毕解压至指定文件夹。

1.3 编译安装

    进入到解压目录后,执行configure脚本生成Makefile文件,keepalived执行configure脚本时不用添加太多的选项,直接指定安装目录,同时要记得加上--disable-fwmark选项禁止生成iptables规则,否则安装完成后会自动生成iptables规则导致VIP无法访问。如果是通过yum安装的keepalived服务,也要将配置文件中的vrrp_strict一行注释掉。

    生成Makefile文件后,执行make && make install命令进行编译和安装。

1.4 查看相关文件

    编译安装完成后,可通过-v选项查看keepalived版本信息,包括编译参数、配置文件参数和系统参数等。

    大多数服务在编译安装后都要手动创建或者拷贝生成service文件,而keepalived编译安装完成后会自动生成。

    查看keepalived帮助时,会有很多的选项可以设置,如果感觉哪些很重要,可以添加到安装路径下的etc/sysconfig/keepalived文件中,后期启动keepalived服务时会自动加载这些选项。

 

1.5 拷贝生成配置文件

    此时如果启动keepalived会报错,查看日志时提示是缺少了配置文件,并且配置文件的默认路径为/etc/keepalived/。

    在安装环节,安装路径下的etc/keepalived/目录中有个自动生成的keepalived.conf配置文件,可以直接拷贝到按指定要求创建的/etc/keepalived/目录下作为服务配置文件。

1.6 启动keepalived服务

    此时我们已经可以成功启动keepalived服务,查看状态也是显示running的。

    查看主机ip时会发现多出了三个地址,即配置文件中默认添加的三个VIP地址,而且也能ping通。如果是执行configure脚本环节未添加--disable-fwmark选项,或者yum安装未注释配置文件中vrrp_strict一行是无法ping通的。在部分Linux主机中,即使修改配置文件并重启服务也无法ping通,需要执行killall keepalived命令杀死进程后重新启动服务。

详解keepalived配置和使用
    keepalived配置文件为/etc/keepalived/keepalived.conf,主要由global_defs、vrrp_instance和virtual_server三个模块构成。

2.1 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时可不加此项。

2.2 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不存在,即还没被使用。

2.3 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表示重试之前的延迟时长

扫描二维码推送至手机访问。

版权声明:本文由满纸空言发布,如需转载请注明出处。

本文链接:https://mzky.cc/post/125.html

标签: keepalived+lvs
分享给朋友:

“详解keepalived配置和使用” 的相关文章

setfacl命令3年前 (2021-04-21)
uos编译njmon3年前 (2021-07-21)

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。