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,要下载稳定 ...
随机推荐
- EasyNetQ使用(五)【基于主题的路由,控制队列名称】
RabbitMQ有一个很酷的功能,基于主题的路由,这个功能允许订阅者基于多个条件去过滤消息.一个主题是由点号分隔的单词列表,随消息一同发布.例如:“stock.usd.nyse” 或 “book.uk ...
- 以rpm安装包的方式安装MySQL
rpm -vif MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm MySQL-client-5.6.26-1.linux_glibc2.5.x86_64 ...
- Chrome安装json格式化工具jsonView
1.下载jsonView 有条件的童鞋可以去谷歌商店下载安装https://chrome.google.com/webstore/detail/pmajcnnfhjcebiafkonednglookd ...
- python 3 获取本机公网ip的几种方法
参考博客:https://blog.csdn.net/conquerwave/article/details/77666226 from urllib.request import urlopen f ...
- 【Matlab开发】matlab中norm范数以及向量点积、绘图设置相关
[Matlab开发]matlab中norm范数以及向量点积.绘图设置相关 标签(空格分隔): [Matlab开发] 声明:引用请注明出处http://blog.csdn.net/lg125915677 ...
- nginx 转发tcp连接
背景:公司有一套工作流服务(jira,confluence,bitbucket),目前jira,confluence配置的是从nginx网关进行转发,bitbucket配置的是直接解析到该主机,现在计 ...
- GFS(Google File System,谷歌文件系统)----(1)读写一致性
GFS副本控制协议--中心化副本控制协议 对于副本集的更新操作有一个中心节点来协调管理,将分布式的并发操作转化为单点的并发操作,从而保证副本集内各节点的一致性.在GFS中,中心节点称之为Primary ...
- 【LOJ】#3103. 「JSOI2019」节日庆典
LOJ#3103. 「JSOI2019」节日庆典 能当最小位置的值一定是一个最小后缀,而有用的最小后缀不超过\(\log n\)个 为什么不超过\(\log n\)个,看了一下zsy的博客.. 假如\ ...
- POJ3046ANT_COUNTING
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> ...
- Go-函数高级使用-条件分支-包管理-for循环-switch语句-数组及切片-与或非逻辑符
目录 科普 python 注释 # 函数高级 if else if else 包管理 下载第三方包 比较热门的框架 for 循环 for 循环的几种写法 switch 语句 数组及数组切片 数组迭代 ...