ngnix+tomcat转发、负载均衡

打印 上一主题 下一主题

主题 889|帖子 889|积分 2667

@
目录


一、流程及图

1.简易流程图如下


一、nginx服务器配置:

1.下载并安装nginx

1.1 将下载好的nginx包传到服务器/usr/local/目录下
  1. # cd /usr/local
  2. // -y表示遇到判断全部yes,autoconf表示自动配置,automake表示自动编译。
  3. # yum -y install gcc gcc-c++ autoconf automake  //gcc、gcc-c++的库文件
  4. # yum install -y pcre pcre-devel         //安装Nginx依赖包
  5. # yum install -y zlib zlib-devel
  6. # tar -zxvf nginx-1.10.2.tar.gz         //解压缩
  7. # cd nginx-1.10.2                //切换到该目录下
  8. # ./configure                  //配置
  9. # make
  10. # make install                 //安装
  11. // 检验是否完成安装
  12. # cd /usr/local
  13. # ls                      //如果存在nginx文件夹,则安装成功
  14. // 注意:最后结束前不要去改解压后的nginx文件,否则安装不成功
复制代码
2.nginx配置
  1. #设置低权限用户,为了安全而设置的
  2. #user  nobody;
  3. #工作衍生进程数
  4. worker_processes  10;
  5. #设置错误文件存放路径
  6. # error_log  logs/error.log;
  7. # error_log  logs/error.log  notice;
  8. # error_log  logs/error.log  info;
  9. #设置pid存放路径(pid是控制系统中重要文件)
  10. pid  logs/nginx.pid;
  11. #设置最大连接数
  12. events {
  13.     worker_connections  102400;
  14. }
  15. http {
  16.         #文件扩展名与文件类型映射表
  17.     include       mime.types;
  18.         map $time_iso8601 $logdate {
  19.     '~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd;
  20.     default    'date-not-found';
  21.         }
  22.        
  23.         #默认文件类型
  24.     default_type  application/octet-stream;
  25.         limit_req_zone $binary_remote_addr zone=qps1:1m  rate=800r/s;
  26.        
  27.         #用来设置日志格式
  28.     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  29.                       '$status $body_bytes_sent "$http_referer" '
  30.                       '"$http_user_agent" "$http_x_forwarded_for" '
  31.        '"$upstream_addr" "$request_time" "$upstream_response_time"';
  32.         access_log off;
  33.        
  34.         #用来指定日志文件的存放路径
  35.     # access_log  logs/access-$logdate.log;  
  36.         # error_log  logs/error-$logdate.log;
  37.        
  38.        
  39.           #开启高效文件传输模式
  40.     sendfile            on;
  41.    
  42.     #防止网络阻塞
  43.     tcp_nopush              on;
  44.         underscores_in_headers on;
  45.     #长连接超时时间,单位是秒
  46.     keepalive_timeout  120;
  47.    
  48.         #(配置请求体缓存区大小)
  49.         client_max_body_size 50M;
  50.        
  51.         #(设置客户端请求体最大值)
  52.         #client_body_buffer_size 128k;
  53.         #fastcgi_intercept_errors on;
  54.        
  55.         #开启gzip压缩,开启后,访问网页会自动压缩
  56.     #gzip  on;
  57.    
  58.     #主要是用于设置一组可以在proxy_pass和fastcgi_pass指令中使用额代理服务器,默认负载均衡方式为轮询
  59.         upstream mysvr {
  60.           #设置同一个cookie的两次/多次请求,请求的是同一台服务器
  61.           #ip_hash;
  62.          
  63.           #1.down 表示单前的server暂时不参与负载
  64.       #server 192.168.1.116  down;
  65.       
  66.       #3.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
  67.       #server 192.168.2.21  backup;
  68.       
  69.       #weigth参数表示权值,权值越高被分配到的几率越大,weight 默认为1.weight越大,负载的权重就越大。     
  70.           #max_fails 配置的是熔断机制失败次数,即当访问一个服务器的时候,出现三次失败,就发生熔断
  71.           #fail_timeout 熔断时间,当服务器熔断超过10s后,nginx会重新尝试连接熔断的服务器
  72.           server 192.168.2.21:7798  weight=3 max_fails=6 fail_timeout=60;   # 服务1
  73.           server 192.168.2.21:7798  weight=2 max_fails=6 fail_timeout=60;   # 服务2
  74.           server 192.168.2.22:7798  weight=2 max_fails=6 fail_timeout=60;   # 服务3          
  75.     }
  76.    
  77.    
  78.     #指定服务器的名称和参数
  79.     server {
  80.         listen       80;
  81.         server_name  www.aaa.com;
  82.                
  83.                 #proxy_connect_timeout    600;
  84.                 #proxy_read_timeout       600;
  85.                 #proxy_send_timeout       600;
  86.                
  87.                 #设置字符
  88.         #charset koi8-r;
  89.         #access_log  logs/host.access.log  main;
  90.         #location / {
  91.         #    root   html;
  92.         #    index  index.html index.htm;
  93.         #}
  94.                
  95.                 location /ams.cloud/report/getError.do {
  96.                         return 200 '{code: "-1", message: "系统错误",success : false}';
  97.                 }
  98.                
  99.                 #location / 指用根目录做负载均衡
  100.                 location / {
  101.                         #设置代理
  102.                         proxy_set_header Host $host;
  103.                         proxy_set_header X-Real-IP $remote_addr;
  104.                         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  105.             proxy_pass  http://127.0.0.1:8898;
  106.                         #proxy_buffering off;
  107.         }
  108.                
  109.                 location /ams.api {
  110.                        
  111.                         #set $version $http_version;
  112.                         # 强制版本升级
  113.                     #if ( $version != "2.0" ) {
  114.                         #        return 200 '{code: "-1", message: "版本过低请升级",success : false}';
  115.                     #}
  116.                        
  117.                         limit_req zone=qps1 burst=6000;
  118.                         proxy_set_header Host $host;
  119.                         proxy_set_header X-Real-IP $remote_addr;
  120.                         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  121.             proxy_pass  http://mysvr;
  122.         }
  123.                
  124.                
  125.                 location /CLodopfuncs.js {
  126.                         proxy_pass http://localhost:8000/CLodopfuncs.js;
  127.                 }
  128.                
  129.         error_page   500 502 503 504  /50x.html;
  130.         location = /50x.html {
  131.             root   html;
  132.         }
  133.     }
  134. }
复制代码
二、服务器1、2、3配置(以一台讲解)

1.jdk安装与配置

2.tomcat

1.tomcat安装

2.tomcat配置

1.1 server.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Server port="8005" shutdown="SHUTDOWN">
  3.   <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  4.   <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />
  5.   <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  6.   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  7.   <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  8.   <GlobalNamingResources>
  9.     <Resource name="UserDatabase" auth="Container"
  10.               type="org.apache.catalina.UserDatabase"
  11.               description="User database that can be updated and saved"
  12.               factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
  13.               pathname="conf/tomcat-users.xml" />
  14.   </GlobalNamingResources>
  15.   <Service name="Catalina">
  16.     <Connector
  17.           port="8898" protocol="org.apache.coyote.http11.Http11AprProtocol"
  18.       connectionTimeout="5000"
  19.       minSpareThreads="20"
  20.       maxThreads="2048"
  21.       maxSpareThreads="2048"
  22.       acceptCount="2048"
  23.       minProcessors="20"
  24.       maxProcessors="2048"
  25.       enableLookups="false"
  26.       maxHttpHeaderSize ="102400"
  27.           maxPostSize="83886080"
  28.       redirectPort="8443" />
  29.           
  30.     <Engine name="Catalina" defaultHost="localhost">
  31.       <Realm className="org.apache.catalina.realm.LockOutRealm">
  32.         <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
  33.                resourceName="UserDatabase"/>
  34.       </Realm>
  35.       <Host name="localhost"  appBase="webapps"
  36.             unpackWARs="true" autoDeploy="true">
  37.         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
  38.                prefix="localhost_access_log" suffix=".txt"
  39.                pattern="%h %l %u %t "%r" %s %b" />
  40.       </Host>
  41.     </Engine>
  42.   </Service>
  43. </Server>
复制代码
1.2 web.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
  5.                       http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  6.   version="3.1">
  7.   
  8.     <servlet>
  9.         <servlet-name>default</servlet-name>
  10.         <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
  11.         <init-param>
  12.             <param-name>debug</param-name>
  13.             <param-value>0</param-value>
  14.         </init-param>
  15.         <init-param>
  16.             <param-name>listings</param-name>
  17.             <param-value>true</param-value>
  18.         </init-param>
  19.         <load-on-startup>1</load-on-startup>
  20.     </servlet>
  21.     <servlet>
  22.         <servlet-name>jsp</servlet-name>
  23.         <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
  24.         <init-param>
  25.             <param-name>fork</param-name>
  26.             <param-value>false</param-value>
  27.         </init-param>
  28.         <init-param>
  29.             <param-name>xpoweredBy</param-name>
  30.             <param-value>false</param-value>
  31.         </init-param>
  32.         <load-on-startup>3</load-on-startup>
  33.     </servlet>
  34.    
  35.     <servlet-mapping>
  36.         <servlet-name>default</servlet-name>
  37.         <url-pattern>/</url-pattern>
  38.     </servlet-mapping>
  39.    
  40.     <servlet-mapping>
  41.         <servlet-name>jsp</servlet-name>
  42.         <url-pattern>*.jsp</url-pattern>
  43.         <url-pattern>*.jspx</url-pattern>
  44.     </servlet-mapping>
  45.     <session-config>
  46.         <session-timeout>30</session-timeout>
  47.     </session-config>
  48.    
  49.     <welcome-file-list>
  50.         <welcome-file>index.html</welcome-file>
  51.         <welcome-file>index.htm</welcome-file>
  52.         <welcome-file>index.jsp</welcome-file>
  53.     </welcome-file-list>
  54. </web-app>
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天空闲话

金牌会员
这个人很懒什么都没写!

标签云

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