Nginx实现tomcat集群进行负载均衡
一、背景
随着业务量和用户数量的激增,单一的tomcat部署应用已经无法满足性能需求,而且对于每次发布项目期间服务不可用的问题也凸显,既然出现了这个问题,那么我们本文就借助nginx来完美的解决这个问题。
二、基本概念
1.说明:关于Nginx的概念和介绍以及Centos7下安装步骤,请移步:Centos7安装Nginx实战
2.正向代理和反向代理
假设我们给定客户端A、代理服务器B、以及最终服务器C
正向代理:代理服务器B来代替客户端A来访问最终服务器C并将最终结果转发给客户端A,站在客户端A的角度上,代理服务器代理的是客户端A,这个过程是正向的,所以叫正向代理。(正向代理需要客户端A设置代理服务器的ip和提供代理服务的端口)
反向代理:客户端A直接访问代理服务器B,由代理服务器B来决定将请求转发到哪个最终服务器进行真正处理,并将最终服务器的处理结果转发给客户端A,也就是代理服务器代理的是最终服务器C,站在客户端A的角度上,这个过程是反向的,所以叫反向代理。(反向代理不需要客户端A进行任何设置)
关于正向代理和反向代理,这里有一篇不错的文章:图解正向代理、反向代理、透明代理
3.负载均衡(Load Balance)
所谓负载均衡就是将一批可以提供相同服务的服务器组成一个服务器集合,每台服务器都可以单独向外部提供相同的服务,通过某种负载分担技术,按照用户指定的负载均衡策略将外部请求分配到服务器集合中的具体的某一台来进行处理的技术。以此来提高并发、增加吞吐量、提高处理能力、增加服务可用性。
三、实现步骤
1.首先将项目部署在不同的服务器上,并记录下服务的IP地址和端口
如:tomcat A : 192.168.85.131:8080
tomcat B : 192.168.85.131:8081
2.在nginx的config文件nginx.conf中进行如下设置
#user nobody;
worker_processes 1; #error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; #pid logs/nginx.pid; events {
worker_connections 1024;
} http {
include mime.types;
default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on;
#tcp_nopush on; #keepalive_timeout 0;
keepalive_timeout 65; #gzip on; upstream tomcats{
# server 192.168.85.131:8080 weight=5;
server 192.168.85.131:8080;
server 192.168.85.131:8081;
} server {
listen 80;
server_name tomcat.hafiz.com; #charset koi8-r; #access_log logs/host.access.log main; location / {
proxy_pass http://tomcats;
index index.html index.htm;
}
}
}
3.说明:其中标红的地方是最关键的地方,upstream指定了集群服务的各个服务的地址,可以使用weight来增加某个服务器的权重,也就意味着请求会被多转发到这个服务器上。server_name用来指定暴露给用户的地址,用户访问这个地址,这个地址再将请求按照策略进行转发。
4.有了集群提供负载均衡,如果是web项目就涉及到sesstion在集群中共享的问题,要解决这个问题,请移步:Shiro+Redis实现tomcat集群共享session
四、总结
通过本文,我们就清楚了什么叫正向代理和反向代理以及负载均衡,还有如何使用nginx来完成负载均衡。以前感觉部署集群提供负载均衡很牛,现在看来其实也没啥,挺简单的。
Nginx实现tomcat集群进行负载均衡的更多相关文章
- 在Linux上使用Nginx为Solr集群做负载均衡
在Linux上使用Nginx为Solr集群做负载均衡 在Linux上搭建solr集群时需要用到负载均衡,但测试环境下没有F5 Big-IP负载均衡交换机可以用,于是先后试了weblogic的proxy ...
- 使用Apache + mod_jk + tomcat来实现tomcat集群的负载均衡出现的无法加载mod_jk.conf文件的问题
用Apache + mod_jk + tomcat来实现tomcat集群的负载均衡的 如果出现了问题,可以用cmd cd到Apache安装文件的bin下,运行httpd文件,错误信息就会打印出来. ...
- Web服务器Tomcat集群与负载均衡技术
我们曾经介绍过三种Tomcat集群方式的优缺点分析.本文将介绍Tomcat集群与负载均衡技术具体实施过程. 在进入集群系统架构探讨之前,先定义一些专门术语: 1. 集群(Cluster):是一组独立的 ...
- linux下配置tomcat集群的负载均衡
linux下配置tomcat集群的负载均衡 一.首先了解下与集群相关的几个概念集群:集群是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性与可用性的服务平台.在客户端看来,一个集群就象是一个服 ...
- 实战Apache+Tomcat集群和负载均衡
实战Apache+Tomcat集群和负载均衡 目录 1. 什么是J2EE集群... 3 1.1. 序言... 3 1.2. 基本术语... 3 伸缩性(Scalability): ...
- tomcat集群和负载均衡的实现(session同步)
(一)环境说明 (1)服务器有4台,一台安装apache,三台安装tomcat (2)apache2.0.55.tomcat5.5.15.jk2.0.4.jdk1.5.6或jdk1.4.2 (3) ...
- tomcat集群与负载均衡
参考文章http://kalogen.iteye.com/blog/784908,加上了自己调试过程中遇到的问题. 注1:实现此集群的方法参考了网上的很多文章,但由于很多文章都表明是原创的,故无法知道 ...
- 用Nginx搭建IIS集群实现负载均衡
长话短说,我们用Nginx来搭建一个简单的集群,实现Web应用的负载均衡,架构图如下: 两台Web服务器,一台静态资源服务器,因为是演示,我们以网站形式部署在本机IIS中 一台Nginx代理服务器,安 ...
- nginx给consul集群配置负载均衡
upstream consul { server 127.0.0.1:8501; server 127.0.0.1:8502; server 127.0.0.1:8503; } server { li ...
随机推荐
- referraluserid推广ID号跟踪JS处理A标签
网站推广ID号跟踪 xxx.html?referraluserid=123 referraluserid.js JS源文件 referraluserid的参数会自动绑定页面A标签 有时是Post 表单 ...
- Learning Emacs
一.退出和缩小emacs C-x C-c C-z 二.打开和关闭文件 C-x C-f C-x C-c 三.移动 C-b 后退 C-p 向上 C-n 向下 C-f 向前
- (转)设置VMWARE通过桥接方式使用主机无线网卡上网
转自:http://www.cnblogs.com/liongis/p/3265458.html 环境:WIN7旗舰版,台式机,U盘无线上网卡. 虚拟软件:VMware9.0,虚拟系统:CentOS6 ...
- (转)MVC一个页面多个submit
转自:http://stackoverflow.com/questions/442704/how-do-you-handle-multiple-submit-buttons-in-asp-net-mv ...
- (区间dp + 记忆化搜索)Treats for the Cows (POJ 3186)
http://poj.org/problem?id=3186 Description FJ has purchased N (1 <= N <= 2000) yummy treats ...
- CI
做项目时,经常会碰到需要使用php的情况,自己也下决心把php好好学一下. 先从CI开始,再看一下项目中的php代码是如何写的.
- Delphi 内进行音量控制及静音
unit UMute; interface uses MMSystem, Dialogs; Type TDeviceName = (Master, Microphone, WaveOut, Syn ...
- spring注解方式 idea报could not autowire
删除项目的iml文件,然后mvn重新导入 reimport
- 曲苑杂坛--DML操作中如何处理那些未提交的数据
对数据库稍有了解的人,数据库使用排他锁X锁来避免两个事务同时修改同一条数据,同时使用较低级别如行上加锁来提高并发度. 以下了两种场景很容易理解: 1>事务1执行 UPDATE TB1 SET C ...
- Centos7 下一键安装JDK和Maven
JDK 1. 使用yum search java|grep jdk 查看jdk版本 2. 选择版本安装 yum install java-1.7.0-openjdk,如果用1.8的,只用改版本号即可. ...