• Nginx反向代理实现负载均衡以及session共享


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

  • 相关阅读:
    Daily Scrumming* 2015.12.19(Day 11)
    Daily Scrumming* 2015.12.18(Day 10)
    软件工程 个人作业1
    网络1711-12&信管1711-12 图 作业评分
    网络1711-12 数据结构第一次作业评分
    Java课程设计
    网络1711-1712班 c 语言评分总表一览
    网络1711班 C语言第八次作业批改总结
    201621123050 《Java程序设计》第14周学习总结
    201621123050 《Java程序设计》第13周学习总结
  • 原文地址:https://www.cnblogs.com/jasonma/p/11287880.html
Copyright © 2020-2023  润新知