之前只是看过nginx的转发和均衡负载的功能,然后为了演示最近动手做了下,体会到了nginx的强大~
先来自度娘的一波nginx介绍:
Igor Sysoev从2002年开始开发NGINX,并在2004年发布了第一个公开版本。目前,它是第二流行的开源web服务器,全球有超过30%的网站在使用它。 NGINX依靠异步事件驱动架构来帮助其处理大量的并发会话,由于其对资源的轻量利用和伸缩自如的特性,它成为了广受欢迎的web服务器。 NGINX不仅可作为web服务器进行部署,也可作为代理服务器或负载平衡器。
1.Nginx的安装
事先说一下我的是Linux系统,下面是两种安装方法
第一种安装方法:通过自带的软件仓库安装:sudo apt-get install nginx
安装好的文件位置:
/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志
第二种方法:通过官网下载源程序压缩包安装,具体方法见百度的一篇博客:https://www.cnblogs.com/EasonJim/p/7806879.html
我是采用的第一种方法,然后想要操控nginx服务器可以直接service nginx start/stop/restrat
2.修改Tomcat的配置文件
因为我只有一台电脑,没法实现真正的均衡负载,我就在我电脑上运行三个tomcat服务器,然后通过修改nginx配置文件作为代理,访问同一个url时以轮询的方式来实现均衡负载
直接去tomcat官网下载一个压缩包,解压成3个tomcat,然后修改他们的端口保证他们运行起来不冲突
具体修改配置端口步骤:
来到tomcat的根目录,在/conf下的server.xml是配置tomcat的文件,打开,修改3个端口
比如修改成这样:
注意是修改port那的端口,那个8443不用动,保存
然后每个tomcat的这3个端口都不能相同,否则会产生冲突
产生冲突会无法启动,通过lsof -i:端口号 可以看相应端口的占用情况,必要时直接kill掉进程就好了
修改完成后去每一个tomcat的bin文件里通过./startup.sh来启动,webapps下的examples是tomcat自带的一个例子,输入
localhost:端口号/examples可以查看该例子,然后我对每个tomcat的index.html做出了些修改以查看均衡负载的效果:
3.配置Nginx配置文件
来到/etc/nginx 目录下通过配置nginx.conf来实现均衡负载
nginx负载均衡策略:
轮询 | 默认方式 |
weight | 权重方式 |
ip_hash | 依据ip分配方式 |
least_conn | 最少连接方式 |
fair(第三方) | 响应时间方式 |
url_hash(第三方) | 依据URL分配方式 |
这里用轮询的方式进行测试:
在nginx.conf中的http{}中的server{}前加上:
upstream test{
server 127.0.0.1:8080;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
这里的test表示均衡分配策略,默认情况下是轮询,会均衡负载到填写的每个web服务器中,之前按照博客上的标准轮询写的那个策略名字,然后报了错误代码400,之后修改成了test。。莫名其妙就成功了
之后为了测试转发功能,同时也是使端口不冲突,我把server里的listen 8080;改成了listen 80;
然后把server{}里的location /{}修改成(原来的注意要注释掉):
location /{
proxy_pass http://test;
}
保存,service nginx restart;(如果之前没启动就start)
然后就可以看到均衡负载效果: