LVS-NAT实现Web服务器负载均衡

  • A+
所属分类:服务搭建

LVS全称Linux Virtual Server,即Linux虚拟服务器。负载调度技术是在Linux内核中实现,配置好预设的调度算法后,便能将外部网络请求调度到真实提供服务的主机上,今天给大家分享一篇使用LVS-NAT模式实现Web服务器负载均衡。

 实验环境

实验平台:VMware虚拟机

操作系统:CentOS 6.5

网络模式:桥接网络 + NAT

LVS主机名:Wanghualang-A / VIP eth1:192.168.1.101 / DIP eth0:192.168.168.101

RS1主机名:Wanghualang-C / RIP1 eth0:192.168.168.103

RS2主机名:Wanghualang-D / RIP2 eth0:192.168.168.104

 常用术语

LB:全称Load Balancer,即负载均衡。

LVS:全称Linux Virtual Server,即Linux虚拟服务器,即主机Wanghualang-A。

VIP:全称Virtual IP,即虚拟IP,即主机Wanghualang-A的桥接网卡的IP地址。

Director:即负载调度器,即配置好ipcsadm规则后的主机Wanghualang-A。

DIP:全称Director IP,即负载调度器IP地址,即Wanghualang-A的NAT网卡的IP地址。

RS:全称Real Server,即真实服务器,即两台Web服务器Wanghualang-C、Wanghualang-D。

RIP:全称Real IP,即真实服务器IP地址,即两台Web服务器的IP地址。

 实验拓扑

LVS-NAT实现Web服务器负载均衡

 网络说明

LVS上的网卡eth1使用桥接网络模拟外网,负责与外网用户进行通信;

LVS上的网卡eth0使用NAT网络模拟内网,负责与RS1、RS2服务器进行通信;

RS1、RS2上的网卡eth0均是使用NAT网络模拟内网,只能与DIP进行通信。

 实验目的

外网中的用户可以通过VIP访问网站,且访问网站的请求轮循分发给RS1、RS2,最终实现负载均衡。

 服务端篇

LVS服务器篇

第一步 准备工作

禁用SElinux

  1. [root@Wanghualang-A ~]# setenforce 0  
  2. [root@Wanghualang-A ~]# sed -ri 's#^(SELINUX=).*#\1disabled#g' /etc/selinux/config  

禁用防火墙

  1. [root@Wanghualang-A ~]# service iptables stop  
  2. [root@Wanghualang-A ~]# service ip6tables stop  
  3. [root@Wanghualang-A ~]# chkconfig iptables off        
  4. [root@Wanghualang-A ~]# chkconfig ip6tables off  

安装常用软件

  1. [root@Wanghualang-A ~]# yum -y install wget vim  

第二步 开启端口转发

修改内核参数,开启端口转发功能。

  1. [root@Wanghualang-A ~]# vim /etc/sysctl.conf  

大约在第7行,找到:

  1. net.ipv4.ip_forward = 0  

把0修改1,最终修改如下:

  1. net.ipv4.ip_forward = 1  

重新加载内核新配置文件。

  1. [root@Wanghualang-A ~]# sysctl -p  

第三步 安装ipvsadm

  1. [root@Wanghualang-A ~]# yum -y install ipvsadm  

第四步 配置转发规则

配置VIP和服务端口号,并使用轮循调度算法,即RS1、RS2会轮着接收访问请求。

  1. [root@Wanghualang-A ~]# ipvsadm -A -t 192.168.1.101:80 -s rr  

扩展阅读展开

  1. -A:表示添加记录  
  2. -t:表示指定TCP服务,虚拟IP地址:端口号  
  3. -s:表示指定调度算法,rr全称round-robin,轮循  

当外网中的用户访问VIP的80端口时,配置使用NAT的模式自动把请求转发给RIP1、RIP2。

  1. [root@Wanghualang-A ~]# ipvsadm -a -t 192.168.1.101:80 -r 192.168.168.103 -m  
  2. [root@Wanghualang-A ~]# ipvsadm -a -t 192.168.1.101:80 -r 192.168.168.104 -m  

扩展阅读展开

  1. -t:添加真实服务器的IP地址  
  2. -r:指定真实服务器的IP地址  
  3. -m:全称Masquerade,表示NAT模式的LVS  

保存配置文件

  1. [root@Wanghualang-A ~]# /etc/init.d/ipvsadm save  

启动服务并配置开机启动

  1. [root@Wanghualang-A ~]# service ipvsadm start  
  2. [root@Wanghualang-A ~]# chkconfig ipvsadm on  

Web服务器1篇

第一步 准备工作

禁用SElinux

  1. [root@Wanghualang-C ~]# setenforce 0  
  2. [root@Wanghualang-C ~]# sed -ri 's#^(SELINUX=).*#\1disabled#g' /etc/selinux/config  

禁用防火墙

  1. [root@Wanghualang-C ~]# service iptables stop  
  2. [root@Wanghualang-C ~]# service ip6tables stop  
  3. [root@Wanghualang-C ~]# chkconfig iptables off        
  4. [root@Wanghualang-C ~]# chkconfig ip6tables off  

安装常用软件

  1. [root@Wanghualang-C ~]# yum -y install wget vim  

第二步 配置网关

当外部用户访问VIP的时候,Director便会把访问请求转发给RS1、RS2,当RS1、RS2接收请求后,便会返回数据给DIP,为了让RS1、RS2能与DIP正常通信,需要在RS1、RS2上配置网关,网关地址就是DIP。

  1. [root@Wanghualang-C ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0  

红字部分为配置文件内容:

  1. DEVICE=eth0  
  2. TYPE=Ethernet  
  3. ONBOOT=yes  
  4. NM_CONTROLLED=yes  
  5. BOOTPROTO=none  
  6. HWADDR=00:0C:29:F2:47:AF  
  7. IPADDR=192.168.168.103  
  8. PREFIX=24  
  9. GATEWAY=192.168.168.101  
  10. IPV4_FAILURE_FATAL=yes  
  11. IPV6INIT=no  
  12. NAME="System eth0"  

第三步 安装Apache

为了节省时间,教程中使用Yum方式快速安装软件。

  1. [root@Wanghualang-C ~]# yum -y install httpd  

新建第一个简单的网站,网页内容最好与第二个网站区分开,以便用于测试轮循调度算法。

  1. [root@Wanghualang-C ~]# rm -rf /var/www/html/*  
  2. [root@Wanghualang-C ~]# echo "This is Wanghualang-C" >> /var/www/html/index.html  

启动服务并设置开启启动。

  1. [root@Wanghualang-C ~]# service httpd start  
  2. [root@Wanghualang-C ~]# chkconfig httpd on  

Web服务器2篇

第一步 准备工作

禁用SElinux

  1. [root@Wanghualang-D ~]# setenforce 0  
  2. [root@Wanghualang-D ~]# sed -ri 's#^(SELINUX=).*#\1disabled#g' /etc/selinux/config  

禁用防火墙

  1. [root@Wanghualang-D ~]# service iptables stop  
  2. [root@Wanghualang-D ~]# service ip6tables stop  
  3. [root@Wanghualang-D ~]# chkconfig iptables off        
  4. [root@Wanghualang-D ~]# chkconfig ip6tables off  

安装常用软件

  1. [root@Wanghualang-D ~]# yum -y install wget vim  

第二步 配置网关

当外部用户访问VIP的时候,Director便会把访问请求转发给RS1、RS2,当RS1、RS2接收请求后,便会返回数据给DIP,为了让RS1、RS2能与DIP正常通信,需要在RS1、RS2上配置网关,网关地址就是DIP。

  1. [root@Wanghualang-D ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0  

红字部分为配置文件内容:

  1. DEVICE=eth0  
  2. TYPE=Ethernet  
  3. ONBOOT=yes  
  4. NM_CONTROLLED=yes  
  5. BOOTPROTO=none  
  6. HWADDR=00:0C:29:73:62:C3  
  7. IPADDR=192.168.168.104  
  8. PREFIX=24  
  9. GATEWAY=192.168.168.101  
  10. IPV4_FAILURE_FATAL=yes  
  11. IPV6INIT=no  
  12. NAME="System eth0"  

第三步 安装Apache

为了节省时间,教程中使用Yum方式快速安装Apache。

  1. [root@Wanghualang-D ~]# yum -y install httpd  

新建第二个简单的网站,网页内容最好与第一个网站区分开,以便用于测试轮循调度算法。

  1. [root@Wanghualang-D ~]# rm -rf /var/www/html/*  
  2. [root@Wanghualang-D ~]# echo "This is Wanghualang-D" >> /var/www/html/index.html  

启动服务并设置开启启动。

  1. [root@Wanghualang-D ~]# service httpd start  
  2. [root@Wanghualang-D ~]# chkconfig httpd on  

 客户端篇

使用主流浏览器访问:http://192.168.1.101,一切顺利的话,便会看到“This is Wanghualang-C”,刷新页面后,则会看到“This is Wanghualang-D”,如此循环显示。

  • 微信赞助网站
  • weinxin
  • 支付宝赞助网站
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: