[OsChina] nginx三大功能(之二负载均衡)

发表于:  阅读量:20061

摘要

什么是负载均衡??负载均衡是指N台服务器平均分担负载,不会因为某台服务器负载高而使得某台闲置的情况。负载均衡要求的是即有两台服务器以上即可。测试环境由于没有服务器,所以本次测试直接使用host设置域...

什么是负载均衡??

负载均衡是指N台服务器平均分担负载,不会因为某台服务器负载高而使得某台闲置的情况。

负载均衡要求的是即有两台服务器以上即可。

测试环境

由于没有服务器,所以本次测试直接使用host设置域名,使用VMware虚拟机来完成:

测试域名:www.javaDevelopment.com

A 服务器IP(192.168.17.33)

主服务器 B服务器IP (192.169.17.34)

C服务器IP(192.168.17.35)

将A服务器作为主服务器,域名直接解析到A服务器上,用A服务器分别来负载B服务器和C服务器 域名解析在本机配置host文件 配置完成后为确保万无一失,使用ping命令测试一下

配置主服务的配置文件(nginx.conf)

打开nginx.conf,

该文件位置为nginx安装目录下的conf目录下

在http段加入以下代码:

upstream javaDevelopment.com {

server 192.168.17.34:80;

server 192.168.5.35:80;

}

server{

listen 80;

server_name javaDevelopment.com;

location / {

proxy_pass http://www.javaDevelopment.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;

}

}

保存重启nginx

B、C服务器配置nginx.conf配置文件

在nginx.conf http段中加入如下代码:

server{

listen 80;

server_name javaDevelopment.com;

index index.html;

root /data0/htdocs/www;

}

保存重启nginx

测试在地址栏中输入www.javaDevelopment.com网址进行访问,看是否分配到了不同的服务器。

使用主机提供负载均衡服务:

就用以上例子来实现

A 服务器IP(192.168.17.33)主服务器

B服务器IP (192.168.17.34)

C服务器IP(192.168.17.35)

之前是将域名解析到主服务上(A服务器),而A服务器的功能只是相当于一个转发功能,其实也可以让A服务器作为站点服务。

如果添加主服务器到upstream中,那么可能会有以下两种情况发生:

(1)主服务器转发到其他IP上,其他IP服务器会正常处理;

(2)主服务转发到自己的IP上,然后又进到主服务IP分配上,假如一直分配不到IP地址,则会造成一个死循环;

因为在此之前已经使用80作为监听负载均衡的端口了,那么此时来处理的时候就不能使用80端口来处理了,需要重新换一个端口去处理。

在nginx.conf http段中加入以下配置

server{

listen 8090;

server_name javaDevelopment.com;

index index.html;

root /data0/htdocs/www;

}

保存重启nginx 在地址栏中输入wwww.javaDevelopment.com,看是否能正常访问;

之后在upstream javaDeelopment.com{

server 192.168.17.34:80;

server 192.168.17.35:80;

server 192.168.17.33:8080; 或 server 127.0.0.0.1:8080;

}

重启nginx

/usr/local/sbin/nginx & 或 cd /usr/local/sbin/nginx ./nginx -s reload

关键词: Nginx负载均衡
-->
渝ICP备16002246号 Copyright © 2017. Singee77.com