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

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

相关推荐
小猫咪01几秒前
Linux 定时任务 crontab 详解:让脚本每天自动执行
linux·运维·服务器
Database_Cool_9 分钟前
AnalyticDB MySQL vs Apache Doris:企业级云数仓如何选型——全维度对比指南
数据库·数据仓库·mysql·阿里云
心翼叶少10 分钟前
Redis(二):设置密码
数据库·redis·缓存
_Kafka_14 分钟前
Oracle平均成本计算流程
数据库·oracle
xfhuangfu15 分钟前
Oracle 19c中业务表的列发生变化时使用impdp
数据库·oracle
kaka❷❷17 分钟前
Linux 内核、.ko、.so 与 SDK 镜像打包
linux·运维·服务器
微风◝19 分钟前
【Linux故障排查】系统启动进入紧急模式:由磁盘挂载超时引发的服务器无法启动
linux·运维·服务器
闲猫20 分钟前
堡垒机Linux黑屏识别命令Set -n探索可能性
linux·运维·服务器
小何code38 分钟前
【Python零基础入门】第10篇:Python列表方法与应用实例
数据库·人工智能·python
少威shaowei1 小时前
在 Mac 上搭建 DNS 服务器
运维·服务器·macos