LVS负载均衡补充(keepalived)

在上一篇 快速理解LVS负载均衡 中, 快递公司使用 “快递小哥” 微信小程序实现了 业务的均衡负载之后, 成功优化了业务,使快递点得到最大化利用。

但是运营过程, 用户也反馈了,一些问题:
  1. 快递小哥 有时候打不开。【经过排查, 发现是服务器故障引起的】
  2. 偶尔有快递站点的无法提供服务,但还是分配快递过去了。【比如说:站点网络问题,停电等不可抗力】
针对上述两个问题, 领导决定做出以下几点优化
  1. 针对服务器故障问题, 增加备用服务器应对临时需求,故障发生时, 备用服务器可代替主服务器提供服务,主服务器修复成功以后, 备用服务器把业务转让主服务器
  2. 监控主服务器,故障出现, 自动切换(权重最高的)备用服务器
  3. 监控快递站点, 一旦发现无法提供服务的站点, 临时屏蔽
如图

在这里插入图片描述

在lvs中也有一个第三方应用做了上图的同样的事情, 这个应用的名字叫做:keepalived

几个知识点:
MDNS介绍
DNS报文格式解析(非常详细) MDNS报文相近,MDNS找不到,就看这个吧
keepalived配置说明(长期翻译更新。。。)
VRRP概述
最全面的IGMP协议总结!
keepalived高可用 比较专业的keepalived介绍
【linux下 安装man和man-pages, 执行 man 5 keepalived.conf 可查看英文文档】

DNS报文查询类型

类型助记符说明
1AIPv4地址
2NS名字服务器
5CNAME规范名称定义主机的正式名字的别名
6SOA开始授权标记一个区的开始
11WKS熟知服务定义主机提供的网络服务
12PTR指针把IP地址转化为域名
13HINFO主机信息给出主机使用的硬件和操作系统的表述
15MX邮件交换把邮件改变路由送到邮件服务器
28AAAAIPv6地址
252AXFR传送整个区的请求
255ANY对所有记录的请求

简单的做一下安装记录,

yum install keepalived ipvsadm -y
cd  /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
#配置完 keepalived.conf 启动keepalived 会自动完成 ipvsadm的部署
service keepalived restart
# 主 keepalived.conf
global_defs {
     notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   # vrrp_strict #严格执行VRRP协议规范,此模式不支持节点单播,引起vip问题的就是这个参数
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
	192.168.133.245/24 brd 192.168.133.255 dev ens33 label ens33:2
    }
}

virtual_server 192.168.133.245 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 0
    protocol TCP

    real_server 192.168.133.247 80 {
        weight 1
        HTTP_GET {
            url {
              path /xxxx.html
              status_code 200 
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}
# 备 keepalived.conf
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   # vrrp_strict #严格执行VRRP协议规范,此模式不支持节点单播,引起vip问题的就是这个参数
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state BACKUP  #主要配置区别
    interface ens33
    virtual_router_id 51
    priority 30   #主要配置区别
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
	192.168.133.245/24 brd 192.168.133.255 dev ens33 label ens33:2
    }
}

virtual_server 192.168.133.245 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 0
    protocol TCP

    real_server 192.168.133.247 80 {
        weight 1
        HTTP_GET {
            url {
              path /xxxx.html
              status_code 200 
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

再说一下 我对keeplived的工作方式的理解和一些疑问, 请了解的大神留言指正错误

实验环境
master 192.168.133.248
backup 192.168.133.243
real_server 192.168.133.247
virtual_ipaddress 192.168.133.245
测试实验流程

  1. 先启动 master, 观察master启动时的网络通信
  2. 再启动 backup, 观察backup启动时的网络通信
  3. kill掉 master, 观察backup启动时的网络通信
  1. 通过组播 224.0.0.22(协议IGMPV3)通告更改排除模式
    在这里插入图片描述
  2. 组播请求224.0.0.18(协议VRRP[虚拟路由冗余协议])(这么描述是否准确),携带 虚拟路由id 51, 权重100,验证密码 111,ip 192.168.133.245
    在这里插入图片描述
  3. 广播通告192.168.133.245,我不明白这步是询问能不能用245这个ip还是什么意思
    在这里插入图片描述
  4. 通过MDNS,发起两个问题, 名字分别是: 245.133.168.192.in-addr.arpa 和 linux-4.local. 并携带名称服务器区域(这个我不知道是干啥的)[ANY 对所有记录的请求]
    在这里插入图片描述
  5. 自己应答刚才的提问(分两个封包回答的):【提问了3次,但是HINFO只回了两次,PTR却回了3次】
    在这里插入图片描述
    HINFO 刷新主机信息,A 刷新ipv4地址,AAAA 刷新 ipv6地址,有效期都是2分钟
    在这里插入图片描述
    PTR 245.133.168.192.in-addr.arpa 刷新域名指针, 有效期2分钟, Domain Name是不是就是要缓存的值
  6. 当备机加入服务之后, 224.0.0.22(协议IGMPV3)通告更改排除模式。但后面没有任何封包处理,猜测是因为判断了 248通告的VRRP协议
    在这里插入图片描述
  7. 如果MATSER 宕机,间隔3秒钟,之后备机开始使用VRRP协议通告。奇怪的是,备机是不停的在通告,直到MATSER恢复(我猜测这是不是因为我配置问题导致的,确定是刚开始一定是有一个争抢过程的,而且奇怪的是243的权重是30,245的权重是50, 但是事实上243拿到了,并刷新mdns
    文档中对于这个字段的解释,我也不太理解:priority 100 # for electing MASTER, highest priority wins.to be MASTER, make this 50 more than on other machines.(我试着把245的权重提高到80或者改成10也依然如此)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值