LVS DR模式与网络拓扑实现负载均衡

960 阅读4分钟

本文正在参与 “走过Linux 三十年”话题征文活动

大家好,我是冰河~~

今天,我们一起来聊聊Linux中LVS DR模式以及使用LVS网络拓扑如何实现负载均衡。

LVS DR模式

搭建环境 (系统为 Centon 6.5 )

  • LVS-server IP:192.168.0.145
  • Real-Server1 IP: 192.168.0.146 安装web服务器 准备测试站点内容
  • Real-Server2 IP: 192.168.0.147 安装web服务器 准备测试站点内容
  • 测试机:xp/window7/8都可以,只要能ping通 192.168.0.*

LVS服务器部署

(1)LVS-server配置

a. VIP设置:

[root@binghe ~]# ifconfig eth0:0 192.168.0.100 netmask 255.255.255.255 
[root@binghe ~]# route add -host 192.168.0.100 dev eth0:0

b.安装Ipvsadm

[root@binghe ~]# yum -y install ipvsadm* 

c.lvs配置:

[root@binghe ~]# ipvsadm -C
[root@binghe ~]# ipvsadm -At 192.168.0.100:80 -s rr
[root@binghe ~]# ipvsadm -at 192.168.0.100:80 -r 192.168.0.146:80 -g
[root@binghe ~]# ipvsadm -at 192.168.0.100:80 -r 192.168.0.147:80 -g
[root@binghe ~]# ipvsadm -L -n

(2)Real-Server1配置

[root@binghe ~]# ifconfig lo:0 192.168.0.100 netmask 255.255.255.255
[root@binghe ~]# route add -host 192.168.0.100 dev lo:0
[root@binghe ~]# echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore 
[root@binghe ~]# echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce 
[root@binghe ~]# echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore 
[root@binghe ~]# echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

(3)Real-Server2配置

同Real-Server1相同。

测试

现在通过测试机,直接访问 LVS VIP http://192.168.0.100 正常的话即可访问到准备的测试站点. 配置LVS采用的是轮循模式。第一次是访问Real-Server1,刷新后是访问Real-Server2,再刷新后访问Real-Server1

网络拓扑实现负载均衡

实验规划

三台CentOS虚拟机

  • vip:192.168.0.145
  • sip:192.168.0.146 192.168.0.147

1.vip规划

192.168.0.145 做为LVS Server(LVS服务器),其中,再添加一块虚拟网卡ip地址为192.168.106.130,两个ip地址为两个不同网络段的地址,其中192.168.106.130为对外的网络,也就是能和真实PC机通信的ip,192.168.0.145作为另外两台sip虚拟机的网关;

注意:192.168.0.145为bridged连接方式,网关为192.168.0.1(和真实PC一致),192.168.106.130为NAT连接方式;

ip信息如下:

[root@binghe145 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
TYPE=Ethernet
UUID=4f9aa259-ab85-4f26-9b54-adbd5b9d3af3
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.0.145
NETMASK=255.255.255.0
BROADCAST=192.168.0.255
GATEWAY=192.168.0.1
DNS1=114.114.114.114
DNS2=8.8.8.8
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
PREFIX=24
HWADDR=00:50:56:3A:D4:B5
LAST_CONNECT=1471798199
[root@binghe145 ~]#

2.sip规划

192.168.0.146和192.168.0.147将网关设置为192.168.0.145,具体ip信息如下:

192.168.0.146 ip信息:

[root@binghe146 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
TYPE=Ethernet
UUID=4f9aa259-ab85-4f26-9b54-adbd5b9d3af3
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.0.146
NETMASK=255.255.255.0
BROADCAST=192.168.0.255
GATEWAY=192.168.0.145
DNS1=114.114.114.114
DNS2=8.8.8.8
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
PREFIX=24
HWADDR=00:50:56:2B:B0:B8
LAST_CONNECT=1471798199
[root@binghe146 ~]#

192.168.0.147 ip信息

[root@binghe147 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
TYPE=Ethernet
UUID=4f9aa259-ab85-4f26-9b54-adbd5b9d3af3
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.0.147
NETMASK=255.255.255.0
BROADCAST=192.168.0.255
GATEWAY=192.168.0.145
DNS1=114.114.114.114
DNS2=8.8.8.8
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
PREFIX=24
HWADDR=00:50:56:26:00:3D
LAST_CONNECT=1471798199
[root@binghe147 ~]#

具体设置

1.vip设置

1)安装ipvsadm

首先要在vip(192.168.0.145)虚拟机上安装ipvsadm,在命令行输入如下命令即可安装:

yum -y install ipvsadm*

2)配置转发脚本

要想将PC机访问vip 192.168.106.130时以负载均衡的形式转发到sip(192.168.0.146和192.168.0.147)上,就要通过ipvsadm命令来设置转发规则,所以我们在vip虚拟机上创建脚本文件:lvs.sh,具体如下:

#!/bin/bash
#lvs.sh

ipvsadm -C
ipvsadm -At 192.168.106.130:80 -s rr
ipvsadm -at 192.168.106.130:80 -r 192.168.0.146:80 -m
ipvsadm -at 192.168.106.130:80 -r 192.168.0.147:80 -m
ipvsadm -L -n

要想lvs.sh脚本文件可以正常执行,则需要设置相应的权限,如下输入命令,执行成为可执行文件

chmod a+x lvs.sh

在命令行输入如下命令启动脚本

./lvs.sh

命令行输出如下命令:

[root@binghe145 ~]# ./lvs.sh 
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.106.130:80 rr
  -> 192.168.0.146:80             Masq    1      0          0         
  -> 192.168.0.147:80             Masq    1      0          0         
[root@binghe145 ~]# 

说明脚本执行成功

3)将vip虚拟机设置成路由模式

CentOS默认为非路由模式,要想将其修改为路由模式需要修改/proc/sys/net/ipv4/ip-forward文件,文件中默认的值为0,即非路由模式,这里,我们需要将其修改为1,具体修改方式如下所示。

vim /etc/sysctl.conf

 net.ipv4.ip_forward = 0

改成

 net.ipv4.ip_forward = 1

如果此文件中没有这个选项则将其添加上就行。 然后执行命令:

sysctl -p

使其生效,如下所示。

[root@binghe145 ~]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
vm.min_free_kbytes = 65536
kernel.panic_on_oops = 1
kernel.panic = 60

再一次的查看

[root@binghe145 ~]# cat /proc/sys/net/ipv4/ip_forward 
 1 

原来的0就变为1了。

2.sip设置

我们在sip虚拟机上安装Nginx来部署静态网页,通过真实PC访问vip,由vip均衡的转发到sip,访问sip的静态网页来实现负载均衡。

3.测试

环境部署好了,我们在PC浏览器上输入链接http://192.168.106.130效果如下:

img

img

至此,LVS Net负载均衡环境搭建完毕。

好了,今天就到这儿吧,我是冰河,我们下期见~~