Nginx实现负载均衡

来源:互联网 发布:手机淘宝怎样删除订单 编辑:程序博客网 时间:2024/05/18 02:00

Nginx实现负载均衡

Nginx是一个性能非常好的反向代理服务器,用来做负载均衡的绝佳选择。

1、何为反向代理?

既然提到反向代理,那么就有正向代理。接下来,我们解释一下这讲个概念:

1.1、正向代理

现在很多人喜欢在国外买东西,因为便宜。比如买一罐新西兰的奶粉,如果我们亲自去新西兰一趟,就不划算了,其他不说,就往返的机票都很贵,这样算下来,原本便宜的奶粉,变得比国内的贵了更多。于是你找到在新西兰留学的朋友帮你买一罐,然后邮寄给你,这样就很划算了。

那么在此过程中的新西兰朋友就是你的代理人,帮助你完成了你的需求。这就是正向代理。

正向代理其实就是一般的代理,通常所说的代理就是正向代理。

1.2、反向代理

比如你拨打银行客服电话400xxxxxxx,负责接电话的银行客服可能有几百人,你永远都会不知道,接听你电话的客服叫什么、身高、是否帅气或者漂亮;当然,这些你都不关心,你关心的是你的问题是否有人帮你解决。其中400客服总机就是反向代理,你不需要知道真正给你提供服务的是谁。这个例子中的400总机就是反向代理。

2、反向代理和负载均衡

反向代理是负载均衡的核心原理,可以理解为负载均衡是反向代理的一个具体实现。负载均衡的图示如下:

img

如上图,负载均衡服务器就好比400客服总机,它是服务器1、服务器2、服务器3的代理,用户通过负载均衡服务器将需求发送给服务器1或者服务器2或者服务器3,具体是那一台服务器在提供服务,用户不需要关心。

3、负载均衡的优点

负载均衡,扩展了网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。换而言之,负载均衡将原本一台服务器做不完的活,交给了其他服务器来处理,这样“雨露均沾”,减轻了一台服务器的压力,同时提高了响应速度(用户不用一直看着浏览器读条了)。

4、Nginx的配置

接下来,我们开始进行负载均衡的配置。

4.1、准备工作

1.准备2台电脑(或者在一台电脑上安装虚拟机也行),其中一台电脑是windows系统(电脑A),另一台是linux系统(电脑B)。

4.2、安装和配置

4.2.1、在电脑B上安装jre环境和2个tomcat服务器,分别是tomcat1和tomcat2。将tomcat2的端口号修改为下图中红色方框的值(因为在一台电脑上不能有2个端口一样的tomcat存在)。修改tomcat2安装目录下的conf/server.xml文件:

tomcat2-server-20170915.png

tomcat2-server-20170915-1.png

tomcat2-server-20170915-2.png

4.2.2、测试tomcat是否安装成功,分别启动2个Tomcat,关闭Linux服务器的防火墙,在windows系统中访问Tomcat地址(http://电脑B的IP:8080/ 和 http://电脑B的IP:8081/),你会看到tomcat的首页,则表示配置成功。

4.2.3、安装Nginx。在电脑A上安装Nginx,下载地址(点击这里),下载之后解压(解压就行,不需要安装)。

4.2.4、进入Nginx安装目录,打开配置文件conf/nginx.conf,添加如下配置信息:

server {        listen 80; #负载均衡服务器的端口        server_name localhost; #负载均衡服务器的主机名称    ...    }...location / {          proxy_pass http://qianfeng.com;          proxy_redirect default;            root html;            index index.html index.htm;        }...upstream qianfeng.com{    #weight是权重,表示优先访问那一台服务器,取值一样,表示雨露均沾     server tomcat1的IP:8080 weight=1;      server tomcat2的IP:8081 weight=1;    }

4.3、测试

在电脑A上使用DOS命令,执行nginx.exe,启动Nginx反向代理服务器(不要关闭DOS窗口)。然后在电脑A上打开浏览器,输入地址:http://localhost/index.jsp。就可以看到访问成功的效果。

可以通过修改Tomcat安装目录下的webapps中的ROOT文件夹下的index.jsp中的内容,以便能区分2个Tomcat的项目切换,这就是负载均衡。

最后,我们就可以将项目部署到tomcat1和tomcat2上,之后在通过http://localhost/project_name/ 访问就实现了负载均衡。

4.4、问题

2个tomcat服务器,会导致session也有2个,tomcat1和tomcat2中的session无法进行数据共享,如何进行session共享,我们下一节讲解。

原创粉丝点击