LVS + Keepalived群集

文章目录

  • 1. Keepalived工具概述
    • 1.1 什么是Keepalived
    • 1.2 工作原理
    • 1.3 Keepailved实现原理
    • 1.4 Keepalived体系主要模块及其作用
    • 1.5 keepalived的抢占与非抢占模式
  • 2. 脑裂现象 (拓展)
    • 2.1 什么是脑裂
    • 2.2 脑裂的产生原因
    • 2.3 如何解决脑裂
    • 2.4 如何预防脑裂
  • 3. LVS+Keepalived 实现高可用负载均衡配置
    • 3.1 前置准备
    • 3.2 配置负载调度器 (主keepalived服务器:192.168.67.100)
    • 3.3 配置负载调度器(备keepalived服务器:192.168.67.101)
    • 3.4 配置节点服务器(web1服务器:192.168.67.102)
    • 3.5 配置节点服务器(web2服务器:192.168.67.103)
    • 3.6 测试

1. Keepalived工具概述

1.1 什么是Keepalived

  • 专为LVS和HA设计的一款健康检查工具支持故障自动切换 (Failover)
  • 支持节点健康状态检查(Health Checking)
官方网站: http://www.keepalived.org/

1.2 工作原理

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

1.3 Keepailved实现原理

LVS + Keepalived群集_第1张图片

  • VRRP(虚拟路由冗余协议) 是针对路由器的一种备份解决方案

  • 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务

  • 每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态

  • 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

1.4 Keepalived体系主要模块及其作用

keepalived体系架构中主要有三个模块,分别是corecheckvrrp

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

1.5 keepalived的抢占与非抢占模式

抢占模式即MASTER从故障中恢复后,会将VIP从BACKUP节点中抢占过来。非抢占模式即MASTER恢复后不抢占BACKUP升级为MASTER后的VIP

非抢占式俩节点state必须为bakcup,且必须配置nopreempt。

注意:这样配置后,我们要注意启动服务的顺序,优先启动的获取master权限,与优先级没有关系了。

#Keepalived通过什么判断哪台主机为主服务器,通过什么方式配置浮动IP?

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

2. 脑裂现象 (拓展)

2.1 什么是脑裂

主服务器和备服务器同时拥有 VIP

2.2 脑裂的产生原因

因为主服务器和备服务器之间的通信链路中断,导致备服务器无法正常收到主服务器发送的VRRP心跳报文

2.3 如何解决脑裂

关闭主服务器或者备服务器其中一个的keepalived服务

2.4 如何预防脑裂

  1. 主服务器与备服务器之间添加双通信链路

  2. 在主服务器上定义运行脚本判断与备服务器通信链路是否中断,如果中断则自行关闭keepalived服务

  3. 利用第三方监控软件检测是否发生脑裂故障,如果发生则通过监控软件关闭主或者备服务器上的keepalived服务

3. LVS+Keepalived 实现高可用负载均衡配置

3.1 前置准备

主keepalived服务器:192.168.67.100
备keepalived服务器:192.168.67.101

web1服务器:192.168.67.102
web2服务器:192.168.67.103 
  
vip:192.168.67.200

客户机:192.168.67.104

3.2 配置负载调度器 (主keepalived服务器:192.168.67.100)

#关闭防火墙
systemctl stop firewalld.service
setenforce 0
 
#安装服务
yum install ipvsadm -y
yum install keepalived -y 

LVS + Keepalived群集_第2张图片LVS + Keepalived群集_第3张图片

#修改配置文件keeplived.conf
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak    #备份配置文件

vim keepalived.conf
#编辑配置文件

LVS + Keepalived群集_第4张图片
LVS + Keepalived群集_第5张图片
LVS + Keepalived群集_第6张图片
删掉多余配置

#启动服务、查看虚拟网卡vip
systemctl start keepalived
ip addr show dev ens33	

LVS + Keepalived群集_第7张图片

#调整proc响应参数,关闭Linux内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
 
#刷新一下
sysctl -p

LVS + Keepalived群集_第8张图片

#配置负载分配策略,并启动服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
 
#清空ipvsadm,并做策略
ipvsadm -C
ipvsadm -A -t 192.168.67.200:80 -s rr
ipvsadm -a -t 192.168.67.200:80 -r 192.168.67.102:80 -g
ipvsadm -a -t 192.168.67.200:80 -r 192.168.67.103:80 -g
 
#保存设置
ipvsadm
ipvsadm -ln
ipvsadm-save >/etc/sysconfig/ipvsadm

LVS + Keepalived群集_第9张图片

3.3 配置负载调度器(备keepalived服务器:192.168.67.101)

#与主服务器类似
#关闭防火墙
systemctl stop firewalld.service
setenforce 0
 
#安装服务
yum install ipvsadm -y
yum install keepalived -y 
#修改配置文件keeplived.conf
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak    #备份配置文件

vim keepalived.conf
#编辑配置文件

LVS + Keepalived群集_第10张图片

LVS + Keepalived群集_第11张图片

#启动服务、查看虚拟网卡vip
systemctl start keepalived
ip addr show dev ens33	

LVS + Keepalived群集_第12张图片

#调整proc响应参数,关闭Linux内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
 
#刷新一下
sysctl -p

LVS + Keepalived群集_第13张图片

#配置负载分配策略,并启动服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
 
#清空ipvsadm,并做策略
ipvsadm -C
ipvsadm -A -t 192.168.67.200:80 -s rr
ipvsadm -a -t 192.168.67.200:80 -r 192.168.67.102:80 -g
ipvsadm -a -t 192.168.67.200:80 -r 192.168.67.103:80 -g
 
#保存设置
ipvsadm
ipvsadm -ln
ipvsadm-save >/etc/sysconfig/ipvsadm

LVS + Keepalived群集_第14张图片

3.4 配置节点服务器(web1服务器:192.168.67.102)

#关闭防火墙
systemctl stop firewalld
setenforce 0
 
#安装并开启httpd服务
yum -y install httpd
systemctl start httpd

LVS + Keepalived群集_第15张图片

#配置站点文件
vim /var/www/html/index.html
this is scj web1!

LVS + Keepalived群集_第16张图片

#配置虚拟vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.67.200
NETMASK=255.255.255.255
 
#重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0

LVS + Keepalived群集_第17张图片

#设置路由
route add -host 192.168.67.200 dev lo:0
route -n

LVS + Keepalived群集_第18张图片

#调整 proc 响应参数

#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
 
#刷新proc参数
sysctl -p

LVS + Keepalived群集_第19张图片

3.5 配置节点服务器(web2服务器:192.168.67.103)

#配置与web1类似

#关闭防火墙
systemctl stop firewalld
setenforce 0
 
#安装并开启httpd服务
yum -y install httpd
systemctl start httpd

LVS + Keepalived群集_第20张图片

#配置站点文件
vim /var/www/html/index.html
this is scj web2!

LVS + Keepalived群集_第21张图片

#配置虚拟vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.67.200
NETMASK=255.255.255.255
 
#重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0

LVS + Keepalived群集_第22张图片

#设置路由
route add -host 192.168.67.200 dev lo:0
route -n

LVS + Keepalived群集_第23张图片

#调整 proc 响应参数

#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
 
#刷新proc参数
sysctl -p

LVS + Keepalived群集_第24张图片

3.6 测试

#前往客户机
curl 192.168.67.200
#访问vip

LVS + Keepalived群集_第25张图片

#前往主服务器
ip a

LVS + Keepalived群集_第26张图片

#前往备服务器
ip a

LVS + Keepalived群集_第27张图片

#前往主服务器
systemctl stop keepalived.service
#断开主服务器

LVS + Keepalived群集_第28张图片

#前往备服务器
ip a

LVS + Keepalived群集_第29张图片

你可能感兴趣的:(lvs,智能路由器)