Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
2016-12-15 17:34
579 查看
Nginx是一种服务器软件,也是一种高性能的http和反向代理服务器,同时还是一个代理邮件服务器。也就是说,我们在Nginx上可以发布网站,可以实现负载均衡(提高应答效率,避免服务器崩溃),还可以作为邮件服务器实现收发邮件等功能。而最常见的就是使用Nginx实现负载均衡。
Nginx与其他服务器的性能比较:
Tomcat服务器面向Java语言,是重量级的服务器,而Nginx是轻量级的服务器。Apache服务器稳定、开源、跨平台,但是Apache服务器不支持高并发,Nginx能支持处理百万级的TCP连接,10万以上的并发连接,并且是一个很好的跨平台服务器。
Nginx主要优点有可以实现高并发、部署简单、内存消耗少、成本低等,主要缺点有rewrite功能不够强大,模块没有Apache的多。
本篇主要讲解 Nginx + Tomcat 反向代理和负载均衡的部署,以通俗实用为主。本篇文章每个部分之间没有太大关系,可根据需求分开学习。
下来看一下Nginx反向代理的过程:
Nginx负载均衡的过程(会自动选择压力较小的服务器进行访问):
可以看出,负载均衡是通过反向代理的原理实现的,所以也称 反向代理的负载均衡 。所以我们会部署负载均衡,那么反向代理也就会了。
总的来说,负载均衡实现的方式分为软件实现和硬件实现两种,硬件实现运行的效率非常高,但是对应的成本也非常高。软件实现运行效率不如硬件,但是成本相对来说低得多。而使用Nginx服务器实现负载均衡,那么就是通过软件的方式来实现负载均衡,并且Nginx本身支持高并发等。故而使用Nginx服务器实现负载均衡,能大大节约企业的成本,并且由于Nginx是服务器软件,其执行效率也是非常高。本篇的目的也就是帮助大家使用Nginx实现负载均衡。
负载均衡的核心就是建立一个服务器集群,然后用户首先访问到第三方代理服务器(这里我们选用Nginx),然后由代理服务器选择一个集群中的服务器,然后将请求引入选定的服务器(这里我们选用Tomcat)。
如下图,通过反向代理我们实现下面的负载均衡,这里我们 假定 四台服务器公网的ip,一台做代理服务器,三台做负载均衡下的服务器:
好了,整体架构已经基本上清晰了,下来我们来具体实现下:
提示:本篇我们基本上都是使用SSH进行相关操作的,Windows下可以尝试安装PuTTY,Mac下直接使用系统自带的终端工具即可。
1)下载Nginx http://nginx.org/
2)上传服务器Nginx安装包
3)安装Nginx
注意:-y表示遇到判断全部yes,autoconf表示自动配置,automake表示自动编译。
检验是否完成安装:
经过上面的安装步骤和目录设置,nginx的启动程序就是/usr/local/nginx/sbin/nginx,默认配置文件是/usr/local/nginx/conf/nginx.conf,但是不建议直接编辑nginx.conf,一般我们都选择新建配置文件,然后在新建的配置文件中修改端口、反向代理路径等。
2)停止Nginx服务器:
停止Nginx服务器首先要查询Nginx的主进程号(master process),假设此处查询得到1060(方便下面演示使用):
下来看如何停止Nginx服务器,停止Nginx有三种方式:
从容停止:
快速停止:
强制停止:
3)重启Nginx服务器:
当我们修改了Nginx配置文件,需要重启才能生效。我们在重启之前还需要验证配置文件的正确性,然后进行重启操作:
4)平滑升级Nginx服务器
平滑升级不会停掉在运行着的进程,这些进程会继续处理请求,但不会再接受新请求,在这些老进程在处理完还在处理的请求后,停止。此平滑升级的过程中,新开的进程会被处理。这就是平滑升级。
下面进行平滑升级:
至此,Nginx服务器平滑升级成功。
注意:vi编辑器中,键盘按 i 进入 INSERT 状态,按 Esc 退出 INSERT 状态。
然后输入以下配置代码(注释部分按需开启):
输入完成后按下Esc,然后输入:
就可以保存并退出负载均衡的配置文件了,下来我们加载我们的配置文件:
如果存在端口占用,可以使用如下命令Kill掉Nginx的程序:
至此,Nginx服务器部署完毕。下面我们开始部署负载均衡下的那三台真实提供数据的服务器。
Nginx与其他服务器的性能比较:
Tomcat服务器面向Java语言,是重量级的服务器,而Nginx是轻量级的服务器。Apache服务器稳定、开源、跨平台,但是Apache服务器不支持高并发,Nginx能支持处理百万级的TCP连接,10万以上的并发连接,并且是一个很好的跨平台服务器。
Nginx主要优点有可以实现高并发、部署简单、内存消耗少、成本低等,主要缺点有rewrite功能不够强大,模块没有Apache的多。
本篇主要讲解 Nginx + Tomcat 反向代理和负载均衡的部署,以通俗实用为主。本篇文章每个部分之间没有太大关系,可根据需求分开学习。
下来看一下Nginx反向代理的过程:
Nginx负载均衡的过程(会自动选择压力较小的服务器进行访问):
可以看出,负载均衡是通过反向代理的原理实现的,所以也称 反向代理的负载均衡 。所以我们会部署负载均衡,那么反向代理也就会了。
总的来说,负载均衡实现的方式分为软件实现和硬件实现两种,硬件实现运行的效率非常高,但是对应的成本也非常高。软件实现运行效率不如硬件,但是成本相对来说低得多。而使用Nginx服务器实现负载均衡,那么就是通过软件的方式来实现负载均衡,并且Nginx本身支持高并发等。故而使用Nginx服务器实现负载均衡,能大大节约企业的成本,并且由于Nginx是服务器软件,其执行效率也是非常高。本篇的目的也就是帮助大家使用Nginx实现负载均衡。
负载均衡的核心就是建立一个服务器集群,然后用户首先访问到第三方代理服务器(这里我们选用Nginx),然后由代理服务器选择一个集群中的服务器,然后将请求引入选定的服务器(这里我们选用Tomcat)。
如下图,通过反向代理我们实现下面的负载均衡,这里我们 假定 四台服务器公网的ip,一台做代理服务器,三台做负载均衡下的服务器:
好了,整体架构已经基本上清晰了,下来我们来具体实现下:
提示:本篇我们基本上都是使用SSH进行相关操作的,Windows下可以尝试安装PuTTY,Mac下直接使用系统自带的终端工具即可。
1.Linux下搭建Nginx服务器
我们在 192.168.2.20 这台服务器上搭建Nginx服务器:1)下载Nginx http://nginx.org/
2)上传服务器Nginx安装包
$ scp ~/Downloads/nginx-1.10.2.tar.gz root@192.168.2.20:/usr/local
3)安装Nginx
$ ssh root@192.168.2.20 //SSH连接 # yum -y install gcc gcc-c++ autoconf automake //gcc、gcc-c++的库文件 # yum install -y pcre pcre-devel //安装Nginx依赖包 # yum install -y zlib zlib-devel
注意:-y表示遇到判断全部yes,autoconf表示自动配置,automake表示自动编译。
# cd /usr/local # tar -zxvf nginx-1.10.2.tar.gz //解压缩 # cd nginx-1.10.2 //切换到该目录下 # ./configure //配置 # make # make install //安装
检验是否完成安装:
# cd /usr/local # ls //如果存在nginx文件夹,则安装成功
经过上面的安装步骤和目录设置,nginx的启动程序就是/usr/local/nginx/sbin/nginx,默认配置文件是/usr/local/nginx/conf/nginx.conf,但是不建议直接编辑nginx.conf,一般我们都选择新建配置文件,然后在新建的配置文件中修改端口、反向代理路径等。
2.Nginx的启动、停止、信号控制
1)启动Nginx服务器(格式:Nginx可执行文件 -c Nginx配置文件):# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
2)停止Nginx服务器:
停止Nginx服务器首先要查询Nginx的主进程号(master process),假设此处查询得到1060(方便下面演示使用):
# ps -ef|grep nginx
下来看如何停止Nginx服务器,停止Nginx有三种方式:
从容停止:
# ps -ef|grep nginx //查看Nginx的主进程号(master process),假设此处查询得到1060 # kill -quit 1060
快速停止:
# kill -term 1060
强制停止:
# pkill -9 nginx
3)重启Nginx服务器:
当我们修改了Nginx配置文件,需要重启才能生效。我们在重启之前还需要验证配置文件的正确性,然后进行重启操作:
# /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf //验证 # /usr/local/nginx/sbin/nginx -s reload //重启
4)平滑升级Nginx服务器
平滑升级不会停掉在运行着的进程,这些进程会继续处理请求,但不会再接受新请求,在这些老进程在处理完还在处理的请求后,停止。此平滑升级的过程中,新开的进程会被处理。这就是平滑升级。
# /usr/local/nginx/sbin/nginx -v //查看当前版本
下面进行平滑升级:
# cd /usr/local # tar -zxvf nginx-1.11.6.tar.gz //解压缩 新版本Nginx # cd nginx-1.11.6 //切换到该目录下 # ./configure //配置 # make # cd /usr/local/nginx/sbin //打开 旧版本Nginx可执行文件位置 # cp nginx nginx.old //备份 旧版本Nginx可执行文件,防止升级错误而无法恢复 # cp -rfp /usr/local/nginx-1.11.6/objs/nginx /usr/local/nginx/sbin //复制新版本可执行文件到旧版本处 # rm -f /usr/local/nginx-1.11.6.tar.gz //善后工作 删除压缩文件 # rm -rf /usr/local/nginx-1.11.6 //删除文件夹
至此,Nginx服务器平滑升级成功。
3.Nginx中负载均衡的实现
我们还是先连接SSH,然后进行下面操作(一般不建议修改默认主配置文件nginx.conf,所以我们新建负载均衡配置文件fzjh.conf,保证服务器安全,如下):# cd /usr/local/nginx/conf # touch fzjh.conf # vi fzjh.conf //用vi编辑器打开文件,然后按键盘的i
注意:vi编辑器中,键盘按 i 进入 INSERT 状态,按 Esc 退出 INSERT 状态。
然后输入以下配置代码(注释部分按需开启):
#设置低权限用户,为了安全而设置的 user nobody; #工作衍生进程数 worker_processes 4; #设置错误文件存放路径 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #设置pid存放路径(pid是控制系统中重要文件) #pid logs/nginx.pid; #设置最大连接数 events{ worker_connections 1024; } http{ #主要是用于设置一组可以在proxy_pass和fastcgi_pass指令中使用额代理服务器,默认负载均衡方式为轮询 upstream tomcat_client { #设置同一个cookie的两次/多次请求,请求的是同一台服务器 ip_hash; #weight权重,默认1,权重越大访问概率越大,backup备用服务器,服务器全部崩溃后启动 server 192.168.2.21:8080 weight=5; server 192.168.2.22:8080 weight=5; server 192.168.2.23:8080 weight=5 backup; } #开启gzip压缩,开启后,访问网页会自动压缩 #gzip on; #指定服务器的名称和参数 server { listen 80; server_name test.nginxtest.net; #设置字符 #charset koi8-r; #location / 指用根目录做负载均衡 location / { proxy_pass http://tomcat_client; proxy_redirect default; #设置代理 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } }
输入完成后按下Esc,然后输入:
:wq!
就可以保存并退出负载均衡的配置文件了,下来我们加载我们的配置文件:
# /usr/local/nginx/sbin/nginx //启动Nginx # /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/fzjh.conf //加载配置文件
如果存在端口占用,可以使用如下命令Kill掉Nginx的程序:
# killall -9 nginx
至此,Nginx服务器部署完毕。下面我们开始部署负载均衡下的那三台真实提供数据的服务器。
相关文章推荐
- Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
- Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
- Nginx 反向代理集群 & 负载均衡(Tomcat,Jetty集群)
- 详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
- Nginx + JDK + Tomcat 负载均衡 集群 部署指南
- nginx + tomcat 部署反向代理加负载均衡
- nginx在linux系统下的安装部署,以及反向代理https请求协议,ssl证书的生成,负载均衡tomcat服务器!
- nginx反向代理服务器搭建,应用服务器集群负载均衡
- 使用apache和nginx代理实现tomcat负载均衡及集群配置详解
- nginx反向代理tomcat集群实现动静分离
- [置顶]Nginx反向代理部署指南
- 【Nginx入门系列】第六章 Nginx+tomcat集群负载均衡部署
- 详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
- 详解Linux中Nginx反向代理下的tomcat集群
- 4-nginx-反向代理到tomcat及负载均衡
- nginx+tomcat 反向代理 负载均衡配置
- ↑基于httpd反向代理tomcat集群商城的部署↑
- 实例详解tomcat组件安装+Nginx反向代理tomcat+Apache使用mod_jk和mod_proxy反向代理和负载均衡 推荐
- Centos 7 安装nginx 并结合 tomcat 反向代理 负载均衡
- Linode Center OS 6.5(x64) 用Nginx 反向代理多个Tomcat 负载均衡。