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

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

相关推荐
Python私教1 小时前
model中能定义字段声明不存储到数据库吗
数据库·oracle
sun0077003 小时前
ubuntu dpkg 删除安装包
运维·服务器·ubuntu
oi774 小时前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器
BestandW1shEs4 小时前
谈谈Mysql的常见基础问题
数据库·mysql
重生之Java开发工程师4 小时前
MySQL中的CAST类型转换函数
数据库·sql·mysql
教练、我想打篮球4 小时前
66 mysql 的 表自增长锁
数据库·mysql
Ljw...4 小时前
表的操作(MySQL)
数据库·mysql·表的操作
哥谭居民00014 小时前
MySQL的权限管理机制--授权表
数据库