说到 Nginx ,相信大家都不会陌生,最常用的莫过于:用它来与 Tomcat 搭配做负载均衡,起到灰度发布的作用,同时保证系统高可用!
01、简介
Nginx(发音同 engine x)是异步框架的网页服务器,也可以用作反向代理、负载平衡器和 HTTP 缓存。该软件由伊戈尔·赛索耶夫创建并于2004年首次公开发布。 2011年成立同名公司以提供支持。2019年3月11日,Nginx 公司被 F5 Networks 以6.7亿美元收购。
传统模型下,一个项目部署在一台tomcat
上,这个时候,假如tomcat
因为服务器资源不够,突然挂机了,那么整个项目就无法使用,给客户造成的损失可想而知!
Nginx 就可以避免单台服务如果挂机,依然能保证服务正常使用,当我们把项目 war 包部署到三台服务器上时,即使服务器A
、服务器B
都挂了,依然能够通过服务器C
访问项目资源!
好了,啥也不说了,直接开始干!
02、Nginx 安装
2.1、下载 Nginx 安装包
直接访问 Nginx 官网(https://nginx.org
),下载对应的安装包,本次案例选择的是nginx-1.6.3.tar.gz
版本,安装环境是centos7
。
上传到对应服务器的文件夹或者直接在服务器端使用wget
命令
1 |
|
如果出现如下信息:
1 |
|
提示wget
命令找不到,使用如下命令,进行安装,之后再次执行上述下载命令
1 |
|
2.2、安装 Nginx
在按照 Nginx 之前,需要安装相应运行库环境,操作如下
1)安装 gcc 环境
1 |
|
2) 安装 PCRE 依赖库
1 |
|
3)安装 zlib 依赖库
1 |
|
4) 安装 OpenSSL 安全套接字层密码库
1 |
|
5)解压 Nginx
安装完以上环境库之后,接着进行解压操作
1 |
|
6)执行配置命令
cd
进入文件夹
1 |
|
执行配置命令
1 |
|
如下图,表示执行配置成功!
当然,也可以执行自定义配置文件,例如:
1 |
|
注意:临时文件目录指定为/var/temp/nginx
,需要在/var
下创建temp
及nginx
目录
7)执行编译安装命令
1 |
|
8)查找安装路径
1 |
|
结果如下:
9)启动服务
进入 nginx 的目录
1 |
|
执行如下命令
1 |
|
10)修改配置文件
比如,修改端口号,默认端口号为80
,咱们这里改成81
;
进入配置文件夹
1 |
|
备份原始配置文件
1 |
|
编辑nginx.conf
配置文件
1 |
|
找到server
中的listen
,修改端口号为81
启动服务
1 |
|
查看 nginx 进程
1 |
|
到此,nginx 安装基本完成,直接在浏览器上访问服务器地址ip:81
,就可以进入页面
03、Tomcat安装
直接访问 tomcat 官网(http://tomcat.apache.org/
),下载对应的安装包,本次案例选择的是apache-tomcat-8.5.45.tar.gz
版本,本次安装环境是centos7
。
上传到对应的服务器文件夹中,之后解压文件夹
1 |
|
重新命名
1 |
|
同样的,再次解压安装包,命名为tomcat-2
1 |
|
1)修改 tomcat 端口号
将 tomcat-1 的 http 端口设置为8080,将 tomcat-2 的 http 端口设置为8081。
进入tomcat
的conf
文件夹,修改server.xml
1 |
|
修改SHUTDOWN
、HTTP/1.1
、redirectPort
、AJP/1.3
端口,使其错开,避免重启的时候,报端口被占用问题
tomcat-1 的SHUTDOWN
、HTTP/1.1
、redirectPort
、AJP/1.3
设置如下:
1 |
|
tomcat-2 的SHUTDOWN
、HTTP/1.1
、redirectPort
、AJP/1.3
设置如下:
1 |
|
2)启动服务
分别进入 tomcat-1 、 tomcat-2 的bin
文件夹,执行脚本,启动服务
1 |
|
查看服务是否启动成功
1 |
|
说明已经启动成功了,可以直接在浏览器上分别输入ip:8080
、ip:8081
进行访问了,结果如下:
3)编写Html
为了便于测试,我们创建一个html
格式的页面,文件命名为index.html
,内容如下:
1 |
|
进入tomcat
的webapps
文件夹,删除ROOT
文件夹里面的东西,创建index.html
文件;
在 tomcat-1 中,index.html
内容如下:
在 tomcat-2 中,index.html
内容如下:
4)测试
创建好了之后,分别在浏览器上访问ip:8080
、ip:8081
;
ip:8080
,结果如下:
ip:8081
,结果如下:
04、Nginx实现负载均衡
进入 Nginx 的配置文件夹
1 |
|
编辑nginx.conf
配置文件
1 |
|
主要新增upstream
集群配置点,配置如下:
1 |
|
参数说明:
- worker_processes:工作进程的个数,一般与计算机的cpu核数一致
- worker_connections:单个进程最大连接数(最大连接数=连接数*进程数)
- include:文件扩展名与文件类型映射表
- default_type:默认文件类型
- sendfile :开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
- keepalive_timeout:长连接超时时间,单位是秒
- upstream:服务器的集群配置点
配置好之后,进入/usr/local/nginx/sbin/
文件夹,重新刷新配置文件
1 |
|
最后,访问Nginx
服务器所在ip:81
地址,多次刷新,看看效果:
至此,Nginx 与 Tomcat 搭配实现负载均衡已经配置完了,是不是很酷!
赶紧去试试吧!