LVS的TUN模式负载均衡配置,详细实战版

TUN模式——IP隧道

• IP Tunnel ,简称TUN模式
• 采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的lnternet连接直接回应客户机,而不再经过负载调度器
• 服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信

原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求报文封装一层IP隧道(T-IP)转发到真实服务器(RS)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器

优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量

缺点:隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持“IP Tunneling”

下面是大概的架构图,只实验局域网内部的部分

LVS的TUN模式负载均衡配置,详细实战版_第1张图片
直接开始实验

首先我们用一台正常设置的主机156作为路由器
添加一块网卡,记得关机再添加网卡
LVS的TUN模式负载均衡配置,详细实战版_第2张图片
添加好以后就可以开机了

用ip addr命令查看我们的网卡信息,大家也知道我们centos7的默认网卡是ens33,而lo是本地回环,所以ens37就是我们刚刚添加的网卡,但是现在还没有ip,那是因为我们还没有配置

[root@server156 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:50:56:3d:11:ca brd ff:ff:ff:ff:ff:ff
    inet 192.168.121.156/24 brd 192.168.121.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:fe3d:11ca/64 scope link 
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:50:56:28:ee:ca brd ff:ff:ff:ff:ff:ff

然后查看网卡配置目录里,以ifcfg开头的文件,除了ens33和lo之外的,ens33r就是我们刚添加的网卡了,然后修改里面的配置文件

[root@server156 ~]# ls /etc/sysconfig/network-scripts/
ifcfg-ens33   ifdown-isdn      ifup          ifup-plusb     ifup-wireless
ifcfg-ens33r  ifdown-post      ifup-aliases  ifup-post      init.ipv6-global
ifcfg-lo      ifdown-ppp       ifup-bnep     ifup-ppp       network-functions
ifdown        ifdown-routes    ifup-eth      ifup-routes    network-functions-ipv6
ifdown-bnep   ifdown-sit       ifup-ippp     ifup-sit
ifdown-eth    ifdown-Team      ifup-ipv6     ifup-Team
ifdown-ippp   ifdown-TeamPort  ifup-isdn     ifup-TeamPort
ifdown-ipv6   ifdown-tunnel    ifup-plip     ifup-tunnel
[root@server156 ~]# 

这里将DEVICE改为刚才添加的网卡名字,刚才看到我们添加的网卡名为ens37,所以我们就改为ens37,不要随便改为其它的,不然可能会出错。
然后添加我们的ip和掩码(IPADDR=192.168.231.50,PREFIX=24),根据架构来做,可以换成自己的地址,网卡就不要了,因为只在内部网络通信,这个网卡不是用来与外网通信的

[root@server156 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33r

# Generated by parse-kickstart
DEVICE="ens37"
IPV6INIT="yes"
BOOTPROTO=static
UUID="4e976e09-2ace-4b18-9309-b9c6e001a3ed"
ONBOOT="yes"
IPADDR=192.168.231.50
PREFIX=24

然后重启网络,就可以看到我们添加的网络了

[root@server156 ~]# systemctl restart network
[root@server156 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:50:56:3d:11:ca brd ff:ff:ff:ff:ff:ff
    inet 192.168.121.156/24 brd 192.168.121.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:fe3d:11ca/64 scope link 
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:50:56:28:ee:ca brd ff:ff:ff:ff:ff:ff
    inet 192.168.231.50/24 brd 192.168.231.255 scope global ens37
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:fe28:eeca/64 scope link 
       valid_lft forever preferred_lft forever

然后配置我们的防火墙,让防火墙充当一台路由器,实现转发功能
下面这个配置是开启防火墙的转发功能,并将该主机上80端口的请求都转发到192.168.231.66主机上

[root@server156 ~]# systemctl start firewalld.service 
[root@server156 ~]# echo "1"  > /proc/sys/net/ipv4/ip_forward
[root@server156 ~]# firewall-cmd  --add-masquerade
success
[root@server156 ~]# firewall-cmd --add-forward-port=port=80:proto=tcp:toport=80:toaddr=192.168.231.66
success
[root@server156 ~]# firewall-cmd --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: yes
  forward-ports: port=80:proto=tcp:toport=80:toaddr=192.168.231.66
  source-ports: 
  icmp-blocks: 
  rich rules: 

然后这台主机的配置就完成了

然后配置我们的LVS的DS负载均衡转发服务器
这里我用153主机来当DS服务器,首先让这台主机正常上网
下载一个ipvsadm的软件包

yum install -y ipvsadm

下好了以后就可以关机了
然后修改网络配置
LVS的TUN模式负载均衡配置,详细实战版_第3张图片
修改好以后开机
修改ens33网卡的ip为192.168.231.0网段,但是不要用192.168.231.66,不然会冲突
改ip和网关就好了 其它的不用管,网关记得设置为刚才的156主机充当的路由器,同网段的192.168.121.50,将对应IP改为自己的就可以了
LVS的TUN模式负载均衡配置,详细实战版_第4张图片

然后重启动网卡

然后添加我们192.168.231.66的ip

ifconfig  tunl0  192.168.231.66 broadcast 192.168.231.66 netmask 255.255.255.255 up

在这里插入图片描述

可以尝试ping192.168.231.50看网络是否通
没问题以后就开始配置lvs的负载均衡规则了
由于只能在vm里编辑,没办法复制,你们可以写成脚本

 modprobe  ipip 
 lsmod  | grep ipip
 echo "net.ipv4.ip_forward = 1"   >>  /etc/sysctl.conf
 sysctl  -p
 ipvsadm -A -t 192.168.231.66:80  -s rr
 ipvsadm -a -t 192.168.231.66:80 -r 192.168.231.100 -i
 ipvsadm -a -t 192.168.231.66:80 -r 192.168.231.200 -i
 ipvsadm --save  >  /etc/sysconfig/ipvsadm
 systemctl  daemon-reload
 systemctl  restart ipvsadm.service
 ipvsadm -Ln

LVS的TUN模式负载均衡配置,详细实战版_第5张图片
然后DS服务器也配置好了

然后设置两台LVS的SR服务器,根据架构配,换成自己规划好的的ip就行
我规划的分别是192.168.231.100和192.168.231.200
跟DS服务器一样,先让机器正常联网,安装http或者nginx来测试
不会的话可以看看我nginx反向代理那一章的方法,做一点简单的内容区分访问的主机就好了
安装好测试的http或者nginx就可以关机,然后也是改为仅主机模式就好了

我只配置一台就好了,另一台配置是一样的,就ip100改为200就可以了
下面开始配置192.168.231.100的SR服务器
LVS的TUN模式负载均衡配置,详细实战版_第6张图片
开机以后先修改网络,网关一定要改为充当路由器的192.168.231.50
LVS的TUN模式负载均衡配置,详细实战版_第7张图片
这里要添加一个虚拟ip,为lvs的DS服务器的ip192.168.231.66

然后重启网络,开启ipip模块
LVS的TUN模式负载均衡配置,详细实战版_第8张图片
在/etc/sysctl.conf 添加一些内容
这些配置主要是让100和200的主机在arp请求192.168.231.66的时候不回应,防止ip冲突

#vim /etc/sysctl.conf
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.tunl0.rp_filter=0
net.ipv4.conf.tunl0.arp_ignore=1
net.ipv4.conf.tunl0.arp_announce=2
net.ipv4.conf.all.arp_ignore =1
net.ipv4.conf.all.arp_announce=2

 

LVS的TUN模式负载均衡配置,详细实战版_第9张图片

blog.csdnimg.cn/d293dc6d35404dbca3027d265497d1a0.png)
然后sysctl -p 让配置文件生效,并启动nginx就可以开始测试了
LVS的TUN模式负载均衡配置,详细实战版_第10张图片
当然是两台都完成了再测试
我用了不是路由器也不是lvs里的主机服务器来访问,看到是可以访问到的
LVS的TUN模式负载均衡配置,详细实战版_第11张图片
再去浏览器试试
LVS的TUN模式负载均衡配置,详细实战版_第12张图片
可以看到浏览器也访问成功了,说明我们的LVS的TUN模式负载均衡配置完成了

你可能感兴趣的:(web服务,lvs,负载均衡,运维,服务器)