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=
enabled=

其中要注意的地方是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 : -v $PWD/tomcat1/ROOT:/usr/local/tomcat/webapps/ROOT -d tomcat
# 启动tomcat2
docker run --name tomcat2 -p : -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: weight=;
server 172.16.106.244: weight=;
}
server {
listen ; # 监听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的功能还是很强大的。目前也是简单的会用,还没深入了解高级功能,等有了新的认识再来更新该博文,如有不正确的地方欢迎指正学习,谢谢阅读!

Nginx安装使用及与tomcat实现负载均衡的更多相关文章

  1. Nginx安装部署(反向代理与负载均衡)

    一.下载安装Nginx(本文环境为windows xp 32bit环境) 下载地址:http://files.cnblogs.com/likehua/nginx-1.0.11.zip 解压nginx- ...

  2. Nginx 服务器 之Nginx与tomcat实现负载均衡

      本文讲解我们如何使用Nginx做反向带服务器,实现nginx与tomcat服务器集群做负载均衡. 一.nginx与tomcat实现负载均衡 1.在/usr/local/ngnix/conf  创建 ...

  3. Nginx+Tomcat+Memcached负载均衡集群服务搭建

    操作系统:CentOS6.5  本文档主要讲解,如何在CentOS6.5下搭建Nginx+Tomcat+Memcached负载均衡集群服务器,Nginx负责负载均衡,Tomcat负责实际服务,Memc ...

  4. Tomcat(五):nginx/httpd + tomcat及负载均衡tomcat

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  5. Linux 下配置 nginx + 两个 tomcat 的负载均衡

    前提:已经安装了 nginx 和两个 tomcat 1.修改 nginx.conf 配置文件    1)在 http{} 节点之间添加 upstream 配置 2)修改 nginx 的监听端口,默认是 ...

  6. 使用 Nginx + Tomcat 搭建负载均衡

    负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均衡,英文名称为Load Balance, ...

  7. [Linux]nginx tomcat做负载均衡

    之前使用nginx做过web反向代理,没有做过负载均衡,今天有个同学须要做tomcat的负载均衡,我也研究下. 一共是2个机器,一个物理机(win7)上面部署2个tomcat,使用不同的port启动. ...

  8. nginx+tomcat实现负载均衡集群

    一台tomcat站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等问题,不能单独应用于生产环境下 所以需要一套可靠的解决方案来完善web站点架构 而Nginx只能访问静态页面,如果需要动态需要 ...

  9. nginx+tomcat实现负载均衡以及双机热备

    还记得那些年吗? 还记得更新代码之后,服务器起不来被领导训斥吗?还记得更新代码,需要停机过多的时间被渠道部们埋怨吗?还记得更新代码,代码出错时自己吓个半死吗?于是我们聪明勤快的程序员,看着电影待到夜深 ...

随机推荐

  1. 811. Subdomain Visit Count

    这题主要难在构建关联容器,方法很多,但是核心都是把原字符串一截一截减下来处理,先把前面用空格隔开的次数转化为整数,然后处理后面的多层子域. 方法一,查找标志字符,用标志字符把字符串分成几段 stati ...

  2. 2019.01.26 codeforces 632E. Thief in a Shop(生成函数)

    传送门 题意简述:给nnn个物件,物件iii有一个权值aia_iai​,可以选任意多个.现在要求选出kkk个物件出来(允许重复)问最后得到的权值和的种类数. n,k,ai≤1000n,k,a_i\le ...

  3. 2019.01.21 bzoj2989: 数列(二进制分组+主席树)

    传送门 二进制分组入门题. 主席树写错调题2h+2h+2h+体验极差. 题意简述:给一堆点,支持加入一个点,询问有多少个点跟(x,y)(x,y)(x,y)曼哈顿距离不超过kkk. 思路:题目要求的是对 ...

  4. 2019.01.17 bzoj1853: [Scoi2010]幸运数字(容斥+dfs)

    传送门 搜索菜题,然而第一次没有注意然后爆longlonglong longlonglong了. 题意:称所有数位由6,86,86,8组成的数为幸运数字,问一个一个区间[l,r][l,r][l,r]中 ...

  5. SQL错误

    一.mybatis框架XML错误 1.ORA-00918: 未明确定义列:SQL语句中列明重复,或者定义不明确(关联查询时两张表都有要区分开列明) 2.无效的列类型: 1111  :a.传入数据漏传一 ...

  6. 简单实现"Tomcat"

    Tomcat的主要功能就是接收客户端的Http请求,然后将请求分发,并且将请求封装,最后返回资源给到客户端.话不多说,开干. 一.实现设计图            (禁止盗图,除非先转支付宝!!!) ...

  7. AttributeError: type object 'testClass' has no attribute 'testMothod'

    点击"Unittest for test_post_API.testClass"按钮,点击”Edit configuration...“,弹出对话框Run/Debug config ...

  8. 根据方法名获取方法Body Content

    利用 MethodBody类的GetILAsByteArray方法可以获取到返回字节数组的MSIL的body.然后再去解析此字节数组, 可以得到MSIL,然后你再去解析MSIL,你就可以得到你想到so ...

  9. 添加网络ADB的方法(含以太网和无线)

    将下面代码添加至packages/apps/Settings/src/com/android/settings/DevelopmentSettings.java 结合之前的添加wifi adb的博客 ...

  10. 微信分享接口 略缩图 php

    php插件下载地址:  https://files.cnblogs.com/files/fan-bk/jssdk_php.rar 提示:如果插件里面的jssdk.php函数 file_get_cont ...