Linux运维之LVS(DR模式)

Linux运维之LVS(DR模式)

  • 什么是LVS与vip

LVS(Linux Virtual Server),意即Linux虚拟服务器,是一个虚拟的服务器集群系统
宗旨是使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,
用来解决负载均衡的问题

一般来说,LVS集群采用三层结构,其主要组成部分为:

A、负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(可称之为虚拟IP地址)上的。

B、服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。

C、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。

VIP为调度器和服务器组共享,调度器配置的VIP是对外可见的,用于接收虚拟服务的请求报文

  • LVS的DR模式

1.客户端将访问vip报文发送给LVS服务器;
2.LVS服务器将请求报文的mac地址改为后端真实服务器的mac地址;
3.后端真实服务器得到访问报文后进行ip查看,再确认自己有vip之后进行请求处理;
4.后端真实服务器在处理完数据请求后,直接响应客户端。

要求:

1.LVS服务器和后端真实的服务器要处在同一vlan中。
2.LVS和后端服务器上都要有vip,并且后端真实服务器上的vip不能对外进行广播。

优点:

1.LVS服务器只是修改了mac地址,所以非常快速,并且LVS不会成为瓶颈。

扫描二维码关注公众号,回复: 6577227 查看本文章

缺点:

1.要求较高,LVS服务器必须和后端真实服务器处于同一vlan中;
2.后端真实服务器直接响应客户端,对于后端真实服务器来说,并不安全。

原理图:
在这里插入图片描述

  • LVS之DR模式的搭建

搭建环境准备:
三台rhel7.3版本的虚拟机
server1:ip为172.25.11.1 作为lvs调度服务器DS
server2:ip为172.25.11.2 作为后端服务器RS
server3:ip为172.25.11.3 作为后端服务器RS
并给3台虚拟机添加vip:172.25.11.100

在调度其server1上安装ipvsadm,编写调度策略

yum install -y ipvsadm  ##安装

ipvsadm -l	##查看策略,size=4096()

lsmod		##查看内核模块

ipvsadm -A -t 172.25.11.100:80 -s rr	##调度策略,rr轮询,ipvsadm --help看到,共10种调度算法
ipvsadm -a -t 172.25.11.100:80 -r 172.25.11.2:80 -g	##后端两个rs
ipvsadm -a -t 172.25.11.100:80 -r 172.25.11.3:80 -g

在这里插入图片描述
在这里插入图片描述
在server2与server3(后端RS服务器)配置:

安装httpd服务并解决可能宕机的情况(设置轮询)

yum install httpd -y

##解决方法1:
##添加arptable策略解决##
在两台rs(server2和server3)上安装arptables:
yum install arptables -y # 安装管理工具
arptables -A INPUT -d 172.25.11.100 -j DROP # 设置不回应对自己VIP的请求
arptables -A OUTPUT -s 172.25.11.100 -j mangle --mangle-ip-s 172.25.11.2 #设置将发送出去的数据包的源ip修改成VIP
arptables -L ##查看

##解决方法2:
##配置内核参数##
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

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在物理机测试:

crul 172.25.11.100
arp -an | grep 100   ##可以看到默认缓存的是server1的mac地址
arp -d 172.25.0.100  ##清除缓存,再次访问时,可能就不轮询,因为可能缓存了某台rs的mac地址

没有设置解决策略的效果:
在这里插入图片描述
设置过解决策略的效果:
在这里插入图片描述
在server1查看轮询次数

ipvsadm

在这里插入图片描述

  • 配置ldirectord健康检查

现象:当前lvs配置,没有对后端的健康检查,停掉一台rs后端服务器的httpd,会出现connection refused,解决办法:ldirectord
在这里插入图片描述
配置步骤:
先在调度器上清除之前配置的规则以及VIP

ip addr del 172.25.11.100/24 dev eth0
ipvsadm -C
ipvsadm -l

在这里插入图片描述

首先给调度器(server1)添加高可用yum源:

vim /etc/yum.repos.d/rhel7.3.repo
[HighAvailability]
name=HighAvailability
baseurl=http://172.25.11.250/rhel7.3/addons/HighAvailability
gpgcheck=0

yum repolist

在这里插入图片描述
在这里插入图片描述
自行准备好ldirectord的RPM包,可在官网下载

yum install ldirectord-3.9.5-3.1.x86_64.rpm -y
rpm -qpl ldirectord-3.9.5-3.1.x86_64.rpm  ##查看相关文件

在这里插入图片描述
在这里插入图片描述
复制配置文件并配置

cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf  /etc/ha.d/ 
vim /etc/ha.d/ldirectord.cf
编写如下:
virtual=172.25.11.100:80
        real=172.25.11.2:80 gate			##两个后端rs
        real=172.25.11.3:80 gate
        fallback=127.0.0.1:80 gate		##两个rs都挂了,就访问调度器自己的80端口
        service=http
        scheduler=rr				##轮询算法
        #persistent=600
        #netmask=255.255.255.255
        protocol=tcp
        checktype=negotiate
        checkport=80
        request="index.html"
        #receive="Test Page"
        #virtualhost=www.x.y.z
        
ip addr add 172.25.11.100/24 dev eth0
systemctl start ldirectord 
systemctl start ldirector
systemctl enable ldirectord

在这里插入图片描述
在这里插入图片描述

查看规则并为server1安装http服务,写入网页

ipvsadm
yum install httpd -y
cd /var/www/html
vim index.html

在这里插入图片描述
在这里插入图片描述
在物理机上测试:
Ldirectord通过定期请求已知的URL并检查响应是否包含预期的响应来监视实际服务器的运行状况。如果一个真正的服务器出现故障,那么该服务器将被删除,并在重新联机后重新激活。如果所有真正的服务器都关闭了,那么会在池中插入一个回退服务器,这将使一个静态的真正的Web服务器重新联机。通常,回退服务器是本地主机。如果正在提供HTTP虚拟服务,那么运行一个ApacheHTTP服务器是很有用的,该服务器返回一个页面,指示该服务暂时不可访问。

关闭一台后端服务器server2的httpd测试:
发现后端服务器server3接替工作,并且不会出现server2连接不上的报错
在这里插入图片描述
在server1查看策略:
发现server2被暂时删除
在这里插入图片描述
再次开启后端服务器server2:
发现和server3轮询工作
在这里插入图片描述
在server1查看策略:
发现server2被添加:
在这里插入图片描述
同时关闭两台服务器server2和server3的httpd:
发现会启用本地调度器server1的httpd服务
在这里插入图片描述
查看server1的策略:
在这里插入图片描述
END

猜你喜欢

转载自blog.csdn.net/weixin_44828950/article/details/93342557