本文正在参与 “走过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效果如下:
至此,LVS Net负载均衡环境搭建完毕。
好了,今天就到这儿吧,我是冰河,我们下期见~~