nginx+tomcat实现负载均衡以及双机热备
还记得那些年吗?
还记得更新代码之后,服务器起不来被领导训斥吗?还记得更新代码,需要停机过多的时间被渠道部们埋怨吗?还记得更新代码,代码出错时自己吓个半死吗?于是我们聪明勤快的程序员,看着电影待到夜深人静的时候;爬起来有条不紊的更新着代码,以保证明天大家一觉醒来打开网站,完美的呈现给用户。 看似非常的完美,但是代码更新频繁的时候,我们也吃不消;并且我们在停机更新的时候带来的影响。
你听过「灾备」、「异地多活」、「双机热备」这些词么?
大家都知道「不能把鸡蛋放在一个篮子里」,在我们开发中依然是如此,如果是稍微对系统数据及运行状态有要求的项目,千万可不能突然系统挂掉几分钟,这带来的后果是不可想象的。所以,在我们开发中就会有「灾备」这个词,我们要考虑到这些不可预防的事件发生,所以,往往我们会把系统部署到多台服务器上面,这就是「鸡蛋」的例子,也就是所谓的「双机热备」,以保证我们系统的高可用,当一个服务器挂掉,后边的这个完全有能力顶上去!就好像一个程序员你感觉他天天没什么事儿可干,非常气愤的去找你领导说:xxx 天天没事干,为什么他工资比我高?呵呵呵...
nginx+tomcat实现负载均衡以及双机热备
由于服务器资源有限,我们就做本地测试;
实现的原理:
利用nginx的反向代理将我们配置好的应用池根据某种规则去访问。nginx分配tomcat请求的比例有四种,分别是轮询(默认),权重(红框所示)权重分配的越高,访问的承载量越大,第三种分配方式是根据ip分配;最后一种是第三方分配。我的配置文件用的是权重的分配方式。
nginx代码段
准备如下nginx代码段将其添加到nginx的/etc/nginx/conf.d/default.conf中, 模拟方式很简单,通过down来表示流量为零(nginx中无法将weight设置为零),开始的时候100%的流量都发到蓝色版本。
http {
upstream nginx_blug_green {
server 127.0.0.1:8080 weight=100;
server 127.0.0.1:8081 down;
}
server {
listen 8082;
server_name localhost;
location /callcenter-api {
#root html;
#index index.html index.htm;
proxy_pass http://nginx_blug_green;
}
}
因为我这边服务器有限,装了两个Tomcat来模拟两个服务器的;安装完成之后开始配置我们的tomcat文件夹/conf/server.xml文件,如下所示



更改这三个端口号,防止出现运行多个tomcat会出现端口号被占用的问题。
tomcat和nginx的配置完成后把要运行项目的war包放到tomcat的webapps的文件夹下(在两个tomcat的项目里做一个标识,显示当前的端口号为多少),在tomcat的bin文件夹下运行startup.bat文件,启动tomcat,tomcat启动成功之后,使用dos命令启动我们的nginx,然后打开浏览器进行测试
运行nginx;
1.cd /usr/local/nginx; 2 ./nginx;
等待nginx启动完成;
假设我们要更新代码场景: 只需将8080端口设置为down,将所有流量走8081;此时并不会停机。
upstream nginx_blug_green {
server 127.0.0.1:8080 down;
server 127.0.0.1:8081 weight=100;
}
nginx平滑重启
./nginx -s reload
访问 :http://localhost:8082/callcenter-api/sys/login
温馨提示:如果在访问时出现:

原因是在nginx配置文件中配置upstream时用了“_”字符,如上用的tomcat_server,直接报错了。改成tomcatserver,即不使用“_”字符就好了。主要还是版本原因,tomcat7就不会有这个问题
nginx+tomcat实现负载均衡以及双机热备的更多相关文章
- Keepalived+Nginx提供前端负载均衡+主从双机热备+自动切换
原文链接:http://unun.in/linux/156.html 方案: 采用两台Nginx服务器作为前端,提供静态web内容,分发web请求,一主一从,Keepalived实现状态监测,保证 N ...
- Nginx+Tomcat+Memcached负载均衡集群服务搭建
操作系统:CentOS6.5 本文档主要讲解,如何在CentOS6.5下搭建Nginx+Tomcat+Memcached负载均衡集群服务器,Nginx负责负载均衡,Tomcat负责实际服务,Memc ...
- nginx+tomcat+redis负载均衡及session共享
概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...
- 使用 Nginx + Tomcat 搭建负载均衡
负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均衡,英文名称为Load Balance, ...
- Docker + Nginx + Tomcat 实现负载均衡简单演示
Docker + Nginx + Tomcat 实现负载均衡 环境 [root@pinyoyougou-docker ~]# docker -v Docker version 1.12.6, buil ...
- Ubuntu下实现Nginx+Tomcat实现负载均衡
先说一下为什么写这个文章,在性能测试过程中,我们可能会关注很多指标,比如CPU.IO.网络.磁盘等,通过这些指标大致可以判断哪个环节遇到了性能瓶颈,但是当这些指标无法判断出性能瓶颈时,我们可能就需要对 ...
- 简单的 Nginx+Tomcat 配置负载均衡集群
简单 Nginx+Tomcat 配置负载均衡集群 前期准备 解压两个tomcat,修改端口号 server1:8081 server:8082 同时启动 nginx官网下载解压版nginx 创建一个简 ...
- Nginx+Tomcat 实现负载均衡 ,动静分离集群部署
Nginx + Tomcat 实现负载均衡,动静分离集群部署 1.Nginx实现负载均衡原理 2.Nginx配置反向代理主要参数 3.实验 1.Nginx实现负载均衡原理: Nginx服务器作为前端, ...
- Nginx+Tomcat搭建负载均衡
一. 工具 nginx-1.8.0 apache-tomcat-6.0.33 二. 目标 实现高性能负载均衡的Tomcat集群: 三. 步骤 1.首先下载Nginx,要下载稳定 ...
随机推荐
- springboot-定时任务-多线程
1.配置异步线程池 import java.util.concurrent.Executor; import org.springframework.context.annotation.Bean; ...
- Guava源码阅读-base-Charsets
package com.google.common.base; 今天在找base包下的源码阅读时,看到了Charsets,肯定是定义字符集的类,本来就想简单的看一下.(部分内容摘抄自:http://b ...
- qt坐标系统见解
窗口坐标为逻辑坐标,是基于视口坐标系的. 视口坐标为物理坐标,是基于绘图设备坐标系的 窗口坐标始终以视口坐标为最终目标进行映射: QPainter::setWindow 修改了窗口位置和大小(左上角重 ...
- luogu P1734 最大约数和 (01 背包)
链接:https://www.luogu.org/problemnew/show/P1734 题面: 题目描述 选取和不超过S的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大. 输入输出格 ...
- js中的三目运算符详解
判断 javascript中的三目运算符用作判断时,基本语法为: expression ? sentence1 : sentence2 当expression的值为真时执行sentence1,否则执行 ...
- 龙芯 飞腾 intel的 OpenBenchMarking数据
1. 今天从openbenchmarking 里面进行了简单的查找. 数据主要为: 机器配置: LS3A3000的数据为: 来源: https://openbenchmarking.org/resul ...
- 浅谈 JDBC 中 CreateStatement 和 PrepareStatement 的区别与优劣
先说下这俩到底是干啥的吧.其实这俩干的活儿都一样,就是创建了一个对象然后去通过对象调用executeQuery方法来执行sql语句.说是CreateStatement和PrepareStatement ...
- SHA1签名工具类java
package com.net.util; import java.security.MessageDigest; import java.util.Iterator; import java.uti ...
- 题目13 在O(1)时间删除链表节点
///////////////////////////////////////////////////////////////////////////////////// // 3. 题目13 在O( ...
- QT 打包exe
QT打包主要方法: 1.把无措的代码进行Release编译 2.在运行完后,找到运行后生成的目录,以下是我的文件,名为result,运行类型有两种,一种是Debug,另一种是Release,我们需要的 ...