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. windows下Oracle数据库完全删除

    1.1   停止所有oracle的服务 1.2   删除安装路径 app及其下所有文件 1.3   删除注册表 regedit 进入 在下列列表中找到与oracle相关的注册表项删除 1.HKEY_L ...

  2. redis 的一主二从三哨兵模式

    概述 在部署redis 的时候,如果redis宕机,缓存将不可用,redis提供了哨兵模式保证redis实现高可用. 即一台主机两台从机,三台哨兵主机,如果主实例宕机,哨兵将将一台从机升级为主机.实现 ...

  3. flask中flash不显示

    需要在html文件中body中加入下列语句 <div class='container'> <div class="row"> {% with messag ...

  4. 第15章:MongoDB-聚合操作--聚合管道--$match

    ①$match 用于对文档集合进行筛选,里面可以使用所有常规的查询操作符. 通常会放置在管道最前面的位置,理由如下: 1:快速将不需要的文档过滤,减少后续操作的数据量 2:在投影和分组之前做筛选,查询 ...

  5. UVa 11427 Expect the Expected (数学期望 + 概率DP)

    题意:某个人每天晚上都玩游戏,如果第一次就䊨了就高兴的去睡觉了,否则就继续直到赢的局数的比例严格大于 p,并且他每局获胜的概率也是 p,但是你最玩 n 局,但是如果比例一直超不过 p 的话,你将不高兴 ...

  6. SpringBoot初探

    一:项目创建 个人用的是IDEA来做Demo的: 1.先创建一个空项目,然后创建一个基于Maven的java application项目: 2.创建好后配置pom.xml文件并最终reimport & ...

  7. laravel 5.1 简单配置例子

    这里演示5.1版本 一.数据库配置 .env文件(也可以直接修改config/database.php) DB_HOST=localhost DB_DATABASE=test  //数据库名称 DB_ ...

  8. SQL编写-谁和谁是好朋友

    problem: 用户表 姓名 张三 李四 王五       好友表   姓名 好友姓名 张三 李四 张三 王五 李四 张三 用户表里面姓名必须在好友表里面互加为好友,请问如何找出还没有加为好友的姓名 ...

  9. js 循环向上滚动

    aaaaaaaaaaaaaaaaa最开头 aaaaaaaaaaa 1 aaaaaaaaaaa 2 aaaaaaaaaaa 3 aaaaaaaaaaa 4 aaaaaaaaaaa 5 aaaaaaaaa ...

  10. 批处理最完整人性化教程(.bat文件语法)

    原文链接:http://www.cnitblog.com/seeyeah/archive/2009/01/15/53808.html 这是一篇技术教程,我会用很简单的文字表达清楚自己的意思,你要你识字 ...