LVS+Keepalived 高可用群集实战部署

这篇具有很好参考价值的文章主要介绍了LVS+Keepalived 高可用群集实战部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、LVS+Keepalived 高可用群集

1.LVS

  • Linux虚拟服务器(Linux Virtual Server)

  • LVS 实际上相当于基于IP地址的虚拟化应用, 为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法

2、Keepalived工作原理和作用

  • Keepalived 是一个基于VRRP协议来实现的LVS高可用方案,可以解决静态路由出现的单点故障问题。

  • 在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP,主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

  • 支持故障自动切换(Failover)

  • 支持节点健康状态检查(Health Checking)

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

3、Keepalived体系主要模块及其作用

Keepalived体系架构中主要有三个模块,分别是core(核心模块)、check(健康检查模块)、vrrp(故障转移模块)

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

健康检查学名 :探针
1)发送心跳消息:ping/pang
2)TCP端口检查:向一台主机的IP:PORT(端口)T发起TCP三次握手连接
3)HTTP URL检查:向一台主机的 http://IP:PORT/…URL路径发送HTTP GET请求方法,主机响应返回2xx 3xx 认为健康检查正常,如响应返回4xx 5xx则认为健康检查异常

4、Keepalived实现原理剖析

  • keepalived采用VRRP热备份协议实现Linux 服务器的多机热备功能
  • VRRP(虚拟路由冗余协议)是针对路由器的一种备份解决方案。
  • 由多台路由器组成一个热备份组,通过共用的虚拟IP地址对外提供服务
  • 每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态
  • 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

5、VRRP (虚拟路由冗余协议)

  • 是针对路由器的一种备份解决方案
  • 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
  • 每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态
  • 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

LVS+Keepalived 高可用群集实战部署

LVS+Keepalived 高可用群集部署(抢占模式)

环境配置

主机 IP地址 工具
Director主 192.168.24.70 ipvsadm、keepalived
Director备 192.168.24.77 ipvsadm、keepalived
NFS-Server共享 192.168.24.80 rpcbind、nfs-utils
Web-Server节点1 192.168.24.100 rpcbind、nfs-utils、httpd
Web-Server节点2 192.168.24.110 rpcbind、nfs-utils、httpd

1、配置负载调度器(192.168.24.70、192.168.24.77相同)

systemctl stop firewalld.service
setenforce 0

yum -y install ipvsadm keepalived
modprobe ip_vs
cat /proc/net/ip_vs

vim /etc/sysctl.conf

net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens32.send_redirects = 0

sysctl -p

ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -C
ipvsadm -A -t 192.168.24.70:80 -s rr       #这里指定的虚拟IP为ens33网卡ip,重启keepliaved后会自动绑定虚拟网卡
ipvsadm -a -t 192.168.24.70:80 -r 192.168.24.100:80 -g
ipvsadm -a -t 192.168.24.70:80 -r 192.168.24.110:80 -g
ipvsadm

ipvsadm -l

2、部署NFS共享服务器(192.168.24.80)

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

yum -y install nfs-utils rpcbind

systemctl start rpcbind.service
systemctl start nfs.service

systemctl enable nfs.service
systemctl enable rpcbind.service

mkdir /csgo/wj1
mkdir /csgo/wj2

chmod 777 /opt/wj1 
chmod 777 /opt/wj2

vim /etc/exports
/opt/wj1 192.168.24.0/24(rw,sync)
/opt/wj2 192.168.24.0/24(rw,sync)

exportfs -rv

3、配置节点服务器

两台相同(192.168.24.100、192.168.24.110)

systemctl stop firewalld
setenforce 0

yum -y install httpd
systemctl start httpd

vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.24.188
NETMASK=255.255.255.255

service network restart 或 systemctl restart network
ifup lo:0
ifconfig lo:0

vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

sysctl -p
Web-Server1(192.168.24.100)
showmount -e 192.168.24.80
mount.nfs 192.168.24.80:/csgo/wj1 /var/www/html
echo 'this is wj1 web!' > /var/www/html/index.html
Web-Server2(192.168.24.110)
mount.nfs 192.168.24.80:/csgo/wj2/var/www/html
echo 'this is wj2 web!' > /var/www/html/index.html

4、配置keeplived(主、备DR服务器上都要设置)

cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
......
global_defs {						#定义全局参数



###10行修改,邮件服务指向本地

smtp_server 127.0.0.1



###12行修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02

router_id LVS_01


###14行修改,vrrp_strict:严格遵守VRRP协议。下列情况将会阻止启动Keepalived:1. 没有VIP地址。2. 单播邻居。3. 在VRRP版本2中有IPv6地址。

#vrrp_strict						#加注释

}

vrrp_instance VI_1 {				#定义VRRP热备实例参数

###20行修改,指定热备状态,主为MASTER,备为BACKUP

state MASTER


###21行修改,指定承载vip地址的物理接口

interface ens32

###22行,主备都要一样 virtual_router_id (66)

###23行修改,指定优先级,数值越大优先级越高,主为100,备为99

priority 100
advert_int 1					#通告间隔秒数(心跳频率)
authentication {				#定义认证信息,每个热备组保持一致
auth_type PASS				    #认证类型

###27行修改,指定验证密码,主备服务器保持一致

auth_pass 1111
}

virtual_ipaddress {				#指定群集vip地址
192.168.24.188
}
}

###34行修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数

virtual_server 192.168.24.188 80 {
delay_loop 6					#健康检查的间隔时间(秒)
lb_algo rr						#指定调度算法,轮询(rr)

###37行修改,指定群集工作模式,直接路由(DR)

lb_kind DR
persistence_timeout 50			#连接保持时间(秒)
protocol TCP					#应用服务采用的是 TCP协议

###41行修改,指定第一个Web节点的地址、端口

real_server 192.168.24.100 80 {
weight 1						#节点的权重


###43行删除,添加以下健康检查方式

	    TCP_CHECK {
		connect_port 80			#添加检查的目标端口
		connect_timeout 3		#添加连接超时(秒)
		nb_get_retry 3			#添加重试次数
		delay_before_retry 4	#添加重试间隔
	}
}

real_server 192.168.24.100 80 {		#添加第二个 Web节点的地址、端口
    weight 1
    TCP_CHECK {
		connect_port 80
		connect_timeout 3
		nb_get_retry 3
		delay_before_retry 4
	}
}
}


###删除后面多余的配置

LVS+Keepalived 高可用群集实战部署
LVS+Keepalived 高可用群集实战部署

systemctl start keepalived
ip addr show dev ens32				#查看虚拟网卡vip

5、客户机访问

访问192.168.24.188,隔一段时间进行刷新,轮询显示

将主调度服务器keepalived服务关闭,再次验证

systemctl stop keepalived

非抢占模式需要在两个配置文件里面都修改为BACKUP
;然后必须配置nopreempt。

Nginx的Keepalived配置

先写一个脚本

LVS+Keepalived 高可用群集实战部署

修改第一台nginx的配置文件:

LVS+Keepalived 高可用群集实战部署

第二台nginx的配置文件:

LVS+Keepalived 高可用群集实战部署
LVS+Keepalived 高可用群集实战部署

keepalived脑裂的产生和解决方案

当两台高可用服务器在指定的时间内,无法互相检测到对方心跳而各自启动故障转移功能,取得了资源以及服务的所有权,而此时的两台高可用服务器对都还活着并作正常运行,这样就会导致同一个服务在两端同时启动而发生冲突的严重问题,最严重的就是两台主机同时占用一个VIP的地址(类似双端导入概念),当用户写入数据的时候可能会分别写入到两端,这样可能会导致服务器两端的数据不一致或造成数据的丢失,这种情况就称为裂脑

解决方案

  • 关闭主服务器的Keepalived

  • 启用磁盘锁。正在服务一方锁住共享磁盘,“裂脑”发生时,让对方完全“抢不走”共享磁盘资源。但使用锁磁盘也会有一个不小的问题,如果占用共享盘的一方不主动“解锁”,另一方就永远得不到共享磁盘。现实中假如服务节点突然死机或崩溃,就不可能执行解锁命令。后备节点也就接管不了共享资源和应用服务。于是有人在HA中设计了“智能”锁。即:正在服务的一方只在发现心跳线全部断开(察觉不到对端)时才启用磁盘锁。平时就不上锁了。

脑裂产生的原因

  • 主服务器和备服务器之间的通信链路断了;备服务器收不到主服务器发送过来的vrrp报文;那么备服务器会以为主服务器已经挂掉,将自己提升成主服务器去生成VIP地址;但是实际上主服务器还在运行;所以这种情况称为脑裂

脑裂的预防方案

  • 在主服务器和备服务器之间多加几条通信链路
  • 通过脚本去探测主和备之间的通信链路;如果链路断开就关闭主的Keepalivd,让备服务器的Keepalived去运行

如何健康检查调度器和节点服务器?

  • LVS基于内核,系统在调度器就在
  • TCP端口检查节点服务器和HTTP GET状态请求

面试问题

1)Keepalived通过过什么判断哪台主机为主服务器?

  • Keepalived首先做初始化先检查state状态,master为主服务器,backup为备服务器。
    然后再对比所有服务器的priority,谁的优先级高谁是最终的主服务器。

2)keepalived的抢占模式与非抢占模式:

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

3)怎么生成VIP

  • 主服务器(Mster)通过IP命令生成VIP地址

4)怎么故障切换?文章来源地址https://www.toymoban.com/news/detail-480830.html

  • 主服务器器会定时的向备服务器发送vrrp报文;当备服务器在超时时间内接收不到主服务器发送来的vrrp报文的时候,会抢占master,然后生成 VIP地址

到了这里,关于LVS+Keepalived 高可用群集实战部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LVS-DR+keepalived实现高可用负载群集

    VRRP 通信原理: VRRP就是虚拟路由冗余协议,它的出现就是为了解决静态路由的单点故障。 VRRP是通过一种竞选的一种协议机制,来将路由交给某台VRRP路由。 VRRP用IP多播的方式(多播地址224.0.0.18)来实现高可用的通信,工作时主节点发包,备节点接收包,当备节点接收不到主

    2024年02月12日
    浏览(42)
  • LVS+Keepalived 群集部署

    目录 一、 Keepalived工具介绍 二、keepalived 服务重要功能  2.1 管理 LVS 负载均衡软件 2.2 支持故障自动切换(Failover) 2.3 实现 LVS 集群中节点的健康检查(Health Checking) 2.4 实现 LVS 负载调度器、节点服务器的高可用性(HA) 三、keepalived 高可用故障切换转移原理 四、keepalived 体

    2024年02月13日
    浏览(31)
  • 部署LVS+Keepalived高可用集群

    目录 一、keepalived概述 1.1管理LVS负载均衡软件 1.2VRRP(Virtual Router Redundancy Protocol) 原理 二、keepalived服务的重要功能 2.1自动切换(failover) 2.2健康检查(health checking) 2.3高可用(HA) 三、L4和L7负载均衡的区别 四、keepalive故障自动切换 4.1抢占与非抢占 五、keeplived体系主要模块

    2024年02月13日
    浏览(41)
  • Keepalived+LVS部署高可用集群

    集群环境 主机 角色 服务 192.168.110.134 MASTER Keepalived 192.168.110.137 BACKUP Keepalived 192.168.110.136 Real server1 HTTPD 192.168.110.145 Real server2 HTTPD MASTER配置 BACKUP配置 检查Virtual IP是否漂移 IPVS检查 前提下载ipvsadm MASTER BACKUP Real Server配置 附上个人写的小脚本 大家可以根据自己需要做调整。

    2024年02月12日
    浏览(44)
  • 如何部署LVS + keepalived 负载均衡高可用集群

    一、LVS架构 概念 L4和L7负载均衡的区别 keepalive故障自动切换 抢占与非抢占 二、keepalived管理LVS负载均衡器 LVS集中节点的健康检查 三、部署LVS + keeplived 高可用集群 第一步 关闭防火墙和安全机制          第二步 安装工具 第三步 手动配置模块 第四步 编辑策略配置文件 第五

    2024年02月13日
    浏览(45)
  • 【LVS】3、LVS+Keepalived群集

    为什么用它,为了做高可用 服务功能 1.故障自动切换 2.健康检查 3.节点服务器高可用-HA Keepalived的三个模块: core:Keepalived的核心,负责主进程的启动、维护;调用全局配置文件进行加载和解析 vrrp:实现VRRP协议 check:负责健康检查         tcp端口检查:三次握手     

    2024年02月11日
    浏览(41)
  • LVS+Keepalived群集实验

    目录 Keepalived 是什么 Keepalived 功能 Keepalived 模块   工作原理 脑裂现象及解决方案   脑裂 形成脑裂的原因  解决脑裂的几种方法: 为了减少或避免HA集群中出现脑裂现象,我们可以采取以下措施: Keepalived服务主要功能(详细) 1、管理LVS负载均衡软件 2、支持故障自动切换

    2024年02月11日
    浏览(32)
  • 【集群】LVS+Keepalived群集

      在这个高度信息化的 IT 时代,企业的生产系统、业务运营、销售和支持,以及日常管理等环节越来越依赖于计算机信息和服务,对高可用(HA)技术的应用需求不断提高,以便提供持续的、不间断的计算机系统或网络服务。   Keeplived是一款专为LVS和HA设计的健康检查工具

    2024年02月09日
    浏览(38)
  • LVS+Keepalived群集

    专门为LVS 和 HA 设计的一款健康检查工具 专为LVS和HA设计的一款健康检查工具,支持故障自动切换(Failover)以及节点健康状态检查(Health Checking)。判断LVS负载调度器、节点服务器的可用性,当master主机出现故障及时切换到 backup 节点保证业务正常,当 master故障主机恢复后将

    2024年02月09日
    浏览(43)
  • LVS + Keepalived群集

    专为LVS和HA设计的一款健康检查工具支持故障自动切换 (Failover) 支持节点健康状态检查(Health Checking) 判断 LVS 负载调度器、节点服务器的可用性 当 master 主机出现故障及时切换到backup 节点保证业务正常,当 master故障主机恢复后将其重新加入群集并且业务重新切换回 master 节点

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包