nginx多tomcat负载均衡
目的
先说说我要干什么,如题:使用nginx实现多个tomcat服务器的负载均衡。
nginx
大名鼎鼎,相信很多人都听过,以前感觉很厉害,用了之后发现真的很厉害。nginx可以做以下几件事:
- 反向代理
- 负载均衡
- 动静分离
- 网页、图片缓存
需要明确的是nginx并不是应用服务器,也就是说nginx不能处理动态请求(和apache一样,熟悉apache应该知道),比如jsp、php等页面,nginx把这些请求转发给能处理这些页面的程序。
反向代理
好吧,之前我也为这个问题纠结挺久,为什么叫反向?既然有反向,那肯定有正向,现有客户端x,代理服务器y,最终服务器z,现在x直接访问z:x->z,通过代理服务器y:x->y->z,无论正反代理服务器y都是位于x、z之间,正反是根据代理服务器代理的是谁来判断的
- 正向:代理服务器y代理的是客户端,站在客户端的角度上是正向的,所以是正向代理
- 反向:代理服务器y代理的是最终服务器z,站在客户端的角度上是反向的,所以是反向代理
好吧,这是我的理解,可能不够详细,这里给大家推荐一片文章,介绍的挺好的:http://bbs.51cto.com/thread-967852-1-1.html
负载均衡
现在客户端所有请求都经过nginx了,那么nginx就可以决定将这些请求转发给谁,如果服务器A的资源更充分(CPU更多、内存更大等等),服务器B没有服务器A处理能力强,那么nginx就会吧更多的请求转发到A,转发较少的请求到服务器B,这样就做到了负载均衡,而且就算其中一台服务器宕机了,对于用户而言也能正常访问网站。
动静分离
借助于nginx强大的转发功能,可以通过配置实现网站的动态请求和静态文件进行分离,将动态请求发送到服务器A,将静态文件转发到服务器B,这样便于nginx做静态文件的缓存和后期对网站使用CDN。
实现多tomcat负载均衡
tomcat和nginx安装再次不再赘述,不过注意如果多个tomcat安装在同一台机器上的话,注意修改server.xml(在%tomcat_home%/conf/server.xml)中的端口号,以下是我的tomcat配置情况
tomcat A:10.10.31.11:8888
tomcat A:10.10.31.11:9999
nginx配置,nginx.conf
#user www-data;
worker_processes 3;
#pid /run/nginx.pid; events {
#use epoll
worker_connections 8192;
# multi_accept on;
} http { ##
# Basic Settings
## sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off; # server_names_hash_bucket_size 64;
# server_name_in_redirect off; include /etc/nginx/mime.types;
default_type application/octet-stream; ##
# SSL Settings
## ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on; ##
# Logging Settings
## access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log; ##
# Gzip Settings
## gzip on;
gzip_disable "msie6"; # gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; ##
# Virtual Host Configs
## include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*; # 在这儿配置多个服务器
upstream web_app{
server 10.10.31.11:8888;
server 10.10.31.11:9999
} server{
# nginx监听80端口
listen 80;
# 特别注意server_name配置,这儿在实际使用中配置多个域名,比如test.com www.test.com,
server_name localhost 127.0.0.1;
location / {
root html;
index index.html;
proxy_pass http://web_app;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 100m;
}
}
}
验证
service nginx start
访问:localhost或者127.0.0.1会发现两个tomcat首页在交替(为了区分两个tomcat,建议修改%tomcat_home%/weapps/ROOT/index.jsp页面,如修改两个title分别为8888, 9999)
很简单的配置,只有简单的负载均衡,而且两台服务器的权重也是一样的,这样配置主要是为了解决一个问题:因为系统已经上线了,如果在使用过程中发现了bug需要赶修复并重新部署,不能每次部署就shutdown-start吧,用户突然就不能访问网站了,还有一种方法就是等夜深人静没人访问网站的时候部署,更科学的方法是使用nginx做负载均衡,这样启动两台服务器A、B,部署A的时候B还在正常运行,部署完A,启动A,再部署B。
当然了,使用nginx做负载均衡之后还有一个很重要的问题亟待解决——session集群共享,接下来想使用shiro和redis做session集群共享,这样子随着业务的增长,后期有更多的服务器需要负载均衡也算是有基础了。
正文完。
最近一段时间感觉压力有点略大,经常做梦都在想项目上的事儿,每天醒来都感觉心里有点慌慌的感觉。希望自己还是要注意到这个问题,调节好。
还有一个感触就是:时势造英雄,有好多技术自己没有应用场景去学习的时候总感觉少了点什么,比如这次nginx的使用,以前也试着学习过,可是感觉也是不得要领,但是这次因为系统上线之后需要在不间断访问的前提下替换部署,感觉用起来挺快,理解起来也更流畅。业务发展才是促进技术发展的源动力,对于技术发展而言是这样,对于个人技术积累也是这样。在还没有遇到相应的业务场景的时候只能是不断提高自己的学习能力,在业务场景真的到来之际,能应用自己的能力解决实际问题,提高自己的技术和能力,而这里的业务场景就是程序员的时势。不断提高自己,然后等待时势的到来。
nginx多tomcat负载均衡的更多相关文章
- 基于nginx的tomcat负载均衡和集群
要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务器即可共享SESSION了. 你可以自己写tomcat的扩展来保存SESSI ...
- Linux配置Nginx+Tomcat负载均衡
cd /usr/local/tomcat1/webapps/ROOT/ tar -zxvf nginx-1.14.2.tar.gz -C /usr/local 一.Linux配置Nginx 一.下载N ...
- Nginx+Tomcat 负载均衡、动静分离集群
目录: 一.Nginx负载均衡实现原理 二.Nginx动静分离实现原理 三.Nginx+Tomcat 负载均衡.动静分离集群部署 一.Nginx负载均衡实现原理 1.Nginx实现负载均衡是通过反向代 ...
- 配置apache和nginx的tomcat负载均衡
概述 本篇文章主要介绍apache和nginx的相关配置,tomcat的相关安装配置我在前面有写过一篇,详细介绍通过两种配置方法配置nginx. tomcat配置参考:http://www.cnblo ...
- CentOS系统下做nginx和tomcat负载均衡
系统总是频繁更新,为了避免更新系统的时候领导看不到东西,打算用ngix做代理,后台部署两个tomcat做负载均衡,避免更新一台就无法使用系统的问题,这两天看了写资料,把几个关键点记录在这里以便备忘. ...
- Nginx和Tomcat负载均衡实现session共享(转)
以前的项目使用Nginx作为反向代理实现了多个Tomcat的负载均衡,为了实现多个Tomcat之间的session共享,使用了开源的Memcached-Session-Manager框架. 此框架的优 ...
- Nginx和Tomcat负载均衡实现session共享
以前的项目使用Nginx作为反向代理实现了多个Tomcat的负载均衡,为了实现多个Tomcat之间的session共享,使用了开源的Memcached-Session-Manager框架. 此框架的优 ...
- CentOS7+Nginx配置Tomcat负载均衡环境
1.准备两个Tomcat 配置两个Tomcat一个端口是8080另外一个端口是8081,分别在webapps下面添加一个测试用的web项目,修改index.jsp文件,8080端口的index.jsp ...
- nginx配置tomcat负载均衡,nginx.conf配置文件的配置
随机推荐
- JPA学习-03
一.单向一对多 特点:性能差,不怎么用,有集合默认懒加载 @OneToMany 1.private Set<T> t = new HashSet<>() 2.private L ...
- 2019.03.25 bzoj4567: [Scoi2016]背单词(trie+贪心)
传送门 题意: 给你n个字符串,不同的排列有不同的代价,代价按照如下方式计算(字符串s的位置为x): 1.排在s后面的字符串有s的后缀,则代价为n^2: 2.排在s前面的字符串有s的后缀,且没有排在s ...
- 关于根据模板生成pdf文档,差入图片和加密
import com.alibaba.fastjson.JSONObject; import com.aliyun.oss.OSSClient; import com.itextpdf.text.pd ...
- centos6安装oracle时运行./runInstaller无法弹出图形界面
首先确保安装oracle的机器上安装了图形化界面. 1.利用xmanager登录到安装oracle的服务器上(直接用root用户登录) 2.运行 export DISPLAY=你的本机地址:0.0 3 ...
- 理解RNN
摘自:https://zybuluo.com/hanbingtao/note/541458 语言模型就是这样的东西:给定一个一句话前面的部分,预测接下来最有可能的一个词是什么. 语言模型是对一种语言的 ...
- MySql技术内幕之MySQL入门(1)
目录 MySql技术内幕之MySQL入门(1) 安装 关于注释 执行SQL语句 关于命令大小写 创建数据库 查看表的信息 查看更加详细的信息 查看与给定模式相匹配的列 插入数据 利用insert添加行 ...
- GC算法基础
寻找垃圾对象的算法:1. 引用计数(无法处理循环引用) 2. 根寻法(被广泛引用在gc算法中) 清理垃圾的算法: 1. 标记复制 2. 标记清理 3. 标记整理 分代算法的好处: 1. 分代处理, ...
- 个人 WPF+EF(DBFirst) 简单应用开发习惯及EF学习测试(备忘) -- 2
接上篇:个人 WPF+EF(DBFirst) 简单应用开发习惯及EF学习测试(备忘) -- 1 Step1 在主程序中设置连接数据库 从Model类库的 App.Config 把数据库字符串拷贝出来, ...
- Requests+正则表达式抓取猫眼电影TOP100
spider.py # -*- coding:utf-8 -*- import requests import re import json import codecs from requests.e ...
- Python爬取淘宝店铺和评论
1 安装开发需要的一些库 (1) 安装mysql 的驱动:在Windows上按win+r输入cmd打开命令行,输入命令pip install pymysql,回车即可. (2) 安装自动化测试的驱动s ...