LVS+Keepalived高可用集群部署

一、高可用群集(HA)的作用

企业应用中,单台服务器承担应用存在单点故障的危险,单点故障一旦发生,企业服务将发生中断,造成极大的危害。

高可用集群是由一台主调度器和一台或多台备用调度器。在主调度器能够正常运转时,由主调度器进行节点服务器业务的分配处理,其余备用调度器处于待机状态,不参与当前的集群运转。当主调度器出现故障无法运转时,此时备用调度器会由优先级最高的调度承担主调度器的工作,而出现故障的主调调度器便会退出当前工作,由人工维修后返回集群。这样可避免因调度器瘫痪业务中断的风险,所以实现了真正的高可用的效果

一个合格的集群应该具备的特点:

  1. 负载均衡 用于提高集群的性能 LVS Nginx HAProxy SLB F5
  2. 健康检查 针对调度器和节点服务器 keepalived Heartbeat
  3. 故障转移 通过VIP漂移实现主备切换

健康检查 (探针)常用的工作方式

  1. 发送心跳消息 vrrp报文 ping/pong
  2. Tcp端口检查 向目标主机的IP:PORT 发起tcp连接请求
  3. HTTP URL检查

二、keepalived方案

1、keepalived简介

Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。是专为LVS和HA设计的一款健康检查工具。
支故障自动切换 (Failover)
支持节点健康状态检查 (Health Checking)

可以判断 LVS 负载调度器、节点服务器的可用性,当 master 主机出现故障及时切换到backup 节点保证业务正常,当 master故障主机恢复后将其重新加入群集并且业务重新切换回 master 节点。

2、Keepalived实现原理

Keepalived是基于vrrp实现的高可用方案

默认情况下通过优先级决定主备服务器的角色,主服务器会通过IP命令在本地生成VIP,接受并处理客户端发送的请求消息,同时还会定时发送VRRP报文给备服务器,告知主服务器的存活状态,当主服务器异常时,备服务器会接管VIP继续提供服务,保证服务的高可用。

Keepalived体系主要模块及其作用:
keepalived体系架构中主要有三个模块,分别是core、check和vrrp。
●core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
●vrrp模块:是来实现VRRP协议的。(调度器之间的健康检查和主备切换)
●check模块:负责健康检查,常见的方式有端口检查及URL检查。(节点服务器的健康检查)

3、抢占式keepalived实验

(1)安装keepalived

yum install -y keepalived

(2)修改配置文件

master服务器配置

backup服务器配置

(3)启动keepalived

复制代码
[root@localhost keepalived]# systemctl start keepalived.service
[root@localhost keepalived]# systemctl enable keepalived.service
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.

查看master地址,此时VIP不在此服务器上

查看backup的ip地址,此时VIP不在此服务器上

停止master的keepalived,此时VIP不在此服务器上,备用服务器backup变为主服务器

4、非抢占式keepalived实验

原mster服务器修改配置文件,之后停止keepalived服务

backup配置,之后停止keepalived服务

此时谁先启动keepalived服务谁即为主服务器

总结:
Keepalived首先做初始化先检查state状态,master为主服务器,backup为备服务器。
然后再对比所有服务器的priority,谁的优先级高谁是最终的主服务器。
优先级高的服务器会通过ip命令为自己的电脑配置一个提前定义好的浮动IP地址。

keepalived的抢占与非抢占模式:
抢占模式即MASTER从故障中恢复后,会将VIP从BACKUP节点中抢占过来。非抢占模式即MASTER恢复后不抢占BACKUP升级为MASTER后的VIP
非抢占式俩节点state必须为bakcup,且必须配置nopreempt。
注意:这样配置后,我们要注意启动服务的顺序,优先启动的获取master权限,与优先级没有关系了。

三、LVS+KeepAlived高可用负载均衡集群的部署

部署前的准备

主DR 服务器:192.168.10.14

备DR 服务器:192.168.10.104

Web 服务器1:192.168.10.11

Web 服务器2:192.168.10.12

NFS服务器: 192.168.10.13

vip:192.168.10.100

NFS服务器配置

(具体操作在上一章)

web端配置

(两个配置一样)

主DR 服务器

192.168.10.14

yum install -y keepalived

yum install -y keepalived

复制代码
[root@localhost ~]# modprobe ip_vs
[root@localhost ~]# touch /etc/sysconfig/ipvsadm
[root@localhost ~]# systemctl enable --now ipvsadm
Created symlink from /etc/systemd/system/multi-user.target.wants/ipvsadm.service to /usr/lib/systemd/system/ipvsadm.service.

备DR 服务器

192.168.10.104

yum install -y keepalived

yum install -y keepalived

复制代码
[root@localhost ~]# modprobe ip_vs
[root@localhost ~]# lsmod | grep ip_vs
ip_vs_rr               12600  3 
ip_vs                 145458  5 ip_vs_rr
nf_conntrack          139264  1 ip_vs
libcrc32c              12644  3 xfs,ip_vs,nf_conntrack
[root@localhost ~]# touch /etc/sysconfig/ipvsadm
[root@localhost ~]# systemctl start ipvsadm
[root@localhost ~]# systemctl enable ipvsadm
Created symlink from /etc/systemd/system/multi-user.target.wants/ipvsadm.service to /usr/lib/systemd/system/ipvsadm.service.
[root@localhost ~]# systemctl status ipvsadm

测试

systemctl start keepalived.service

此时删除一个服务器,依然可以进行访问

相关推荐
Madison-No77 分钟前
搭建项目测试环境
linux·运维·服务器·python
+VX:Fegn089522 分钟前
计算机毕业设计|基于springboot + vue蛋糕店管理系统(源码+数据库+文档)
前端·数据库·vue.js·spring boot·课程设计
悠悠121382 小时前
微服务通信别只看性能:REST 与 gRPC 的 6 个选型判断和一次 502 故障复盘
运维·服务器
哈__2 小时前
KES-Operator重塑Kubernetes环境下的KES数据库集群管理
数据库·kubernetes·operator·kes
云老大-阿里云国际站代理商3 小时前
华为云国际站服务代理商:NAT网关怎么配?多台ECS共用公网IP要注意什么
服务器·华为云·云计算
IvorySQL3 小时前
IvorySQL 5.6 发布:PG 18.6 内核升级,沙盒即开即用
数据库·人工智能·postgresql
CNSSIRD数据库4 小时前
中国企业环境信用数据库2003-2026
大数据·数据库·数据分析·论文笔记
fd32005 小时前
达梦数据库更新统计信息后仍走旧执行计划解决方案
数据库
华章酱5 小时前
MySQL幻读是怎么出现的
数据库·mysql·幻读
浅念-6 小时前
Redis基础详解:单线程模型、String与Hash数据结构
服务器·数据库·redis·sql·mysql·nosql数据库·nosql