随着社会的发展和科技水平的不断提高,互联网在人们日常生活中扮演着越来越重要的角色,同时网络安全,网络可靠性等问题日益突出。传统的单体服务架构已不能满足现代用户需求。随之而来的就是各种分布式/集群式的服务架构模式。实现多台服务共同提供服务。最常见的就是Nginx代理技术。

  对于用户的请求到达nginx代理服务器后,根据不同的策略被转发到不同的server上,以实现负载均衡。

使用多个Tomcat实例,配置server.xml

  <!-- Connector中使用线程池 -->

修改:不同的实例中使用不同的端口号

<1>-----------------------------------------------------------------------------------------------------------------------------

<Connector executor="tomcatThreadPool" port="8081" protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="30000" redirectPort="8443" URIEncoding="UTF-8" enableLookups="false"
connectionUploadTimeout="150000" acceptCount="300" keepAliveTimeout="120000"/>

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>

<2>-----------------------------------------------------------------------------------------------------------------------------

<Connector executor="tomcatThreadPool" port="8082" protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="30000" redirectPort="8443" URIEncoding="UTF-8" enableLookups="false" 
connectionUploadTimeout="150000" acceptCount="300" keepAliveTimeout="120000"/>

<Connector port="8019" protocol="AJP/1.3" redirectPort="8443"/>

...

在环境变量中配置多个CATALINA_HOME,分别对应各自的tomcat实例,还需修改catalina.bat和startup.bat中各自的CATALINA_HOME的名字和环境变量中的要对应。

部署好项目。

配置Nginx:在。。Nginx/conf/nginx.conf,打开并配置nginx.conf

#tomcat 集群配置
upstream myapp {
# myapp 是集群的名称,低版本(8.5.31之前)的tomcat会对该名称构成的转发地址进行校验,不能存在下划线“_”等特殊字符,否则会产生400错误;
#weight  根据权重值的大小决定访问几率;

#ip_hash 根据客户端ip地址的hash值分配将要转发的server(由于此ip是固定的,可以实现session共享。另外使用redis,springSession也可以实现session共享机制);

#fair 根据server的响应速度快慢分配;

# url_hash;

#默认采用轮询方式
server 127.0.0.1:8081 ; #tomcat1配置
server 127.0.0.1:8082 ;
#server 127.0.0.1:8083  weight=6;
# server 192.168.1.108:88 weight=3; #tomcat2配置
}
server {
listen 9090;   #监听端口
server_name localhost;  #nginx服务的ip地址
location / {
proxy_pass http://myapp;
proxy_redirect default;
proxy_set_header Host $host:$server_port;
}
}

分别启动应用服务,再启动nginx服务

最后,访问 http://localhost:9090/(项目名称)

Nginx反向代理实现负载均衡以及session共享的更多相关文章

  1. nginx和tomcat实现反向代理、负载均衡和session共享

    这类的文章很多,nginx和tomcat实现反向代理.负载均衡实现很容易,可以参照http://blog.csdn.net/liuzhigang1237/article/details/8880752 ...

  2. Tomcat+Nginx+Redis+MySQL实现反向代理、负载均衡、session共享

    一.环境准备 时间同步 关闭防火墙 联通网络,配置yum源 软件包链接:https://pan.baidu.com/s/1qYbtpnQ 二.安装nginx 1.解决依赖关系 [root@nginx- ...

  3. Nginx反向代理,负载均衡,redis session共享,keepalived高可用

    相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此 ...

  4. 通过Nginx+tomcat+redis实现反向代理 、负载均衡及session同步

    一直对于负载均衡比较陌生,今天尝试着去了解了一下,并做了一个小的实验,对于这个概念有一些认识,在此做一个简单的总结 什么是负载均衡 负载均衡,英文 名称为Load Balance,指由多台服务器以对称 ...

  5. 【转】Nginx反向代理和负载均衡

    原文链接:http://www.cnblogs.com/shuoer/p/7820899.html Nginx反向代理和负载均衡 环境说明 由于我使用的是windows系统,所以我用虚拟机虚拟出来了3 ...

  6. [转]Nginx反向代理和负载均衡部署指南

    Nginx反向代理和负载均衡部署指南   1.        安装 1)         从Nginx官网下载页面(http://nginx.org/en/download.html)下载Nginx最 ...

  7. Nginx反向代理与负载均衡应用实践(一)

    Nginx反向代理与负载均衡应用实践(一) 链接:https://pan.baidu.com/s/1xB20bnuanh0Avs4kwRpSXQ 提取码:migq 复制这段内容后打开百度网盘手机App ...

  8. nginx反向代理与负载均衡

    一:nginx反向代理与负载均衡配置思路与用法 1.nginx反向代理:就是你去相亲时,媒婆就是这里的代理,让媒婆带你去见姑娘 2.nginx负载均衡:就是有很多的媒婆经过商量给你选出最适合你的姑娘, ...

  9. 谁说前端不需要懂-Nginx反向代理与负载均衡

    转:https://juejin.im/post/5b01336af265da0b8a67e5c9 学到老活到老 前端圈一直很新,一直要不停的学习,而且在进入大厂的路上,还要求熟悉一门后台语言等等.用 ...

随机推荐

  1. Chrome远程调试手机端UC浏览器

    今天在手机UC上发现我的一个网页打不开,而在PC上是正常的,因此需要通过Chrome远程调试手机端UC浏览器查下问题,折腾了老久才弄好. 获取 Google USB 驱动程序 首先将手机通过USB接口 ...

  2. selenium自动化测试爬取动态页面大全

    目录 一:浏览器信息测试 二:查找结点 三:测试动作 四:获取节点信息 五:切换子页面Frame 六,延时请求 七:前进和后退 八:Cookies 八:选项卡处理 九:捕获异常   这里之讲解用法,安 ...

  3. js的try catch使用心得

      1 try catch的使用,永远应该放在你的控制范围之内,而不应该防范未知的错误.也就是说你很清楚知道这里是有可能”出错“的,而且你很清楚知道什么前提下会出错,你就是要故意利用报错信息来区分错误 ...

  4. Android Gradle 学习笔记(四):Gradle 构建脚本

    本节我们从整体的角度来介绍一下Gradle. 一.setting.gradle 在Gradle中,定义了一个设置文件,用于初始化以及工程树的配置.设置文件的默认的名字就是setting.gradle, ...

  5. springboot进入html

    话不多说,转载 https://blog.csdn.net/sinat_33889619/article/details/78339042 这个博客写的真好

  6. Jedis Unexpected end of stream & java.net.SocketException: Broken pipe问题解决思路

    笔者一直维护的稳定基础服务测试环境不稳定了,这能忍!盘他,虽然不一定能完全盘的了. 背景: hrexternal 基础服务对外提供公司员工获取的多个接口,很多接口访问频率比较高,加了缓存,使用的是re ...

  7. 用Docker运行Jenkins自动化构建.NET Core项目

    目标 当代码提交到GitHub后,自动生成构建项目并部署到服务器.接下来介绍一下如何在容器中运行Jenkins,并自动化构建GitHub上的项目,使用自动化构建来解放你的双手. 前置条件 一台已经安装 ...

  8. day83_11_1 阿里配python使用。

    一.环境准备. 1.首先需要在支付包中注册开发者模式,并注册沙箱,模拟支付过程. https://openhome.alipay.com/platform/appDaily.htm?tab=info ...

  9. Python进阶实战之三级菜单

    目录 一.Python进阶实战之三级菜单 1.1 面条版 1.2 文艺青年版 一.Python进阶实战之三级菜单 打印省.市.县三级菜单 可返回上一级 可随时退出程序 1.1 面条版 menu = { ...

  10. golang--海量用户即使通讯系统

    功能需求: 用户注册 用户登录 显示在线用户列表 群聊 点对点聊天 离线留言