文章目录
- 一、lvs 的四种工作模式
- DR 工作模式
- NAT 工作模式
- TUN 工作模式(隧道工作模式)
- FULLNAT 工作模式(不是系统自带)
- 二、关于实现httpd的负载均衡
- 三、keepalive + lvs
实验环境:
封装一台版本为redhat7.6的操作系统,配置好yum源(通过宿主机的httpd服务,搭建网络仓库),本地解析,关闭防火墙以及selinux,再清理过滤和压缩后克隆域名分别为vm1、vm2、vm3、vm4, 主机名分别为server11、server12、server13、server14的四台虚拟机。
给四台主机分别配置好各自的ip地址使互相可以ping通。
4层负载平衡:
将网络流量负载平衡到多个服务器的最简单方法是使用第4层(传输层)负载平衡。以这种方式进行负载均衡将根据IP范围和端口转发用户流量
用户访问负载均衡器,负载均衡器将用户的请求转发给后端服务器的Web后端组。无论选择哪个后端服务器,都将直接响应用户的请求。通常,Web后端中的所有服务器应该提供相同的内容 - 否则用户可能会收到不一致的内容。
一、lvs 的四种工作模式
DR 工作模式
当用户访问lvs调度器(vs)上的vip时,是通过修改请求报文的目标mac地址,在数据链路层通过调度算法将请求转发给真实服务器(rs),而真实服务器响应后的处理结果直接返回给客户端用户;所以说,vs 和rs 要都有vip,只是用arptables 处理了rs在数据链路层arp转发。由于必须处于同一vlan下,受到了局限性,但是其工作效率很高。client --> vs --> rs --> client
DR的不足:LVS - RS 间必须在同一个VLAN
RS上绑定VIP,风险太大
NAT 工作模式
通过网络地址转换的方法来实现调度的。首先调度器(LB)接收到客户的请求数据包时(请求的目的IP为VIP),根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后调度就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP),这样真实服务器(RS)就能够接收到客户的请求数据包了。真实服务器响应完请求后,查看默认路由(NAT模式下我们需要把RS的默认路由设置为LB服务器。)把响应后的数据包发送给LB,LB再接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。client --> vs --> rs --> vs --> client
相当于数据流进入到VS时,做了一次DNAT,从VS出去的时候做了一次DNAT
NAT 不足: RS/ROUTER 要配置策略路由
TUN 工作模式(隧道工作模式)
客户请求包封装在一个IP tunnel里面,然后发送给RS节点服务器,节点服务器接收到之后解开IP tunnel后,进行响应处理。并且直接把包通过自己的外网地址发送给客户不用经过LB服务器
TUN不足:RS配置复杂(IPIP模块),RS上绑定VIP,风险比较大
FULLNAT 工作模式(不是系统自带)
引入local address(内网ip地址),cip-vip转换为lip->rip,而 lip和rip均为IDC内网ip,可以跨vlan通讯
LVS在大规模网络中应用存在不足
各转发模式,网络拓扑复杂,运维成本高
和商用LB设备相比
缺少TCP标志位DDOS攻击防御
主备部署方式不足
性能无法线性扩展
二、关于实现httpd的负载均衡
【利用DR工作模式和轮询调度算法实现】
调度器:yum install -y ipvsadm
| 安装lvs管理器
ipvsadm -A -t 172.25.0.100:80 -s rr
| 添加虚拟IP,‘rr’ 轮询调度算法
ipvsadm -a -t 172.25.0.100:80 -r 172.25.0.12:80 -g ipvsadm -a -t 172.25.0.100:80 -r 172.25.0.13:80 -g
| 添加虚拟IP的rs服务器
ipvsadm -ln
| 查看lvs 调度器
rs端:
server12和server13上开启httpd服务
为观察方便 把测试页写成各自的主机名
并添加虚拟ip 172.25.0.100,访问测试:
curl 172.25.0.100
来测试
访问到的测试页为两台机子轮询,实现了负载均衡
用arp -an | grep 100
可以查看收到arp报文对应的mac地址
arp -d 172.25.3.100
| 删除指定ip的arp缓存
但这样不是很安全,因为server12和13他们同样有虚拟ip,宿主机访问虚拟ip时也可能会被这两台机子抢去而访问它,这就会使调度器无用,为了避免这类问题,我们给两台rs服务器添加相应的规则来使他们的虚拟IP不被直接访问。
rs服务器端:
yum install arptables -y
| 安装arp防火墙
systemctl start arptables
| 开启服务
添加arptables访问规则
访问测试:
这样在测试时就不会直接访问到以172.25.0.100为ip的server12 和server13,只会先访问调度器,通过调度器的设定来访问rs服务器
三、keepalive + lvs
针对若rs服务器出现故障或者调度器单点故障等问题,keepalive很好的解决了相应的问题,健康检查和失败切换(LVS冗余)是keepalived的两大核心功能。利用keepalive中的vrrp协议实现高可用解决单点故障,TCP_CHECK实现对后端rs进行健康检测。
keepalive服务会自动添加虚拟ip和编写ipvsadm规则,所以可以把之前添加过的删掉。
在server11和server14上
yum install keepalive -y
修改server11配置文件,让server11做主用机
启动keepalive自动生成规则
备用主机(server14):
其他与主用机的内容一样,只需改它的状态和优先级
启动服务访问测试:
当server11的keepalive停止之后,vip会自动漂移到server14上,不会影响客户端对后端服务器的访问
但是设置成主备机时,当server11的keepalive重新启动时,会抢占资源。
若不想被抢占,则可修改server11主用机的配置文件,当重启服务时,vip 就不会从server14自动漂移到server11上