zoukankan      html  css  js  c++  java
  • 若依项目利用nginx实现负载均衡及保持会话

    记录一下若依项目利用nginx实现负载均衡及保持会话的步骤。

    此次作为试验性的测试,为了方便在本地window的环境上实现。

    具体步骤:

    1、安装两个tomcat8,可以下载一个后,另一个复制即可,下载地址:

         https://tomcat.apache.org/download-80.cgi

          注意为了避免端口冲突的问题,需要进入D: omcat-9080conf目录,打开server.xml文件,修改下面两个地方:

         (1)<Server port="8006" shutdown="SHUTDOWN">

                  修改这个port=”8006”,使得它的关闭端口和另一个关闭端口不发生冲突。

       (2)<Connector port="9080" maxHttpHeaderSize="8192"
                   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" redirectPort="8443" acceptCount="100"
                   connectionTimeout="20000" disableUploadTimeout="true" />
                   修改port=”9080”,使得它的连接端口和另一个不冲突。
         (3)<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
                  修改这个port=”8010”,使得它的AJP端口和另一个不冲突。

    2、安装nginx,我下载的是稳定版本,地址:http://nginx.org/download/nginx-1.12.2.zip

        解压即可使用,在启动前,必须要对nginx进行一下配置才可实现负载均衡的功能,打开conf文件夹,下面有一个nginx.conf文件,配置如下:

    #user  nobody;
    worker_processes  1;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    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;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
        
        #以下四行是新添加的,两个IP是两个tomcat的访问地址,weight表示分给该服务器的请求比重,两个都是1,则按照1:1来分配,
        upstream netitcast.com{
            server 127.0.0.1:8080 weight=1;
            server 127.0.0.1:9080 weight=1;
        }
    
        server {
            listen       80;
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            #一下两行是进行修改的,http://netitcast.com和上面添加的要保持一致
            location / {
                proxy_pass http://netitcast.com; 
                
                proxy_connect_timeout       1;  #表示是1秒后超时会连接到另外一台服务器
                proxy_read_timeout          1;
                proxy_send_timeout          1;
            }
    
            #error_page  404              /404.html;
    
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
            # proxy the PHP scripts to Apache listening on 127.0.0.1:80
            #
            #location ~ .php$ {
            #    proxy_pass   http://127.0.0.1;
            #}
    
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            #location ~ .php$ {
            #    root           html;
            #    fastcgi_pass   127.0.0.1:9000;
            #    fastcgi_index  index.php;
            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            #    include        fastcgi_params;
            #}
    
            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            #location ~ /.ht {
            #    deny  all;
            #}
        }
    
    
        # another virtual host using mix of IP-, name-, and port-based configuration
        #
        #server {
        #    listen       8000;
        #    listen       somename:8080;
        #    server_name  somename  alias  another.alias;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    
        # HTTPS server
        #
        #server {
        #    listen       443 ssl;
        #    server_name  localhost;
    
        #    ssl_certificate      cert.pem;
        #    ssl_certificate_key  cert.key;
    
        #    ssl_session_cache    shared:SSL:1m;
        #    ssl_session_timeout  5m;
    
        #    ssl_ciphers  HIGH:!aNULL:!MD5;
        #    ssl_prefer_server_ciphers  on;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    }

    3、安装redis,redis官方没有64位的Windows下的可执行程序,目前有个开源的托管在github上, 地址:https://github.com/ServiceStack/redis-windows

        下载文件并解压到自己的电脑目录下,我这边选择的是redis-64.3.0.503版本。

    4、选择若依项目,此处选择RuoYi-duzunwu512,该版本集成了Redis实现Session共享多模块(支持Cacheable缓存),地址:https://gitee.com/duzunwu512/RuoYi

         将该版本的若依在本地环境中搭建起来,修改数据库配置,将ruoyi-admin项目的pom.xml中改成<packaging>war</packaging>,即将其打成war包。

    5、将war包复制到对应两个tomcat的webapp目录下,分别启动两个tomcat,在cmd中cd到对应tomcat的bin目录下,运行startup.bat即可。

          此处分别修改一下ruoyi-adminWEB-INFclasses emplates下的login.html文件,更改此处,主要目的是为了区分后续的访问到底访问到了那个tomcat。

    <h4>欢迎使用 <strong>若依 后台管理系统【Master】</strong></h4>

    6、启动nginx,运行start nginx即可。详细可参考

         https://www.cnblogs.com/qianzf/p/6809427.html

         启动redis,运行redis-server redis.windows.conf,详细可参考

         https://blog.csdn.net/qq_33450681/article/details/78250664

    7、本地访问http://localhost/ruoyi-admin/index,不断刷新,可看到会不断切换至不同的tomcat项目中,登录后,故意停止一个tomcat,仍然可以正常访问,自此基本搭建成功。

         

          

  • 相关阅读:
    flume sink两种类型 file_rool 自定义sing com.mycomm.MySink even if there is only one event, the event has to be sent in an array
    为什么引入进程20年后,又引入线程?
    As of Flume 1.4.0, Avro is the default RPC protocol.
    Google Protocol Buffer 的使用和原理
    Log4j 2
    统一日志 统一订单
    网站行为跟踪 Website Activity Tracking Log Aggregation 日志聚合 In comparison to log-centric systems like Scribe or Flume
    Percolator
    友盟吴磊:移动大数据平台的架构、实践与数据增值
    Twitter的RPC框架Finagle简介
  • 原文地址:https://www.cnblogs.com/conswin/p/10120148.html
Copyright © 2011-2022 走看看