廖先贵 2018-07-09
一、简介
【Nginx】 大名鼎鼎,麻雀虽小五脏俱全,它拥有小而稳且高效的特性。为目前大多数中小企业所使用。nginx可以做以下几件事:
【Tomcat】 是一个免费开放源代码的 Web 应用服务器,具有开源免费、容易安装、 容易使 用、占用资源小、易于和其他软件集成等优点。 Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载 平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感 兴趣的程序员都可以更改它或在其中加入新的功能。
【N+T的负载均衡】
然而他们的组合将是一把无与伦比的利刃。首先说明一下它的请求原理(路径走向)
Nginx作为反向代理服务器,实现负载均衡。首先浏览器发起请求,到达Nginx,由Nginx将请求地址转发给相应的tomcat服务器,再由tomcat服务器将结果返回给Nginx,Nginx将结果再转发给浏览器。
下面上图:
图中的信息显而易见,以nginx服务器作为中转分发请求,以达到负载均衡的目的。
二、环境需求
【由于博主的主机(脸红~)配置低,所以只开一开虚拟机作为这次负载均衡的测试。一个ip三个端口既可实现上图所述的效果了】
主机A:192.168.0.144/24
apache-tomcat-6.0.35.tar.gz tomcat 6 使用的主要端口:18080
apache-tomcat-7.0.82.tar.gz tomcat 7 使用的主要端口:28080
apache-tomcat-8.5.23.tar.gz tomcat 8 使用的主要端口: 8088
nginx-1.0.12.tar.gz
jdk7u79linuxx64.tar.gz
(其他一些基础环境比如gcc-c++的自己补全吧)
三、各个环境的搭建
3.1 Nginx搭建
先把所有准备好的软件工具放到一个目录下(都先准备好必用软件,不然配置起来才去找软件是很烦人的)
接下来安装一下开发环境
在/usr目录下面创建一个nginx的目录,并把nginx包移动到该目录下,再解压到该目录下面
最好进入nginx-1.0.12目录,再编译安装
一般编译安装都默认在/usr/local/nginx/ 目录下面 ,下面这个就是nginx的主程序。
本博文为了搭建的方便直接把这个主程序拉倒/usr/bin/ 目录下了
下面是配置文件
简单的配置了一下配置文件
下面运行nginx,查看信息
注意:nginx没有启动起来,麻烦去认真的检查一下nginx配置文件。
PS:开机机动启动的话,直接把启动代码丢进rc.local这个文件里面即可。
nginx的基本部署完成!
3.2 Tomcat 的搭建
由于tomcat依赖于jdk环境下运行,所以先搭建jdk环境,配置变量环境
PS:关于软件依赖的变量环境
就目前来去为一个软件或者环境的运行去搭建变量环境主要用下面三种方法
1、在/etc/profile下配置,这属于大环境的配置了。不过管理上不灵活,属于点到面的管理(本博文由于只有这个tomcat用到,所以在这配置了)
2、在/etc/profile.d/目录下面创建一个专属的变量环境如:tomcat.sh 在里面指的变量路径以及文件路径,这种方式管理很灵活,属于点到点的管理。
3、在软件的某个文本下面去直接添加指定的变量环境,如tomcat的。
setclasspath.sh 里面指定。软件的不同在不同的文件指定吧,这个可以在度娘查到。第三种办法一般很少用到。
继续!下面在/etc/profile下配置变量环境
最后直接执行,使得文件profile生效
接着执行 java -version 命令即可看到对应的版本号,说明已经生效了。(在这里有些小伙伴会时常出现一个问题,明明tomcat已经实在用这个
jdk版本了,可是输入命令java -version 显示出来的却不是目前tomcat在用的jdk版本,这时候该注意一下查看tomcat下面的comment目录下的jdk版本是否对应的,不是的话。就把jdk下的替换过去,另外我还有寻找另外一种解决办法,希望各位赐教。)
jdk部署完毕!
3.3 tomcat 的搭建
在/usr 下创建tomcatG 的目录,并且把三个版本的tomcat拉到目录下分别改名为tomcat6、tomcat7、tomcat8。最后分别解压,再修改server.xml 文档的端口
下面修改tomcat6的server.xml文件:三处地方
1、
2、
3、
剩下的tomcat7和tomcat8以此类推!
下面启动tomcat6-8
启动tomcat6:
如图所示!
tomcat 7-8以此类推!
再看一下三个tomcat启动的进程。
可以看到,各个端口以及运行的变量环境(jdk)这个排版比较长,需要往后面拉取才能看到所有内容。
3.4 配置负载均衡
在nginx里面添加几条代码即可,下面请看
【关于nginx的负载均衡的分配方式】
nginx关于这个负载均衡方面的权重分配方式有4种:
1.轮询,默认采取此方式,Nginx会按照请求时间的先后顺序进行轮询分发,若某台Web Server宕机,Nginx自动将其摘掉。
2.weight,权重,即轮询的几率,值越大,被分发的可能性越大,用于后端服务器性能不均的情况。
3. ip_hash ,每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决共享session的问题。
4.自定义规则
PS:
down 表示当前的Web Server暂时不参与负载
weight 默认为1.weight越大,负载的权重就越大。
backup: 其它所有的非backup Server down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
四、负载均衡的测试
为了是的测试的效果明了些,我把/usr/tomcatG/tomcat6/webapps/ROOT 目录下的index.jsp 文件的内容全部删除掉,直接改为tomcat6 ,7-8一样如此。
在测试之前需要检查一下,下面几个个问题。确保没问题了,就去测试,不然返回来做无用功了。
1、nginx、tomcat、jdk正在运行
2、网页上能够哦正常访问nginx 和 tomcat
3、防火墙
我就在本地主机上面的浏览器测试吧,因为跟物理机是连通的。
在浏览器输入:http://192.168.0.144/index.jsp 然后不停按F5刷新网页,接着网页会不停的在tomcat6、tomcat7、tomcat8的内容标识上面做跳转,显示的内容也会不一样。
如图:
不停的刷新,看着页面的变化。你会发现权重等于1的tomcat6出现的次数会比tomcat7和tomcat8的次数很多的。
上面只是个简单的测试,有兴趣的伙伴可以添加去修改这个jsp文档,哈哈。
上述图片说明了nginx的负载均衡是正在运行中的了。测试完毕!
五、总结
在搭建这个环境需要注意的几点:
1、tomcat的端口,由于是在一台机器上面部署3个tomcat,所以改的端口就有9个了。主机端口的范围,超出范围不然tomcat是无法启动的
2、jdk变量环境的搭建,注意路径。
3、nginx 配置文档的参数、模块注意编写。不然无法启动
4、注意防火墙设置,对于需求安全性的伙伴们。当然测试你可以完全的关闭掉。
nginx和tomcat的负载均衡,基本配置完毕,这类型的负载均衡目前在很多的企业被使用。然而这仅仅是企业网络架构中的一个小小的部分,我期待后面能够给大家讲述更多关于这方面的知识。