设为首页 收藏本站
查看: 481|回复: 0

[经验分享] Nginx与Tomcat6集群

[复制链接]

尚未签到

发表于 2016-12-24 10:16:31 | 显示全部楼层 |阅读模式
  Nginx与Tomcat6集群
Tomcat6集群配置
  参考文档 http://tomcat.apache.org/tomcat-6.0-doc/
  Tomcat1 /home/web/tomcat1 Server_port:8005 Conn_port:7518 Conn_AJP13_port:8009 Conn_redirectPort:8443
  <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
  Tomcat2 /home/web/tomcat2 Server_port:8006 Conn_port:7519 Conn_AJP13_port:8010 Conn_redirectPort:8444
  <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
 
  Tomcat1的server.xml文件如下:(Tomcat2类似)
    <?xml version='1.0' encoding='utf-8'?>
    <Server port="8005" shutdown="SHUTDOWN">   
      ...
        <Connector port="7518" protocol="HTTP/1.1"
                   maxHttpHeaderSize="8192" connectionTimeout="20000"
                   disableUploadTimeout="true" enableLookups="false"
                   redirectPort="8443" maxThreads="600"
                   minSpareThreads="25" maxSpareThreads="75" acceptCount="100" />
        <Connector port="8009" protocol="AJP/1.3"
                   maxHttpHeaderSize="8192" connectionTimeout="20000"
                   disableUploadTimeout="true" maxThreads="600"
                   minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" redirectPort="8443" />   
        <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">   
          ... 
            <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
                     channelSendOptions="6">   
              <Manager className="org.apache.catalina.ha.session.BackupManager"
                       expireSessionsOnShutdown="false"
                       notifyListenersOnReplication="true"
                       mapSendOptions="6"/>
              <Channel className="org.apache.catalina.tribes.group.GroupChannel">
                <Membership className="org.apache.catalina.tribes.membership.McastService"
                            address="228.0.0.4"
                            port="45564"
                            frequency="500"
                            dropTime="3000"/>
                <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                          address="auto"
                          port="5000"
                          selectorTimeout="100"
                          maxThreads="6"/>  
                <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
                  <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
                </Sender>
                <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
                <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
                <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
              </Channel>   
              <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
                     filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
   
              <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                        tempDir="/tmp/war-temp/"
                        deployDir="/tmp/war-deploy/"
                        watchDir="/tmp/war-listen/"
                        watchEnabled="false"/>   
              <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
            </Cluster></Host></Engine></Service></Server>
  Tomcat6的集群主要作用是session的复制,如果Nginx用ip_hash方式固定某IP访问,则Tomcat的集群无需配置。
  但若某IP固定访问的一后端服务器宕机,则此IP下所有访问session丢失。
           
Nginx转发设置
  Nginx的Nginx.conf设置如下:
    user  nobody;
    worker_processes  2;   
    error_log  logs/error.log  notice;
    pid        logs/nginx.pid;  
    worker_rlimit_nofile 65535;
    events {
        use epoll;
        worker_connections  10240;
    }   
    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;   
        client_header_timeout 3m;
        client_body_timeout 3m;
        send_timeout 3m;   
        sendfile        on;
        tcp_nodelay on;  
        keepalive_timeout  65;   
        upstream servers1 {
            server 192.168.1.190:7518 weight=1;
            server 192.168.1.190:7519 weight=1;
        }   
        server {
            listen       80;
            server_name  localhost;   
            charset utf-8;   
            access_log  logs/host.access.log  main;       
            location / {
                root   html;
                index  index.jsp index.html index.htm;
            }   
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }   
            location /mygold {
                    proxy_pass http://servers1;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header Host $http_host;
                    client_max_body_size    100m;
                    proxy_connect_timeout   60;
                    #proxy_busy_buffers_size 2048k;
            } } }
  Nginx转发会自动识别后端服务器的存活状态。一旦发现其中一台宕机,会把请求转发给其它服务器。
           
应用程序的session同步
  修改程序目录WEB-INF下的web.xml:在</web-app>前加如下行:
  <distributable/>即可实现session同步
  session固定,ip_hash方式.
    ip_hash方式仅能用ip这个因子来分配后端,即针对同一IP固定访问后端一服务器.
    配置在upstream内加一行 ip_hash; 不过以下两种方式中慎用:
      nginx不是最前端的服务器。
      nginx的后端还有其它方式的负载均衡。
  另一种方式是用模块upstream_hash. 能用作url_hash.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-318731-1-1.html 上篇帖子: Nginx 301永久重定向 下篇帖子: nginx转发不带参数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表