lvs+Keepalived高可用集群

目录

一、LVS-DR模式结合keepalived配置:


总体思路图:

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

keepalived只能配lvs用么?

不是。keepalived不是专门为lvs集群服务的,也可以做其他代理服务器的高可用

lvs的高可用集群:主调度器和备调度器(可以有多个),正产中一般一主两备一主一备

工作方式:

主调度器能够正常运行时,有调度器进行后端RS的分配处理。其余的备用调度器都处在冗余状态,不参与集群的运转。

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

一旦主调度器恢复工作,继续由主调度器进行处理,备调度器又成为冗余状态

keepalived是基于VRRP协议实现lvs服务的高可用。解决了调度器单节点的故障问题。

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

VRRP的工作流程:

  1. 选举出主和备服务器:预先设定好了主和备的优先级。主的优先级较高,备的优先级低,一旦开启服务器,优先级高的会自动抢占主到的位置
  2. VRRP组播通信:组播通信地址224.0.0.18,VRRP协议当中的主备服务器通过组播地址224.0.0.18进行通信,交换主备服务器之间的运行状态。发送VRRP报文消息,以告知其他备服务器。主服务器现在的状态。
  3. 主备切换:主服务器发生了故障,或者不可达,VRRP协议会把请求转移到备服务器。通过组播地址,VRRP可以迅速的通知其他服务器发生了主备切换,确保新的主服务器可以正常的处理客户端的请求
  4. 故障恢复:一旦主服务器恢复通信,由组播地址进行通信,发现恢复的主服务器优先级更高,会抢占原主服务器的位置,成为主服务器,调度和接收请求。

一、LVS-DR模式结合keepalived配置:

主调度器:20.0.0.21

备调度器:20.0.0.22

RS1:20.0.0.23

RS2:20.0.0.24

vip:20.0.0.100

客户机:20.0.0.30

主调度器:

准备工作:安装软件,关闭防火墙,安装nginx

配置文件备份:

keepalived的体系模块:

全局模块:core模块,负责整个Keepalived启动加载和维护

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

check模块:负责健康检查,检查后端真实服务器的健康检查。配置在真实服务器的模块当中

指定的是DR模式

先将weight下面所有的内容先删除

real_server 对应RS

ipvsadm-save > /etc/sysconfig/ipvsadm

vim /etc/sysctl.conf

备用调度器:

远程复制过来上面配置的keepalived:

scp root@20.0.0.21:/etc/keepalived/keepalived.conf /etc/keepalived/

略微修改:

后端RS:

两边设置nginx静态页面

绑定到回环接口

内核优化,让vip地址禁止访问ARP请求

vim /etc/sysctl.conf

另一台RS一样操作:

客户机访问vip成功代表集群搭建成功

ip addr查看vip

接下来验证高可用:

模拟故障,关闭主调度器keepalived

验证备

再重启主,恢复主

脑裂:主备调度器之间同时拥有vip地址

keepalived脑裂:主和备同时拥有vip地址,在高可用系统中,联系两个节点的心跳线,本来是一体的,动作协调的高可用系统,心跳线断开之后,分裂成两个独立的个体。主备之间失去了联系,都以为是对方出现了故障。两个调度器,就像脑裂人一样开始抢占主的位置,抢占vip。主也有vip,备也有vip地址,导致整个集群失败。

解决方案:

  1. 软件层面:

配置文件错误

tcpdump抓包分析

重启keepalived服务,先启主再启备

  1. 网络层面:ping

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

  1. 硬件层面:

连接主备之间心跳线老化

网卡或者相关驱动失效

4、其他:

IP地址配置冲突

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

后端服务器的配置有问题,心跳方式不同、心跳广播冲突

软件bug

如何解决keepalived脑裂问题?

  1. 硬件配置:准备两条心跳线,这样断一条,依然能够传送心跳消息
  2. 设置防火墙,一定要让心跳的消息通过
  3. 依靠监控软件实时监测(zabbix)

环境:

dev开发环境,开发人员专用

sit:测试环境,测试人员(开发,运维)

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

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

nginx+keepalived实现nginx高可用

借助shell脚本检测本地nginx的状态

nginx:

nginx1:20.0.0.21主

nginx2:20.0.0.22备

nginx3:20.0.0.23客户端

防火墙关,打开nginx

安装keepalived,被封keepalived配置文件

备机scp远程复制keepalived改一下

id要改主备不能一致,BACKUP改,优先级改

两边shell脚本:

/opt/check_nginx.sh

做静态页面配置

重启keepalived

要先重启nginx再启keepalived

curl 20.0.0.100访问

模拟故障把主的nginx服务停了

ip addr看vip地址

访问curl 20.0.0.100

主恢复,nginx和keepalived都起来,若vip没过来 重启两次即可

总结:

keepalived:主要是为了实现调度器的主备高可用

工作方式:基于VRRP协议

  1. 确定主备
  2. vip地址只能有一个,出现在主服务上
  3. VRRP 224.0.0.18 组播地址,发送VRRP报文,检测主的状态
  4. 主备切换,主出现故障,vip地址会漂移到备服务器
  5. 主服务器恢复,vip地址要回到主
  6. 脑裂,主备都有vip

软件层面:检查配置文件,重启

keepalived不是只能和lvs搭配,也可以和其他服务配合(nginx、http),实现高可用

相关推荐
国际云,接待2 小时前
华为云 EVS 性能诊断:用 CES、ECS QoS 与 fio 定位 IOPS 和吞吐瓶颈
服务器
我要见SA姐13 小时前
告别 Copilot?Codex 本地化部署指南
运维·数据库·机器学习·oracle·回归
Elastic 中国社区官方博客4 小时前
列式存储并不等同于列式数据库。Columnar 模式为 Elasticsearch 带来了什么
大数据·运维·数据库·elasticsearch·搜索引擎
fengkai45454 小时前
八、Docker详解4-5
运维·docker
智恒百亿5 小时前
RTX 5090 八卡服务器 vs RTX PRO 6000 整机:AI 推理、微调与渲染选型部署指南
运维·服务器·rtx5090
ManageEngineITSM5 小时前
DevOps和ITIL是什么关系?是替代还是互补一文讲清
java·服务器·资产管理·变更管理
当下新鲜事6 小时前
车间实测记录:三菱电机MR-J5伺服与压力控制方案的场景适配
网络·物联网·业界资讯
码少女6 小时前
Linux--多路转接之select
java·服务器·数据库
门思科技6 小时前
开源网关有哪些:主流类型梳理
网络·python·物联网
蓝胖的四次元口袋7 小时前
Docker Compose多容器编排与Nginx集群实战
运维·nginx·docker compose