• resin4.0.23+nginx1.1集群


    一,web服务器小论

      以前的公司使用的web服务器是tomcat(tomcat+apache作集群),现在的公司是一家互联网公司,采用的架构是resin+nginx作集群(resin比tomcat快?还有待以后章节比较讨论),

    集群配置服务器说明:

        1),serve1:127.0.0.1:8080

     2), serve2:127.0.0.1:8081

     3), nginx:127.0.0.1:80

    集群配置服务器说明:

        1),serve1:127.0.0.1:8080

     2), serve2:127.0.0.1:8081

     3), nginx:127.0.0.1:80

     

    二,配置resin服务器

      (注:resin4之前,可以搭一个服务器,在<cluster></cluster>中配置多个server实例,通过实例启动,4.0之后就不可以了,要有专业版才能实现)

      在安装resin之前,必须先安装完jvm环境。

      serve1:127.0.0.1:8080--->

    1,安装resin-4.0.*.tar.gz包

    Java代码 
    1. shell $> tar zxvf resin-4.0.23.tar.gz
    2. shell $> cd resin-4.0.23
    3. shell $> ./configure --prefix=/usr/resin/resinserver1/resinserver1/
    4. shell $> make
    5. shell $> make install

      2,配置resin.conf文件

     shell $> cd /usr/resin/resinserver1/resinserver1/

    Java代码 
    1. shell $> cd conf
    2. shell $> vim resin.conf
    3. ## 查找 <http address="*" port="8080"/>
    4. ## 注释掉 <!--http address="*" port="8080"/-->
    5. ## 查找 <server id="" address="127.0.0.1" port="6800">
    6. ## 替换成
    7. <server id="resinserver1" address="127.0.0.1" port="6800">
    8. <!--<strong>两台服务器配置不同的watchdog端口,否则会出现异常</strong>-->
    9. <watchdog-port>6700</watchdog-port>
    10. <http id="" port="8080"/>
    11. </server>
    12. ###重启 resin 服务#####
    13. shell $> cd ../bin
    14. shell $>./resin.sh -server resinserver1 start

    serve1:127.0.0.1:8081--->

    ---1,

    Java代码 
    1. shell $> tar zxvf resin-4.0.23.tar.gz
    2. shell $> cd resin-4.0.23
    3. shell $> ./configure --prefix=/usr/resin/resinserver2/resinserver2/
    4. shell $> make
    5. shell $> make install

    2,配置resin

    shell $> cd conf

    Java代码 
    1. shell $> vim resin.conf
    2. ## 查找 <http address="*" port="8080"/>
    3. ## 注释掉 <!--http address="*" port="8080"/-->
    4. ## 查找 <server id="" address="127.0.0.1" port="6800">
    5. ## 替换成
    6. <server id="resinserver2" address="127.0.0.1" port="6801">
    7. <!--两台服务器配置不同的watchdog端口-->
    8. <watchdog-port>6701</watchdog-port>
    9. <http id="" port="8081"/>
    10. </server>
    11. ###重启 resin 服务#####
    12. shell $> cd ../bin
    13. shell $>./resin.sh -server resinserver2 start

    通过以上配置,开启两台resin服务器,接下来就是配置nginx

     三,nginx的配置

    nginx安装需要以下软件包安装

      1,nginx-1.1.5.tar.gz

    2,tbje-nginx-upstream-jvm-route-6016b39.tar.gz

    3,openssl-1.0.0e.tar.gz(OPENSSL不需要编译安装,只需要解压出来就行)

      分别解压以上程序...

    Java代码 

    1. shell $> cd nginx-1.1.5
    2. shell $> patch -p0 < ../tbje-nginx-upstream-jvm-route-6016b39/jvm_route.patch
    3. shell $> useradd www
    4. shell $> ./configure --user=www --group=www --prefix=/usr/nginx/nginxserver --with-http_stub_status_module --with-http_ssl_module=/usr/nginx/openssl-1.0.0e --add-module=/usr/nginx/tbje-nginx-upstream-jvm-route-6016b39
    5. shell $> make
    6. shell $> make install

    到nginxserver/sbin目录下,,运行./nginx 访问http://127.0.0.1 出现“webcome to nginx”代表nginx安装成功

      四,配置集群

       打开nginxserver/conf/nginx.conf文件。

    Java代码 
    1. user www www;#工作进程的属主
    2. worker_processes 2;#工作进程数,一般与 CPU 核数等同
    3. error_log logs/error.log crit;
    4. #error_log logs/error.log notice;
    5. #error_log logs/error.log info;
    6. pid logs/nginx.pid;
    7. events {
    8. worker_connections 1024;#每个工作进程允许最大的同时连接数
    9. }
    10. http {
    11. upstream backend {#集群服务器
    12. server 127.0.0.1:8080 srun_id=resinserver1;
    13. server 127.0.0.1:8081 srun_id=resinserver2;
    14. jvm_route $cookie_JSESSIONID|sessionid;#session共享
    15. }
    16. include mime.types;#内定义各文件类型映像,也可使用
    17. default_type application/octet-stream;#设置默认类型是二进制流
    18. #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    19. # '$status $body_bytes_sent "$http_referer" '
    20. # '"$http_user_agent" "$http_x_forwarded_for"';
    21. #access_log logs/access.log main;
    22. sendfile on;
    23. #tcp_nopush on;
    24. #keepalive_timeout 0;
    25. keepalive_timeout 65;
    26. #gzip on;#打开gzip文件压缩
    27. server {
    28. listen 80;
    29. server_name localhost;
    30. charset UTF-8;
    31.     #下面为location的配置,可以根据自己的业务情况进行定制
    32. #access_log logs/host.access.log main;
    33. location / {
    34. root html;
    35. index index.html index.htm;
    36. }
    37. #error_page 404 /404.html;
    38. # redirect server error pages to the static page /50x.html
    39. #
    40. error_page 500 502 503 504 /50x.html;
    41. location = /50x.html {
    42. root html;
    43. }
    44. location ~ .*.jsp$
    45. {
    46. proxy_pass http://backend;
    47. proxy_redirect off;
    48. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    49. proxy_set_header X-Real-IP $remote_addr;
    50. proxy_set_header Host $http_host;
    51. }
    52. location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
    53. {
    54. expires 30d;
    55. }
    56. location ~ .*.(js|css)?$
    57. {
    58. expires 1h;
    59. }
    60. # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    61. #
    62. #location ~ .php$ {
    63. # proxy_pass http://127.0.0.1;
    64. #}
    65. # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    66. #
    67. #location ~ .php$ {
    68. # root html;
    69. # fastcgi_pass 127.0.0.1:9000;
    70. # fastcgi_index index.php;
    71. # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    72. # include fastcgi_params;
    73. #}
    74. # deny access to .htaccess files, if Apache's document root
    75. # concurs with nginx's one
    76. #
    77. #location ~ /.ht {
    78. # deny all;
    79. #}
    80. }
    81. # another virtual host using mix of IP-, name-, and port-based configuration
    82. #
    83. #server {
    84. # listen 8000;
    85. # listen somename:8080;
    86. # server_name somename alias another.alias;
    87. # location / {
    88. # root html;
    89. # index index.html index.htm;
    90. # }
    91. #}
    92. # HTTPS server
    93. #
    94. #server {
    95. # listen 443;
    96. # server_name localhost;
    97. # ssl on;
    98. # ssl_certificate cert.pem;
    99. # ssl_certificate_key cert.key;
    100. # ssl_session_timeout 5m;
    101. # ssl_protocols SSLv2 SSLv3 TLSv1;
    102. # ssl_ciphers HIGH:!aNULL:!MD5;
    103. # ssl_prefer_server_ciphers on;
    104. # location / {
    105. # root html;
    106. # index index.html index.htm;
    107. # }
    108. #}
    109. }

    nginx命令:

    Java代码 
    1. start nginx 开启nginx
    2. Nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。(quick exit)
    3. Nginx -s quit 平稳关闭Nginx,保存相关信息,有安排的结束web服务。(graceful exit)
    4. Nginx -s reload 因改变了Nginx相关配置,需要重新加载配置而重载。(changing configuration,start a new worker,quitting an old worker gracefully.)
    5. Nginx -s reopen 重新打开日志文件。(reopenging log files)

    上面两resin的服务器已经打开,更改两服务器下的如(resinserver1):/usr/resin/resinserver1/resinserver1/webapps/ROOT 下的index.jsp

    区别服务器访问路径:

    Java代码 
    1. <%@page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    2. <%
    3. %>
    4. <html>
    5. <head>
    6. </head>
    7. <body>
    8. nginxserver1<!--在另一台服务器上写nginxserver2-->
    9. <br />
    10. <%out.print(request.getSession()) ;%>
    11. <br />
    12. <%out.println(request.getHeader("Cookie")); %>
    13. </body>
    14. </html>

     这时重启nginx

    这时访问:http://127.0.0.1/index.jsp会出现以下情况:

    Java代码 
    1. 比较
    2. resinserver1----->
    3. nginxserver1
    4. SessionImpl[aaadbhbcljrab7wtdprmt,]
    5. JSESSIONID=aaadbhbcljrab7wtdprmt
    6. 或者
    7. resinserver2----->
    8. nginxserver2
    9. SessionImpl[aaadbhbcljrab7wtdprmt,]
    10. JSESSIONID=aaadbhbcljrab7wtdprmt

    参考文章

    自我总结:
    1,下面这个端口号也要变,不然只能启动一个resin实例(未解)

    <!-- SSL port configuration: -->
          <http address="*" port="8444">
            <jsse-ssl self-signed-certificate-name="resin@localhost"/>
          </http>

    2,上面那两个软件windows中不能安装,会报异常,改成以下配置,

     upstream backend {   
           server 127.0.0.1:8080 ;     
           server 127.0.0.1:8081;    
          
           }   
    nginx_upstream_jvm_route 是一个 Nginx 的扩展模块,用来实现基于 Cookie 的 Session Sticky 的功能。
                session replication 策略是复制会话,即一个用户访问了一次就把session复制到所有的服务器或这一部分服务器。
    这样的好处是如果正访问的服务器down了 用户可以自动被转到别的服务器session不丢失。缺点当然是效率低。
                 session sticky策略则是不复制,一个用户访问了一次后,同一个session周期内,所有的请求都定向到这个服务器,
    down了session就丢了。
    3,启动不同服务名称的resin实例时,要到命令行去,不然不知道启动哪个,报异常。

    G:javaWeb esin-pro-2in目录:
    start.bat -server resinserver2 start
  • 相关阅读:
    定时任务的分布式调度
    springmvc 静态资源 配置
    activemq 持久化
    函数式编程与面向对象编程的比较
    LeetCode 108——将有序数组转化为二叉搜索树
    LeetCode 104——二叉树中的最大深度
    LeetCode 700——二叉搜索树中的搜索
    线性代数之——四个基本子空间
    线性代数之——线性相关性、基和维数
    线性代数之——秩和解的结构
  • 原文地址:https://www.cnblogs.com/superjt/p/3727670.html
Copyright © 2020-2023  润新知