Tomcat+Nginx搭建集群

jopen 8年前

Nginx配置过程如下:

 

(1)到Nginx官网下载Nginx的Windows版本:点击打开链接(这里我们使用nginx/Windows-1.4.7版本进行实验)

(2)解压到磁盘任意目录,例如这里我解压到虚拟机1中:C:\software\nginx-1.4.7

(3)启动、停止和重新加载服务:通过cmd以守护进程方式启动nginx.exe:start nginx.exe,停止服务:nginx-s stop,重新加载配置:nginx -s  reload

 

修改Nginx核心配置文件nginx.conf

(1)进程数与每个进程的最大连接数:

      •nginx进程数,建议设置为等于CPU总核心数

      •单个进程最大连接数,那么该服务器的最大连接数=连接数*进程数



(2)Nginx的基本配置:

      •监听端口一般都为http端口:80;

      •域名可以有多个,用空格隔开:例如 server_name www.sohu.com baidu.com;



(3)负载均衡列表基本配置:

•location/ {}:对什么样的后缀进行负载均衡请求,假如我们要对所有的aspx后缀的文件进行负载均衡时,可以这样写:location ~ .*\.aspx$ {}

•proxy_pass:请求转向自定义的服务器列表,这里我们将请求都转向标识为http://netitcast.com;的负载均衡服务器列表;




•在负载均衡服务器列表的配置中,weight是权重,可以根据机器配置定义权重(如果某台服务器的硬件配置十分好,可以处理更多的请求,那么可以为其设置一个比较高的weight;而有一台的服务器的硬件配置比较差,那么可以将前一台的weight配置为weight=2,后一台差的配置为weight=1)。weigth参数表示权值,权值越高被分配到的几率越大;




以上仅仅是nginx的基础配置

 

测试说明:


分别向两台虚拟机中的tomcat服务器中部署hjy.war这个web项目(为了以示访问的是不同的web服务器,我们的两台虚拟机中部署的hjy这个项目在页面显示上略有不同),虚拟机1中,页面显示test1,虚拟机2中页面显示test2

注:1254是虚拟机1,配置的权重为2,

2nginx部署到254这台机子上了

 

启动nginx,并启动两台虚拟机的tomcat




运行结果:

 

访问nginx:http://localhost/hjy/test.jsp


由于权重的不同,在我们不断刷新页面的过程中,显示test1的可能性会大一些

 

扩展:添加Nginx对于静态文件的缓存配置

 

为了提高响应速度,减轻真实服务器的负载,对于静态资源我们可以在反向代理服务器中进行缓存,这也是反向代理服务器的一个重要的作用。


(1)缓存静态资源之图片文件

root/nginx-1.4.7/staticresources/image:对于配置中提到的jpg/png等文件均定为到/nginx-1.4.7/staticresources/image文件夹中进行寻找匹配并将文件返回;

expires7d:过期时效为7天,静态文件不怎么更新,过期时效可以设大一点,如果频繁更新,则可以设置得小一点;

tips:下面的样式、脚本缓存配置同这里一样,只是定位的文件夹不一样而已,不再赘述。



(2)缓存静态资源之样式文件



(3)缓存静态资源之脚本文件



(4)在nginx服务文件夹中创建静态资源文件夹,并要缓存的静态文件拷贝进去:这里我主要将Web程序中用到的image、css以及js文件拷贝了进去;



(5)总结:通过配置静态文件的缓存设置,对于这些静态文件的请求可以直接从反向代理服务器中直接返回,而无需再将这些静态资源请求转发到具体的Web服务器进行处理了,可以提高响应速度,减轻真实Web服务器的负载压力。

 

总结:


本文中我们使用Nginx在Windows环境下搭建了一个反向代理服务,并模拟了一个Tomcat服务器集群的负载均衡效果。从这个demo中,我们可以简单地感受到反向代理为我们所做的事情,并体会负载均衡是怎么一回事。


附:


每次以cmd方式启动Nginx服务不符合实际要求,于是我们想到将其注册为Windows服务,并设置为自动启动模式。这里,我们使用一个不错的小程序:“WindowsService Wrapper”,将nginx.exe注册为Windows服务,具体的步骤如下:

①下载最新版的 Windows Service Wrapper 程序,比如我下载的名称是 “winsw-1.8-bin.exe”(本文底部有下载地址),然后把它命名成你想要的名字(比如:“nginx-service.exe”,当然,你也可以不改名)

②将重命名后的 nginx-service.exe 复制到 nginx 的安装目录(比如,我这里是 “D:\Servers\nginx-1.4.7″

③在同一个目录下创建一个Windows Service Wrapper XML配置文件,名称必须与第一步重命名时使用的名称一致(比如我这里是 “nginx-service.xml”,  如果,你没有重命名,则应该是 “winsw-1.8-bin.xml”),这个XML的内容如下:

<?xmlversion="1.0" encoding="UTF-8"?>  <service>  <id>nginx</id>  <name>Nginx Service</name>  <description>High Performance NginxService</description>  <executable>D:\Servers\nginx-1.4.7\nginx.exe</executable>  <logpath>D:\Servers\nginx-1.4.7\</logpath>  <logmode>roll</logmode>  <depend></depend>  <startargument>-p D:\Servers\nginx-1.4.7</startargument>  <stopargument>-p D:\Servers\nginx-1.4.7 -sstop</stopargument>  </service>

④在命令行下执行以下命令,以便将其注册成Windows服务:nginx-service.exe install

⑤接下来就可以在Windows服务列表看到Nginx服务了,这里我们可以将其设置为自动启动了:




(5)总结:在Windows环境中,要对外提供的Windows服务一般都要将其启动类型设置为自动。




来自: http://blog.csdn.net/hejingyuan6/article/details/47262419