部署LVS-DR+Keepalived

目录

LVS-DR工作原理

1、LVS-DR数据包流向分析

Keepalived概述

keepalived工具介绍

keepalived服务重要功能

keepalived实现原理

VRRP虚拟冗余协议

Keepalived体系主要模块

使用Keepalived实现双机热备

部署LVS-DR集群实验

1、实验准备

主DR服务器配置

 备DR服务器

​编辑 web服务器1配置

 web服务器2配置

 部署keepalivd(主-备)

 验证


LVS-DR工作原理

LVS-DR(Linux Virtual Server Director Server)工作模式,是生产环境最常用的一种工作模式

LVS-DR模式,Director Server作为群集的访问入口,不作为网关使用                                            节点Director Server与Real Server需要在同一个网络中,返回给客户端的数据不需要经过Director Server                                                                                                                                                为了对整个群集的访问,Director Server和Real Server都需要配置VIP地址

1、LVS-DR数据包流向分析

1、Clinent向目标VIP发出请求,Director(负载均衡器)接收

源IP:客户端ip,目标ip:虚拟ip,源MAC:客户端MAC地址,目标MAC:负载均衡器的MAC地址

2、Director根据负载均衡算法选择RealServer_1(真实服务器),不修改也不封装IP报文,而是将数据帧的MAC地址改为RealServer_1的MAC地址,然后在局域网上发送。

3、RealServer_1收到这个振,解封装后发现目标IP与本机匹配(RealSERVERRS事先绑定了VIP)于是处理这个报文,随后重新封装报文,发送到局域网。

源ip:虚拟ip,目标ip:客户机ip,源MAC:真实ens33网卡MAC,目标MAC:客户端MAC

注意:如果跨网段,则报文通过路由器由internet返回给用户

4、Client收到回复报文,Client认为得到正常的服务,而不会知道是哪一台服务器处理的


①客户端向目标VIP发送请求, 负载均衡器接收
②负载均衡器根据负载均衡算法选择后端真实服务器,不修改也不封装IP报文,而是将数据帧的
MAC地址改为后端真实服务器的MAC地址,然后在局域网上发送
①后端真实服务器收到这个帧,解封装后发现目标IP与本机匹配(事先绑定了VIP),于是处理
这个报文。
田随后重新封装报文,将响应报文通过1o接口传送给物理网卡然后向外发出客户端将收到回复报文
。客户端认为得到正常的服务,而不会知道是哪一-台服务器处理的如果跨网段,则报文通过路由器经由internet返回给用户

5、LVS-DR中的ARP问题

在LVS-DR负载均衡集样中,负载均衡与节点服务器都要配置相同的VIP地址。
2、在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的系乱。
当ARPE播发送到VS-DR集群时,因为负载均衡器和节点服务器都是连接到相同网络上,它们都会接收到ARP广播。只有前端的负
载均衡器进行响应,其他节点服务器不应该响应ARP广播。
3、对节点服务器进行处理,使其不响应针对VIP的ARP请求。
使用虚接口1o:0 承载VIP地址设置内核参数arp_ ignore=1:系统只响应目的IP为本地IP的ARP请求
4、 Rea1Serter返回报文(源IP是VIP)经路由器转发, 重新封装报文时,需要先获取路由器的MAC地址
5、发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使
用发送接口的IP地址如: ens33
6、路由器收到ARP请求后,将更新ARP表项
7、原有的VIP对应Director的MAC地址会被更新为VIP对应RealServer的MAC地址
 
8、路由器根据ARP表项, 会将新来的请求报文转发给Realserver, 导致Di rector的VIP失效
解决方法:对节点服务器进行处理,设置内核参数arp_announce=2:系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址

Keepalived概述

Keepalived是企业应用中,单台服务器承担应用存在单点故障的危险,单点故障一旦发生,企业服务器将会发生终端,造成极大的危害和损失

keepalived工具介绍

  • keepalived 负载均衡软件设计的,用来管理并监控 LVS 集群中各个服务节点的状态,后来又加入了可以实现高可用的 VRRP 功能。因此,keepalived 除了能够管理 LVS 集群外,还可以为其他服务(例如:Nginx、Haproxy、MySQL等)实现高可用。
  • keepalived 软件主要是通过 VRRP 协议实现高可用功能的。VRRP 是 Virtual Router Redundancy Protocol(虚拟路由器冗余协议的缩写,VRRP 出现的目的就是为了解决静态路由单点故障的问题,它能够保证当个别节点宕机时,整个网络可以不间断地运行。所以,keepalived 一方面具有配置管理 LVS 的功能,同时还具有对 LVS 下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用。

keepalived服务重要功能

  • 管理LVS负载均衡软件
  • 支持故障自动切换(Failover)
  • 实现LVS集群中节点的健康检查(Health Checking)
  • 实现LVS负载调度节点服务器的高可用性(HA)

对于节点服务器:健康检查如果发现有故障的节点就会将其隔离或者剔除集群,待其回复后再重新加入的集群当中去

负载均衡器:健康检查会定时去检查主机的状态(包括主机和服务的状态),如果出现故障就会自动切换到备主机上待主机恢复,在重新让主承载业务请求

keepalived实现原理

VRRP虚拟冗余协议

VRRP会把多个路由组成一个虚拟路由组VRID,VRRP会生成一个虚拟路由(包含虚拟IP、虚拟MAC,局域网内,用户不需要关心谁是主路由/谁是备路由,他们只用虚拟路由器的虚拟IP作为他们的网关),实际上虚拟IP就是承载在Master路由上,也就是说实际的数据是通过Master进行转发的,Backup是通过优先级来决定哪一个是Master路由,优先级最大的那台就是Master,Backup只是用来监听Master定时发送的VRRP报文,如果超时未收到Master发来的VRRP报文,则Backup就会抢占Master,虚拟IP也会一起漂移到Backup上。当Master恢复后,虚拟IP会漂移回到Master上(非健康检查模式)

keepalived时一款高可用软件,可以工作在三层(网络层)、四层(传输层)和五层(应用层)上,进行健康检测功能。

我们可以手动配置,选择主用设备和备用设备,选择抢占和非抢占。当开启抢占模式时,原有的主用设备恢复后会抢占原有的备用设备,恢复对VIP的响应,而原有的备用设备则会恢复到备用设备的状态。一般情况下,我们都会把一个硬件性能好的设备作为主用设备,因此我们通常会开启抢占功能。
keepalived可以工作在类似三层、四层和五层的模式上,当keepalived工作在三层模式时,以IP的形式去进行健康检测,当keepalived工作在四层模式时,以IP+端口的形式去进行健康检测,当keepalived工作在五层模式时,以自定义脚本的方式去进行健康检测。
 

Keepalived体系主要模块

模块作用
croe模块为Keepalived的核心,负载主进程的启动、维护及全局配置文件的加载和解析
vrrp模块是来实现VRRP协议的
check模块负责健康检查,常见的方式有端口及URL检查

使用Keepalived实现双机热备

  • 基于VRRP协议的热备方式Keepalived可以用作故障切换,每个热备组可以有多台服务器,当然最常用的还是双机热备
  • 在双机热备方案中,故障切换主要针对虚拟IP地址的漂移来实现,因此可以适用于各种应用服务器(如:Web、FTP、Mail、SSH、DNS…)
  • 其中主、备服务器都需要安装Keepalived
     

部署LVS-DR集群实验

1、实验准备

主DR服务器:192.168.127.129

备DR服务器:192.168.127.139

web服务器1:192.168.127.149

web服务器2:192.168.127.159

VIP:192.168.127.100

主DR服务器配置

yum install -y ipvsadm keepalived
modprobe ip_vs #加载ip_vs模块信息
cat /proc/net/ip_vs #查看ip_vs模块信息

 配置网卡

cd /etc/sysconfig/network-scripts/
cp -p ifcfg-ens33 ifcfg-ens33:0
ifup ens33:0 #开启
ifconfig #查看

 

 

调整proc响应参数

由于LVS负载均衡器和各节点需要公用vip地址,应该关闭linux内核的重定向相应参数,不充当路

由器(转发、重定向)

vim /etc/sysctl.conf

net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects =0
net.ipv4.conf.ens33.send_redirects = 0

 

sysctl -p #加载

 

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

 

cd /opt
写一个脚本,并且执行
#!/bin/bash
ipvsadm -C
ipvsadm -A -t 192.168.32.100:80 -s rr
ipvsadm -a -t 192.168.32.100:80 -r 192.168.32.30:80 -g
ipvsadm -a -t 192.168.32.100:80 -r 192.168.32.40:80 -g
ipvsadm

 备DR服务器

yum install -y ipvsadm keepalived
modprobe ip_vs #加载ip_vs模块信息
cat /proc/net/ip_vs #查看ip_vs模块信息

cd /etc/sysconfig/network-scripts/
cp -p ifcfg-ens33 ifcfg-ens33:0

 

 调整proc响应参数

vim /etc/sysctl.conf

net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects =0
net.ipv4.conf.ens33.send_redirects = 0

cd /opt
写一个脚本,并且执行
#!/bin/bash
ipvsadm -C
ipvsadm -A -t 192.168.32.100:80 -s rr
ipvsadm -a -t 192.168.32.100:80 -r 192.168.32.30:80 -g
ipvsadm -a -t 192.168.32.100:80 -r 192.168.32.40:80 -g
ipvsadm

 web服务器1配置

yum install -y httpd #安装

 

route add -host 192.168.127.100 dev 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

 

cd /var/www/html/
vim index.html

 

 web服务器2配置

yum install -y httpd #安装

cd /etc/sysconfig/network-scripts/
cp -p ifcfg-ens33 ifcfg-lo:0

 

route add -host 192.168.127.100 dev lo:0 #路由禁锢

 调整内核的ARP相应参数以阻止更新VIP的MAC地址,防止冲突

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

 准备页面文件

cd /var/www/html/
vim index.html

<html><body><h1>yyh</h1></body></html>

 

 

 部署keepalivd(主-备)

cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak #备份
vim keepalived.conf

global_defs {
router_id lvs_01
}
vrrp_instance vi_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 110
advert_int 1
authentication {
auth_type PASS
auth_pass 6666
}
virtual_ipaddress {
192.168.127.100
}
}
virtual_server 192.168.127.100 80 {
lb_algo rr
lb_kind DR
persistence_timeout 6
protocol TCP
real_server 192.168.127.149 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.127.159 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

 备

cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak #备份

global_defs {
router_id lvs_02
}
vrrp_instance vi_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 105
advert_int 1
authentication {
auth_type PASS
auth_pass 6666
}
virtual_ipaddress {
192.168.32.100
}
}
virtual_server 192.168.127.100 80 {
lb_algo rr
lb_kind DR
persistence_timeout 6
protocol TCP
real_server 192.168.127.149 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.127.159 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

 

 验证

主dr服务器

 备dr服务器

 关闭主dr服务器keepalived,查看

查看备dr服务器

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值