LVS高可用

问题:

lvs单点故障:

因为是单点的,lvs挂了后边整个服务都访问不到;整个业务下线;

RS健康状态检查:

node01挂了,node02没挂。其中一部分请求负载到node01上,一部分请求异常连接不上,因为lvs还存在RS的负载记录,lvs分发时就不像node01分发数据包;

解决问题:

lvs单点故障:

  • 它是1个,那就让它变成多个;lvs01不能用lvs02还能用;

  • lvs变多了VIP不能每个lvs都配;

  • 2个思路:
    1、主备(主机上有VIP,备机上没有VIP):主挂了备机快速接管VIP接收数据包分发;
    2、主主:动态DNS;

    • 主备:
      • 方向性:
      1. 主动访问主健康状态:备机定时轮询去访问主机健康状态;接收心跳包和数据包会增加压力;
      2. 被动接收主健康状态:定点发送广播包通告给备机,收到广播包说明主还活着;
      • 效率性:
      1. 权重值:主机挂掉后,备机都亮出自己的权重值,备机都知道其他备机的权重值,谁的权重值最大谁就是主,使用的推让制选主(官方验证耗时200ms);

RS健康状态:

  • 如何确定一个应用服务是否好的:
    1. ping:是不行的,因为ping是网络层命令,连tcp传输控制那一层都没到,更别说应用层了!
      在这里插入图片描述
    2. 访问一下看看,底层:验证的是应用层的http协议;发请求判断返回code=200OK返回成功;

keepalived第三方用户空间应用程序(高可用HA工具)

理论知识

代替人自动运维,解决lvs、nginx等单点故障,实现HA;

  1. 监控自己的lvs服务
  2. master通告自己还活着;备机监听master状态,master挂了备机推举出新master;
  3. 配置:
    1. VIP,
    2. 添加ipvs模块的配置:keepalived是由配置文件的,
    3. 监控自己的lvs服务,
    4. 对RS做健康检查:如果RS挂了lvs剔除挂了的RS负载条目不向它负载;

只有主的VIP挂了备才有会VIP;
在每台lvs服务器都要装keepalived,来决定谁有VIP谁来接收通信,RS配置不变;
lvs服务器之前手动配置的lvs配置先清除掉,因为keepalived会有配置文件会自动配置lvs;

搭建keepalived

  • keepalived可以替代lvs操作ipvs内核模块,所以可以不装lvs;

安装keeplived

yum install keepalived ipvsadm -y

配置

在这里插入图片描述

  1. 进入keeplived目录
  2. 备份配置文件
  3. 修改配置文件
配置文件解读
global_defs:全局配置;
  • 配置邮件,keeplived有问题发送邮件通知;
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
  #注释下行否则ping 不通
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

(配置VIP)vrrp_instance VI_1:虚拟路由冗余协议(谁激活了谁是主,但是备机上也要有能力让自己有vip,因为主挂了备机就能马上有VIP,也叫做IP漂移,整个这个事情叫做:虚拟路由冗余协议)

下面帮助文档介绍了配置说明怎么写

  • state:lvs的主备状态;主机花10万,备机买便宜点几万;
  • interface:广播健康状态用的哪块网卡;服务器会有多个网卡,其中一块网卡坏了其他网卡还可以通信;
  • virtual_router_id:虚拟路由id;一个物理网络有多个keeplived集群,每个集群id要区分开归属哪个集群;相当于家门牌号不能回别人家;一群keeplived都应该是同一个id,不能别的id过来加入我的集群;
  • priority:权重值;长兄为父的原则,主机挂了后备机数值越大的就是主;
  • authentication:权限认证,防止别人进入我的网络;
  • virtual_ipaddress:就是VIP;数据应该走哪块网卡都是在这定义的;
node01的vip配置:MASTER
vrrp_instance VI_1 {
	#主机设置master
    state MASTER
    #监听网卡设置
    interface ens33
    #虚拟路由ID 保持主从配置相同
    virtual_router_id 51
    #权重主的大于从的
    priority 100
    advert_int 1
    #主备同样配置
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #虚拟IP设置
    virtual_ipaddress {
        192.168.16.100/24 dev ens33 label ens33:2
    }
}

node04的vip配置:BACKUP、权重50
	#vrrp_strict
    state BACKUP
    priority 50
(配置路由规则)virtual_server:虚拟服务;

添加TCP协议的负载到VIP的负载规则;

  • lb_algo:轮询方式:rr;
  • lb_kind:路由模型:NET、DR、TUN;
  • nat_mask:掩码
  • persistence_timeout:初始化_超时;负载参照;
    在第一次断开连接的时间段内,再次访问默认负载到上次建立连接的RS,为了避免重复浪费线程重复开辟资源,访问过第二次请求有缓存这个用户资源就可以直接拿来用了;
  • protocol:数据包协议;
  • url:给keeplived单独写个页面查询写动态信息,确认后端服务是好的,做健康检测;
  • connect_timeout:连接超时时间;
  • nb_get_retry:重试次数
  • delay_before_retry:重试次数
virtual_server 102.168.16.100 80 {
    delay_loop 3
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 0
    protocol TCP

    real_server 192.168.16.11 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }   
    real_server 192.168.16.12 80 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }

}

远程拷贝配置文件到备机
scp /etc/keeplived.conf root@192.168.16.13:/etc/keeplived.conf
# 简写:当前路径、主机、当前路径变量;
scp ./keeplived.conf root@192.168.16.13:`pwd`/keeplived.conf

在这里插入图片描述

启动keeplived

  • VIP主有备没有;备机配出来是为了主挂了,备机立马就能用速度最快,可以实时负载;
    在这里插入图片描述
  • 内核模块主备都有;
    在这里插入图片描述

测试keeplived

  • 访问VIP查看是否可以负载;
  • ipvsadm -lnc偷窥负载数据包
  • 验证HA:因为lvs没有太多数据同步的事情,所以可以把master抢回来
    1. 主网卡down掉,备机立马就有VIP;VIP就从主ip飘逸到备机;
      ifconfig eth0 down
      
    2. 访问VIPipvsadm -lnc偷窥可以看到新主负载数据包;
    3. 过了几分钟主修好了,VIP会立马飘逸回来;因为权重高抢回了主;
      ifconfig eth0 up
      
    4. 偷窥记录本就跑到了master上,备机上就没记录了;
    5. RS-node02服务挂了,keepliced健康检查lvs的路由条目就会把node02剔除;备机同样做健康检查也会踢掉;
    6. RS-node02服务修好了,keepliced健康检查lvs的路由条目就会把node02自动加回来;
安装man帮助文档

man可以看系统的帮助文档,也可以看应用程序的帮助文档;

  • 安装man命令首先登陆系统看看man有没有安装,如图输入man提示找不到 就是没有安装的
    在这里插入图片描述
  • 查看keeplived的帮助文档;
    一共有8类,应用程序查看5类;
    man 5 keepalived.conf
    
    • 查找virtual_ipaddress查看帮助文档在这里插入图片描述
    • 查找SSL_GET查看帮助文档
      在这里插入图片描述

keeplived问题

应用程序突然异常退出

  • VIP未收回;
  • 内核配置也未收回;
  • keeplived本身还死了;
    不会通告备机自己还活着,所以备机网卡也会出现VIP;
    结论
    • 互联网数据包混乱,不确定去了哪个lvs,出现原子性;
    • 为了解决单点问题引入1个新技术,结果这个新技术本身自己还不可靠;

最终:把keeplived换成zk集群,利用分布式协调集群可以解决这个事,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值