Nginx+Tomcat搭建集群
重点:我利用nginx命令启动停止和重新加载配置文件发现有时不能及时加载我修改的nginx.conf.我去任务管理器结束nginx进程重启nginx就可以了;也有可能是开启多个nginx,有的nginx用的是老配置文件,全部结束nginx进程重启即可。
一、 工具
nginx-1.12.2
apache-tomcat-7.0.80
二、 目标
实现高性能负载均衡的Tomcat集群:
三、 步骤
1、首先在官网中下载所需版本:http://nginx.org/en/download.html,要下载稳定版,下载完毕后,解压。
在此安装目录下打开命令窗口,输入start nginx开启nginx服务
2、然后下载并解压两个Tomcat,分别命名为apache-tomcat-7.0.80-1和apache-tomcat-7.0.80-2:
3、然后修改这两个Tomcat的启动端口,分别为8010和8011,下面以修改第一台Tomcat为例,打开Tomcat的conf目录下的server.xml:共需修改3处端口:
改动一
首先到安装目录(或者解压目录)下找到conf文件夹,在里面找到server.xml的文件,找到
- <Connector port="8080" protocol="HTTP/1.1"
- connectionTimeout="20000"
- redirectPort="8443" />
修改为port="8010"
这种修改对于8080端口冲突是可以解决的,但是如果想同时使用两个tomcat,那么这样的修改还不完整,因为还有其它的端口会冲突。我们仍需要继续修改
改动二
- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 的8009改为其它。
改动三
- <Server port="8005" shutdown="SHUTDOWN"> 的8005改为其它。
4、然后启动两个Tomcat,并访问,看是否正常。下面两图修改了两个Tomcat的默认页面(修改路径:D:\tomcatnginx\apache-tomcat-7.0.80-2\webapps\ROOT\index.jsp)。第一行加了xuwc tomcat2和xuwc tomcat1
5、现在我们可以开始配置Nginx来实现负载均衡了,其实非常的简单,只需要配置好Nginx的配置文件即可:
如果请求为localhost:8001,nginx会将请求转发给netitcast.com集群中的两台机器处理。
6、首先,我们启动Nginx:
用start nginx启动nginx nginx -s reload 加载配置文件 nginx -s stop 关闭nginx 。
我利用上述命令发现有时不能及时加载我修改的nginx.conf.我去任务管理器结束nginx进程重启nginx就可以了;也有可能是开启多个nginx,有的nginx用的是老配置文件,结束nginx进程重启即可。
7、然后我们即可输入:localhost:8001查看运行状况,并连续访问多次
第一次访问
第二次访问
第三次访问
到此,我们利用Nginx已经实现了负载均衡的Tomcat集群。我们不断的刷新,发现xuwc tomcat1 的概率大概是xuwc tomcat2 的2倍,这是因为我们在Nginx中配置的两台Tomcat的权重起的作用。server 127.0.0.1:8010 weight=1;server 127.0.0.1:8011 weight=2;
扩展
1. nginx.conf配置含义
#user nobody;
worker_processes 1; #nginx进程数,建议设置为等于CPU总核心数
#pid logs/nginx.pid;
events {
worker_connections 1024; #单个进程最大连接数,那么该服务器的最大连接数=连接数*进程数
}
http {
include mime.types;
default_type application/octet-stream;
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65; #连接超时时间
#gzip on;
upstream netitcast.com{
server 127.0.0.1:8010 weight=1;
server 127.0.0.1:8011 weight=2;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / { #对什么样的后缀进行负载均衡请求 /表示所有请求都被匹配到这里
root html; #里面配置了root这时表示当匹配这个请求的路径时,将会在这个文件夹内寻找相应的文件,这里对我们之后的静态文件伺服很有用
index index.html index.htm; #当没有指定主页时,默认会选择这个指定的文件,它可以有多个,并按顺序来加载,如果第一个不存在,则找第二个,依此类推。
}
location / {
proxy_pass http://netitcast.com; #请求转向自定义的服务器列表,这里我们将请求都转向标识为http://netitcast.com;的负载均衡服务器列表
}
2.Nginx对于静态文件的缓存配置
为了提高响应速度,减轻真实服务器的负载,对于静态资源我们可以在反向代理服务器中进行缓存,这也是反向代理服务器的一个重要的作用。
(1)缓存静态资源之图片文件
root/nginx-1.4.7/staticresources/image:对于配置中提到的jpg/png等文件均定为到/nginx-1.4.7/staticresources/image文件夹中进行寻找匹配并将文件返回;expires7d:过期时效为7天,静态文件不怎么更新,过期时效可以设大一点,如果频繁更新,则可以设置得小一点;
(4)在nginx服务文件夹中创建静态资源文件夹,并要缓存的静态文件拷贝进去:这里我主要将Web程序中用到的image、css以及js文件拷贝了进去;
(5)总结:通过配置静态文件的缓存设置,对于这些静态文件的请求可以直接从反向代理服务器中直接返回,而无需再将这些静态资源请求转发到具体的Web服务器进行处理了,可以提高响应速度,减轻真实Web服务器的负载压力。
3.Nginx 简介
一、 概念
Nginx——Ngine X,是一款高性能的反向代理服务器;也是一个IMAP、POP3、SMTP代理服务器;也是一个Http服务器。也就是说Nginx本身就可以托管网站,进行Http服务处理,也可以作为反向代理服务器使用。
二、 正向代理和反向代理
首先,代理服务器一般指局域网内部的机器通过代理服务器发送请求到互联网上的服务器,代理服务器一般作用在客户端。例如:GoAgent翻墙软件。
反向代理服务器作用在服务器端,它在服务器端接收客户端的请求,然后将请求分发给具体的服务器进行处理,然后再将服务器的相应结果反馈给客户端。Nginx就是一个反向代理服务器软件。
从上图可以看出:客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。
反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。
三、 特点
Ø 跨平台:可以在大多数Unix like 系统编译运行。而且也有Windows的移植版本。
Ø 配置异常简单:非常的简单,易上手。
Ø 非阻塞、高并发连接:数据复制时,磁盘I/O的第一阶段是非阻塞的。官方测试能支持5万并发连接,实际生产中能跑2~3万并发连接数(得益于Nginx采用了最新的epoll事件处理模型(消息队列)。
Ø Nginx代理和后端Web服务器间无需长连接;
Ø Nginx接收用户请求是异步的,即先将用户请求全部接收下来,再一次性发送到后端Web服务器,极大减轻后端Web服务器的压力。
Ø 发送响应报文时,是边接收来自后端Web服务器的数据,边发送给客户端。
Ø 网络依赖性低,理论上只要能够ping通就可以实施负载均衡,而且可以有效区分内网、外网流量。
Ø 支持内置服务器检测。Nginx能够根据应用服务器处理页面返回的状态码、超时信息等检测服务器是否出现故障,并及时返回错误的请求重新提交到其它节点上。
Ø 采用Master/worker多进程工作模式
Ø 此外还有内存消耗小、成本低廉(比F5硬件负载均衡器廉价太多)、节省带宽、稳定性高等特点。
四、 实际应用
由于Nginx是由俄罗斯人写的,所以,Nginx 已经在俄罗斯最大的门户网站── Rambler Media(www.rambler.ru)上运行了3年时间,同时俄罗斯超过20%的虚拟主机平台采用Nginx作为反向代理服务器。
在国内,已经有淘宝、新浪博客、新浪播客、网易新闻、六间房、56.com、Discuz!、水木社区、豆瓣、YUPOO、海内、迅雷在线等多家网站使用 Nginx 作为Web服务器或反向代理服务器。
来源:https://www.cnblogs.com/xuwc/p/8515496.html