• Keepalived


    一、lvs+Keepalived(高可用集群)

    (一)Keepalived

    1、Keepalived:是为lvs运应而生的高可用服务,lvs的调度器无法做高可用,于是使用Keepalived这个软件,实现的是调度器的高可用。

    2、Keepalived不是专门为lvs集群服务的,也可以做其他代理服务器的高可用(重点)

    3、lvs的高可用集群:主调度器和备调度器(一主两备、一主一备)

    4、Keepalived基于VRRP协议实现lvs服务的高可用,解决了调度器单节点的故障问题

    5、工作方式:

    (1)主调度器能够正常运行时,由主调度器进行后端真实服务器的分配处理,其余的备用调度器处于冗余状态(不参与集群的运转)

    (2)主调度器出现故障无法运行时,备调度器才会承担主调度器的工作

    (3)一旦主调度器恢复工作,继续由主调度器进行处理,备调度器又成了冗余

    (二)VRRP协议

    1、VRRP协议:提高网络路由器的可靠性开发的一种协议

    2、工作原理:

    (1)选举出主和备(优先级),预先设定好了主和备的优先级。主的优先级较高,备的优先级较低。

    (2)一旦开启服务器,优先级高的会自动抢占主的位置

    (3)VRRP组播通信:224.0.0.18—组播地址。VRRP协议当中的主备服务器通过组播地址进行通信,交换主备服务器之间的运行状态,主服务会周期性的发送VRRP报文消息,以告知其他备服务器,主服务器现在的状态。

    (4)主备切换,主服务器发生故障,或者不可达,VRRP协议会把请求转移到备服务器。通过组播地址,VRRP可以迅速的通知其他服务器发生了主备切换,确保新的主服务器可以正常的处理客户端的请求

    (5)故障恢复:一旦主服务器恢复通信,由组播地址进行通信,发现恢复的主服务器优先级更高,会抢占原主服务器的位置,成为主服务器,调度和接受请求。

    (三)Keepalived的工作方式(基于ARRP协议)

    1、确定主备

    2、VIP地址只能有一个,出现在主调度器上

    3、VRRP通过组播地址(224.0.0.18)发送VRRP报文,检测主调度器的心跳(状态),备调度器处于冗余状态(不参与集群的运转)

    4、主备切换,主调度器出现故障,VIP地址会漂移到备调度器

    5、主调度器恢复,VIP地址要回到主调度器

    6、脑裂(主备都有VIP)

    (1)软件层面——检查配置文件,重启

    7、Keepalived不是只能和lvs搭配,也可以和其他服务配合,实现高可用

    (四)脑裂(重点):主和备同时拥有VIP地址

    1、脑裂的产生

    (1)在高可用系统当中,联系两个节点的心跳线,本来是一体的,动作协调的高可用系统

    (2)心跳线断开后,分裂成了两个独立的个体,主备之间失去了联系,都以为是对方出现了故障

    (3)两个调度器就像脑裂人一样,开始抢占主的位置,抢占VIP。主有VIP地址,备也有VIP地址,导致整个集群失败

    2、原因分析

    (1)软件层面

    ①配置文件问题——重启

    ②通过tcpdump抓包分析

    ③重启两边的服务,先重启主,查看ip复制;再重启备(一般是优先级配置问题)

    (2)网络层面(高可用服务器之间网络通信失败)——ping通不通

    高可用服务器之间心跳线检测失败、主备之间无法进行通信

    (3)硬件层面

    ①连接主备之间的心跳线老化

    ②网卡或者网卡的驱动失效

    ③IP地址配置冲突

    ④防火墙没有配置心跳线消息的传输通道,导致检测失败

    ⑤后端服务器的配置问题,心跳方式不同、心跳广播冲突、软件bug等等

    3、解决过程

    (1)硬件:准备两条心跳线,断了一条,依然能够传送心跳消息

    (2)设置防火墙一定要让心跳消息通过

    (3)依靠监控软件、实时监测(zabbix)

    二、lvs-DR模式+Keepalived

    当主调度器出现故障时,主服务器上的VIP地址会自动跳转至备调度器上

    Keepalived的体系模块

    1、全局模块(core模块):负责整个Keepalived的启动、加载和维护

    2、VRRP模块:实现VRRP协议,主备切换

    3、check模块:负责健康检查,检查节点服务器(后端真实服务器)的健康检查(配置在真实服务器的模块当中

    (二)配置lvs-DR模式+Keepalived

    1、配置主调度器

    (1)内置优化

    2、配置备调度器(远程复制)

    3、配置后端真实服务器

    (1)编辑访问页面

    (2)基于回环接口创建虚拟网卡

    (3)把VIP地址绑定到lo:0,作为lvs的VIP地址。起到标识的作用,告诉调度器,进行转发请求的IP地址寻址

    (4)修改内核参数

    web2操作同上

    4、测试

    5、验证高可用:主备是否可以切换

    (1)关闭主调度器

    (2)主调度器恢复

    6、验证节点服务器失效,再恢复,可以重新加入集群

    (1)关闭后端服务器

    2恢复后端服务器

    7、修改负载均衡算法

    (1)修改VIP的调度算法:ipvsadm -E -t 192.168.233.100:80 -s wrr

    (2)修改策略的轮询权重:ipvsadm -e -t 192.168.233.100:80 -r 192.168.233.20:80 -w 3

    三、生产中的环境(补充)

    (一)dev(开发环境):开发人员专用

    (二)sit(测试环境):测试人员专用(开发、运维)

    (三)pre(预生产环境):一般是运维和开发使用,和最终的生产环境要保持一致

    (四)prd(最终的生产环境):面向用户的最终环境

    四、nginx+Keepalived(借助脚本,检测本地nginx服务状态

    nginx1和nginx1:做主和备

    nginx1:20.0.0.11

    nginx2:20.0.0.12

    客户端:20.0.0.10

    (一)配置主服务器

    1、编辑Keepalived的配置文件

    2、编写脚本

    如果本地访问失败,返回非0,然后stop Keepalived

    3、编辑访问页面

    (三)配置备服务器

    1、编辑Keepalived的配置文件

    2、编写脚本

    3、编辑访问页面

    (四)测试

    (五)模拟主服务器故障

    1、主服务器故障

    2、恢复主服务器

  • 相关阅读:
    论文笔记: 度量学习之 ITML (理解ing)
    消费与储蓄的决定-中国视角下的宏观经济
    过来人ETC Coop喊话宝二爷:分叉以太坊没那么简单
    C++和C#程序语言的区别
    看雪2W课-NDK开发详解 java反射思维和NDK开发 课时3
    Cannot resolve symbol ‘springframework‘ 问题的解决方法
    JavaScript的内置类
    Airbnb的动态kubernetes集群扩缩容
    ROS安装应用程序
    C语言的5个内存段你了解吗?( 代码段/数据段/栈/堆)
  • 原文地址:https://blog.csdn.net/weixin_48145965/article/details/134015913