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

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

相关推荐
zfxwasaboy3 小时前
Linux宏clamp(val, lo, hi)的作用
linux·运维·服务器
成为大佬先秃头3 小时前
数据库连接池:Druid
数据库·mysql·druid
李彦亮老师(本人)6 小时前
【Linux系统】Rocky Linux 9.7操作系统简介
linux·运维·服务器·docker·kubernetes
minji...6 小时前
Linux 进程信号(二)信号的保存,sigset_t,sigprocmask,sigpending
linux·运维·服务器·网络·数据结构·c++·算法
晓华-warm6 小时前
Warm-Flow 1.8.5 正式发布:超时自动审批、暂存功能来了!
数据库
何中应6 小时前
Grafana如何重置密码
linux·运维·服务器·grafana
u0136863827 小时前
将Python Web应用部署到服务器(Docker + Nginx)
jvm·数据库·python
light blue bird7 小时前
多页签Razor组支轴业务整顿组件
数据库·.net·ai大数据·多功能图表报表·web mvc + razor
wregjru7 小时前
【mysql】2.数据表操作
数据库·mysql
手握风云-7 小时前
基于 Java 的网页聊天室(三)
服务器·前端·数据库