Nginx安装使用及与tomcat实现负载均衡
1. 背景
基于nginx强大的功能,实现一种负载均衡,或是不停机更新程序等。nginx相比大家基本上都知道是什么来头了,具体的文章大家可以去搜索相关文章学习阅读,或是可以查看Nginx中文文档和Nginx官网。本博文主要实现的功能大致功能流程如下图:
2. Nginx安装及使用
2.1 安装过程
查看官网文档,我是CentOS系统,因此采用yum源安装。首先要设置yum源,新增文件/etc/yum.repos.d/nginx.repo,并增加如下设置:
[nginx] name=nginx repo baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/ gpgcheck=0 enabled=1
其中要注意的地方是baseurl的设置,官网给的这个url不是最终路径,如果你用的是红帽系统路径中的OS要替换成rel,如果是用的CentOS系统则替换成centos,OSRELEASE替换成对应的系统版本,我用的CentOS系统7,则我的最终路径是http://nginx.org/packages/centos/7/$basearch/,其中在浏览器访问http://nginx.org/packages/centos/7会看到如下信息,说明是可以下载安装的:
yum源设置后,可以在命令行窗口搜索一下看看,
# 搜索yum源中,包含Nginx的安装包 yum search nginx
既然有了yum源了,直接安装接可以了, 按提示输入y直到安装成功。
# 安装Nginx yum install nginx
2.2 Nginx启动
Nginx的启动很简单,安装成功后,在命令行执行 nginx 即可,启动成功后可以过滤查看进程
# 过滤进程中是否有nginx ps -ef | grep nginx
存在nginx进程的话,就可以访问浏览器了,看到如下效果,Welcome to nginx!
2.3 Nginx常用命令
nginx -s quit 优雅停止nginx,有连接时会等连接请求完成再杀死worker进程
nginx -s reload 优雅重启,并重新载入配置文件nginx.conf
nginx -s reopen 重新打开日志文件,一般用于切割日志
nginx -v 查看版本
nginx -t 检查nginx的配置文件
nginx -h 查看帮助信息
nginx -V 详细版本信息,包括编译参数
nginx -c file 指定配置文件
3. docker启动tomcat
3.1 获取最新tomcat
#在docker仓库获取最新的tomcat镜像
docker pull tomcat
3.2 添加两个静态页面
静态页面模拟启动的程序,区分两个tomcat,简单的html页面,启动tomcat时要加载到webapps目录下。
在目录/data/tomcat1/ROOT下添加静态文件index.html
<html> <head></head> <body> <h1>This is tomcat 1 server</h1> </body> </html>
在目录/data/tomcat2/ROOT下添加静态文件index.html
<html> <head></head> <body> <h1>This is tomcat 2 server</h1> </body> </html>
3.3 启动两个tomcat
# 启动tomcat1
docker run --name tomcat1 -p 8060:8080 -v $PWD/tomcat1/ROOT:/usr/local/tomcat/webapps/ROOT -d tomcat # 启动tomcat2
docker run --name tomcat2 -p 8090:8080 -v $PWD/tomcat2/ROOT:/usr/local/tomcat/webapps/ROOT -d tomcat
参数说明:
--name 启动的名称
-p 端口映射,8060:8080,为宿主机的8060端口映射到docker容器的8080端口
-v 设置路径
$PWD/tomcat1/ROOT:/usr/local/tomcat/webapps/ROOT
将当前目录下的tomcat1/ROOT目录挂载到要启动的docker容器tomcat的webapps/ROOT目录下,$PWD/tomcat1/ROOT也可以换成全路径,比如/data/tomcat1/ROOT.
-d 是后台启动
3.4 访问两个tomcat
4. 配置nginx实现负载均衡
yum安装,nginx默认安装目录在 /etc/nginx目录下。其中nginx.conf是主要配置文件,一般该文件是不动的,其中目录conf.d是用来存放用户新增的配置文件。在conf.d目录下新增配置文件tomcat_server.conf,详细配置如下:
upstream tomcat-server{ server 172.16.106.244:8090 weight=1; server 172.16.106.244:8060 weight=5; } server { listen 8010; # 监听8010端口 server_name localhost; location / { proxy_pass http://tomcat-server; } }
#server_name:表示监听到之后需要转到哪里去。
#location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里
#weight=1 表示权重,值越大可能被请求的次数越多
#注意upstream 后面名字的命名,不能有下划线“_”,否则在跳转访问的时候会出现400的情况。
设置完毕后要重新加载配置文件,nginx的一个好处就是不用重启,执行以下命令就好了:
# 重新加载配置并生效
nginx -s reload
这样就可以访问8010端口了,页面会在1和2之间交替出现,1的比重设置的是5,出现的次数较多一些。
5. 总结
本次博文主要是对nginx的简单使用,以及实现一些后面可能用到的功能,比如负载均衡、静态网站的替换等等,nginx的功能还是很强大的。目前也是简单的会用,还没深入了解高级功能,等有了新的认识再来更新该博文,如有不正确的地方欢迎指正学习,谢谢阅读!