前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >keepalived与LVS实现高可用

keepalived与LVS实现高可用

作者头像
菲宇
发布2022-12-21 18:22:11
2630
发布2022-12-21 18:22:11
举报
文章被收录于专栏:菲宇菲宇

背景介绍

通过前面的介绍了解到LVS其实是工作在netfilter框架input链上的一组规则,而LVS本身无法实现高可用和对realserver的健康状态检测,keepalived为了解决上述2点问题而诞生,同时keepalived还可以直接在配置文件里设置LVS规则,而不需要再单独设置。在配置高可用之前需要提前做2个准备:

1.需要进行高可用的服务器指向相同的NTP服务器,保证时间的一致性

2.可以相互间进行名称解析,推荐使用/etc/hosts文件进行

实验环境

本次实验使用4台CentOS6.8虚拟机组成,其中2台为director,2台为WebServer,拓扑结构如下图所示:

7bab908f6a7b9dc001885740c845961c.png
7bab908f6a7b9dc001885740c845961c.png

操作步骤

1.2台web服务器上安装httpd服务,便于区分将设置不同的主页面(略)

2.设置2台web服务器的arp_ignore和arp_announce参数,可以通过脚本

#!/bin/sh

case $1 in

   start)

        echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

        echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

        echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

        echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

        ;;

    stop)

        echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore

        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore

        echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce

        echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce

        ;;

    *)

        echo "Wrong Arguments"

        ;;

esac

3.将vip地址设置到web服务器的lo接口上

ip addr add 172.16.10.50/32 dev lo

4.给2台direcotr安装keepalived和ipvsadm软件包(略)

5.编辑keepalived配置文件,设置LVS规则和keepalived角色(后文介绍)

6.启动keepalived服务,查看vip地址是否正常添加,ipvs策略是否生成,至此操作完成。

ip addr list

ipvsadm -Ln

keepalived配置文件说明

全局配置段:

可以设置接收邮件的账号(工作场景常以监控软件实现),其中router_id是设备名称,名称不需要唯一,可以使用主机名

代码语言:javascript
复制
global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id lvs2
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

脚本配置段:

该配置段是一个独立的配置段,配置文件中默认并没有这一段,加入这一段的目的是如果后期keepalived服务器需要升级人为切换服务器角色时可以手动在相应目录下创建一个down文件,使他的权重-20,此处注意:判断为假时(echo $?值为1)才会执行weight -20

代码语言:javascript
复制
vrrp_script chk_mt {
      script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
      interval 1
      weight -20
}

vrrp实例配置段:

同一vrrp实例名称保持一致,虚拟路由id必须保持一致,tarck_script是调用上面定义的脚本配置段

9fa027f86e869889540b1c2a9f8cfb08.png
9fa027f86e869889540b1c2a9f8cfb08.png

LVS规则配置段:

virltual_server    #设置vip地址和端口

delay_loop    #RS恢复服务后延迟上线的时间,单位为妙

lb_algo    #调度策略,支持rr|wrr|lc|wlc|lblc|sh|dh

lb_kind    #LVS转发模式,此处是DR模型

keepalived只支持TCP协议

e4d1cff48ac28148380c840fa365e665.png
e4d1cff48ac28148380c840fa365e665.png

HTTP_GET    #健康监测,同时还支持SSL_GET

status_code    #状态码检测,判断RS服务器是否正常

5abc09ff84c9723aa44013db31275c91.png
5abc09ff84c9723aa44013db31275c91.png

遗留问题

1.只使用LVS时,vip地址可以设置在director的lo接口上,结合keepalived后vrrp实例设置在lo接口上IP地址和IPVS规则无法生效,设置在eth0接口上恢复正常

2.当前vip地址生效director自己无法正常使用curl命令通过vip获取到页面,另一个director使用curl命令通过vip可以正常获取到页面,2个director交换角色后依然如此

http://www.keepalived.org/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档