• 每天进步一点点!

文章分类

推荐网站

常用手册

Nginx负载均衡实例【原创】

<<返回

2013-12-17 04:57:51

  • 网络环境准备

准备六台计算机,一台模拟外网的互联网用户(可以是Linux也可以是Windows),一台模拟Nginx负载均衡服务器(必须是Linux),另四台模拟真实的服务器(Linux)。我们这里使用VMWare安装CentOS5.6作为Nginx负载均衡服务器,另外用VMWare再clone四台CentOS5.6作为Real Server。用WMWare安装windows(我这里用的是windows2003)作为外网的互联网用户,做实验时,请将防火墙关掉。

  • 克隆四台RealServer.

在CentOS5.6关机状态下,进行克隆。右击VM->Manage->Clone->Next....

这里我将3个虚拟机命名为:CentOS5.6.11,CentOS5.6.12,CentOS5.6.13,CentOS5.6.14

  • 给CentOS5.6再添加一块网卡

根据上面的拓扑图可知,CentOS5.6作为LVS服务器,需要两个IP地址,所以我们给这个虚拟机在添加一个网卡。在CentOS5.6启动状态下:VM->Setting->Add->Network Adapter->Next->Finish

  • 设置网卡的连接方式:

将CentOS5.6(LVS)的一块网卡设置为vmnet0,用于与外网通信,一块设置为vmnet1,用于与RealServer通信,windows2003作为外网的互联网用户,网卡设为vmnet0。CentOS5.6.11,CentOS5.6.12,CentOS5.6.13,CentOS5.6.14作为RealServe,网卡都设为vmnet1。我是在Ubuntu上安装的vmware,我的vmware配置如图:

 


 

  • 网络拓扑图

 

 

 

  • 配置ip地址

widows2003

ip:8.8.8.11 netmask:255.255.255.0(作为外网不需要配置网关),其实真实环境中这个ip地址可以不是8.8.8.*,只要是一个合法的外网IP就可以。因为在外网中不同网段的IP是可以相互访问的。这里为了测试,要把外网的用户和LVS规划到一个网络段里才能相互访问。

CentOS5.6 

ifconfig eth0 8.8.8.10 netmask 255.255.255.0
ifconfig eth1 192.168.10.1 netmask 255.255.255.0

这里8.8.8.10是外网IP,192.168.10.1是内网IP

CentOS5.6.11

ifconfig eth0 192.168.10.11 netmask 255.255.255.0
route add default gw 192.168.10.1

CentOS5.6.12

ifconfig eth0 192.168.10.12 netmask 255.255.255.0
route add default gw 192.168.10.1

CentOS5.6.13

ifconfig eth0 192.168.10.13 netmask 255.255.255.0
route add default gw 192.168.10.1

CentOS5.6.14

ifconfig eth0 192.168.10.14 netmask 255.255.255.0
route add default gw 192.168.10.1

查看网关的命令

route -n

删除网关的命令

route del default

如果上面的配置无误的话,在CentOS5.6上可以ping通windows2003,CentOS5.6.11,CentOS5.6.12,CentOS5.6.13中的任何一个。试试看。

在CentOS5.6上开启nginx服务器,CentOS5.6.1~CentOS5.6.4开启apache服务器

可以在windows 2003上测试nginx是否开启成功,在浏览器的地址栏里输入8.8.8.10回车,如果成功会出现“Welcome to nginx”之类的字样。

 

配置Nginx的配置文件

upstream  www.05do.com  {
      server   192.168.10.11:80;
      server   192.168.10.12:80;
}

upstream  www.05do.com  {
      server   192.168.10.13:80;
      server   192.168.10.14:80;
}

server
{
      listen  80;
      server_name  www.05do.com;

      location / {
               proxy_pass        http://www.05do.com;
               proxy_set_header   Host             $host;
               proxy_set_header   X-Real-IP        $remote_addr;
               proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
      }

      access_log  /var/log/nginx/www.05do.com-access.log;
}


server
{
      listen  80;
      server_name  www.05do.com;

      location / {
               proxy_pass        http://www.05do.com;
               proxy_set_header   Host             $host;
               proxy_set_header   X-Real-IP        $remote_addr;
               proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
      }

      access_log  /var/log/nginx/www.05do.com-access.log;
}

重启nginx

在CentOS5.6.1上输入下面命令

echo "www.05do.com 192.168.10.11" > /var/www/html/index.html

在CentOS5.6.2上输入下面命令

echo "www.05do.com 192.168.10.12" > /var/www/html/index.html

在CentOS5.6.3上输入下面命令

echo "www.05do.com 192.168.10.13" > /var/www/html/index.html

在CentOS5.6.4上输入下面命令

echo "www.05do.com 192.168.10.14" > /var/www/html/index.html

 

在window2003上,修改Host:加入下面的一行:

 

8.8.8.10 www.05do.com www.05do.com

在浏览器的地址栏里输入:http://www.05do.com

如果nginx的配置文件中负载均衡的配置正确的话,会交替出现"www.05do.com 192.168.10.11" 和"www.05do.com 192.168.10.12"

在浏览器的地址栏里输入:http://www.05do.com

如果nginx的配置文件中负载均衡的配置正确的话,会交替出现"www.05do.com 192.168.10.13" 和"www.05do.com 192.168.10.14"

 

文章评论

  • 暂无评论

发表评论

昵称:

内容:

发表评论