lvs实现负载均衡的方法(DR工作模式,隧道工作模式,)

本文介绍LVS集群技术,包括其特点、工作原理及三种主要负载均衡技术VS/NAT、VS/TUN、VS/DR。详细讲解了DR和隧道模式的配置步骤,并探讨了如何解决服务机故障时的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

lvs简介及特点
使用情况:
一般情况下nginx已经够处理多并发的情况了,若nginx依旧不能满足某些并发的情况,则可以使用lvs(四层基于ip的服务)
lvs:linux virtual server(linux虚拟服务)
使用集群技术和Linux操作系统实现一个高性能、高可用的服务器.
很好的可伸缩性(Scalability)
很好的可靠性(Reliability)
很好的可管理性(Manageability)
原理:
lvs处于INPUT链,它不接受请求,只是起到调度的作用,将请求发送给kernel space,判断ip是否为本机ip,若是,则使用ipvsadm来修改ip源地址与目的ip
lvs由ipvs(本身就具有)和ipvsadm(编写策略的工具)组成
特点:
可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份)。我们先分析实现虚拟网络服务的主要技术,指出IP负载均衡技术是在负载调度器的实现技术中效率最高的。在已有的IP负载均衡技术中,主要有通过网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器,我们称之为VS/NAT技术(Virtual Server via Network Address Translation)。在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出了通过IP隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。VS/NAT、VS/TUN和VS/DR技术是LVS集群中实现的三种IP负载均衡技术。
DR工作模式
vip与服务机必须在同一个局域网内
实验时有两台的主机名都为server1,其中一台为vip,一台为服务机(server2)
vip的配置

yum install ipvsadm.x86_64 -y #安装ipvsadm
 systemctl start ipvsadm.service#开启服务

在这里插入图片描述
重启服务失败
日志查看报错结果
在这里插入图片描述
日志报错“/bin/bash: /etc/sysconfig/ipvsadm: No such file or directory
”说明没有该文件
创建文件后再次启动服务

 touch /etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
 vim /etc/sysconfig/ipvsadm-config #修改配置文件

在这里插入图片描述
使得ipvs每次重启时保存设置

  ipvsadm -A -t 172.25.42.100:80 -s rr ##编写调度方式
  ipvsadm -a -t 172.25.42.100:80 -r 172.25.42.2:80 -g
  ipvsadm -a -t 172.25.42.100:80 -r 172.25.42.3:80 -g

在这里插入图片描述

systemctl restart ipvsadm.service 
 cat /etc/sysconfig/ipvsadm

在这里插入图片描述
重启服务并查看调度是否写入文件
ipvsadm -ln ##查看其调度情况
在这里插入图片描述

 ip addr add 172.25.42.100/24 dev eth0 ##添加ip

server2的配置

ip addr add 172.25.42.100/24 dev eth0##给server2服务器添加ip

server2頁面
在这里插入图片描述

server3的配置

ip addr add 172.25.42.100/24 dev eth0 ##给server3服务器添加ip

server3頁面
在这里插入图片描述
客户机访问
curl 172.25.42.100##访问ip
在这里插入图片描述
我們使用的明明时轮询调度,给我们返回的却一直是只有server2的页面,这是为什么呢?
在这里插入图片描述
上图为客户机访问server2的结果,可以看到只有一个物理地址(server2的物理地址)
这是因为访问时先找的是server2,所以调度器直接返回server2的结果,再次访问时因为lvs已经记录了server2的mac地址,不会在去寻找别的ip,所以每次都会去访问server2,所以每次的返回结果都为server2的结果。
那么如何避免这个问题呢?
只需要不接受和输入100主机的值即可

server2配置
yum install arptables.x86_64 -y##给两台服务器安装arptables
arptables -A INPUT -d 172.25.42.100 -j DROP
arptables -A OUTPUT -s 172.25.42.100 -j mangle --mangle-ip-s 172.25.42.2
arptables-save > /etc/sysconfig/arptables
systemctl start arptables
server3配置
yum install arptables.x86_64 -y##给两台服务器安装arptables
arptables -A INPUT -d 172.25.42.100 -j DROP
arptables -A OUTPUT -s 172.25.42.100 -j mangle --mangle-ip-s 172.25.42.3
arptables-save > /etc/sysconfig/arptables
systemctl start arptables
清理缓存后客户机访问172.25.42.100
在这里插入图片描述

隧道模式
vip与服务器可以不再同一个局域网内

ipvsadm -C # 清除以有策略
modprobe ipip##给vip和两台服务机server2和server3导入隧道模块

vip配置

ip addr del 172.25.42.100/24 dev eth0 #删除之前给eth0的配置
ip addr add 172.25.42.100/24 dev tunl0 #添加ip至tunl0
 ip link set up tunl0 ##唤醒tunl0

ipvsadm -A -t 172.25.42.100:80 -s rr ##编写策略
 ipvsadm -a -t 172.25.42.100:80 -r 172.25.42.2:80 -i
 ipvsadm -a -t 172.25.42.100:80 -r 172.25.42.3:80 -i

server2配置

ip addr del 172.25.42.100/24 dev eth0 #删除之前给eth0的配置
ip addr add 172.25.42.100/24 dev tunl0 #添加ip至tunl0
 ip link set up tunl0 ##唤醒tunl0
 sysctl -a | grep rp_filter ##消除反向过滤的影响

在这里插入图片描述

 sysctl -p #让配置生效

server3配置

ip addr del 172.25.42.100/24 dev eth0 #删除之前给eth0的配置
ip addr add 172.25.42.100/24 dev tunl0 #添加ip至tunl0
 ip link set up tunl0 ##唤醒tunl0
sysctl -a | grep rp_filter #消除反向过滤的影响
net.ipv4.conf.all.arp_filter = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.arp_filter = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.eth0.arp_filter = 0
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.lo.arp_filter = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.tunl0.arp_filter = 0
net.ipv4.conf.tunl0.rp_filter = 1

在这里插入图片描述
sysctl -p##让配置生效

客户机访问结果
在这里插入图片描述当两台服务机出问题时的解决方案
先配置好DR工作模式并删除ipip模块

我们关闭server2的http时会发生如下错误。
在这里插入图片描述
那么怎么来解决这个问题呢?
首先我们下载一个安装包
ldirectord-3.9.5-3.1.x86_64.rpm
安装该包时会报错,需要用到yum的高可用性
在这里插入图片描述
添加新的yum高可用性源
[high]
name=high
baseurl=http://172.25.42.254/cn1/addons/HighAvailability/
gpgcheck=0

安装后执行该命令
cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d
vim /etc/ha.d/ldirectord.cf##修改配置文件
在这里插入图片描述
systemctl stop httpd##关闭两台服务器的httpd
在这里插入图片描述
在这里插入图片描述
修改vip的http发布文件如下
在这里插入图片描述
在这里插入图片描述
keepalive实现高可用性
在安装一台虚拟机server4作为备份主机,ip为172.25.42.4

server1和server4获取keepalived-2.0.17.tar 包
拆包后得到keepalived-2.0.17目录

进入该目录后执行脚本编译
在这里插入图片描述
./configure --prefix=/usr/local/keepalived --with-init=systemd
编译结束后没有错误即可进行安装
先make
在这里插入图片描述
然后make install
在这里插入图片描述
建立软链接
ln -s /usr/local/keepalived/etc/keepalived/ /etc/

vim /etc/keepalived/keepalived.conf #修改server1配置文件
注释vrrp_strict
在这里插入图片描述
修改virtual_router_id为本机同一组数据(数字必须相同)
在这里插入图片描述
修改 virtual_ipaddress为vip地址
在这里插入图片描述
vip及其服务主机配置如下所示,其余不需要的删除即可:
在这里插入图片描述

scp root@172.25.42.4:/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf ##上传该文件至server4

server4对配置文件修改优先级和权重即可
在这里插入图片描述
关闭server1的httpd然后服务机查看
在这里插入图片描述
服务机查看
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值