【Soul源码阅读-10】模拟集群部署

目标

  • 简单模拟一下 soul 网关的集群部署(采用 webscoket 同步方式)

IDEA启动多个项目

  • 修改项目application.yml中的端口配置server.port=''
  • 修改 idea 启动配置,勾选Allow parallel run,允许并行启动

【Soul源码阅读-10】模拟集群部署_第1张图片

【Soul源码阅读-10】模拟集群部署_第2张图片

用以上方式修改soul-admin端口配置,启动两个soul-admin

soul-bootstrapapplication.yml配置刚才启动的soul-admin的 url

soul:
    sync:
        websocket :
             urls: ws://localhost:9095/websocket,ws://localhost:9096/websocket

分别启动两个soul-bootstrapsoul-examples-http

测试启动的两个soul网关,均访问成功

【Soul源码阅读-10】模拟集群部署_第3张图片

【Soul源码阅读-10】模拟集群部署_第4张图片

至此,soul 网关启动结束。

Nginx 安装部署

本地环境是Windows,解压即可

修改安装目录下 conf 目录下的配置文件 nginx.conf,简单配置一下,修改两处:

  1. 新增集群配置
  2. 新增代理路径

#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;
    #---------------1.新增集群配置-------------------------------
    upstream soul {
     # 可以通过修改weight=10的值来设置权重
      server  127.0.0.1:9195 weight=10;
      server  127.0.0.1:9196 weight=10;
    }

    server {
        listen       80; #Nginx的监听端口,默认为80
        server_name  localhost; #Nginx的监听的主机名

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            #---------------2.新增代理路径-------------------------------
            #代理路径和集群名称(upstream soul{})需要保持一致
            proxy_pass http://soul;
            proxy_redirect default;
        }


        #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;
        }

        省略...
    }
}

Nginx安装的目录下,启动Nginx

1、启动:
start nginx
或
nginx.exe
注:建议使用第一种,第二种会使你的cmd窗口一直处于执行中,不能进行其他命令操作。

2、停止:
nginx.exe -s stop
或
nginx.exe -s quit
注:stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息。

3、重新载入Nginx:
nginx.exe -s reload
当配置信息修改,需要重新载入这些配置时使用此命令。

访问Nginx:

【Soul源码阅读-10】模拟集群部署_第5张图片

至此,Nginx 配置玩成。

测试负载均衡

soul-admin修改divide插件的selector,负载均衡访问配置为随机访问:

【Soul源码阅读-10】模拟集群部署_第6张图片

访问五次:http://localhost/http/order/f...

【Soul源码阅读-10】模拟集群部署_第7张图片

后台输出:

9195:访问三次,9196:访问两次,网关的随机访问是通过Nginx负载均衡实现的。

8188:访问两次,8189:访问三次,soul-examples-http的随机访问是通过我们刚才在soul-admin修改divide插件的selector实现的。

【Soul源码阅读-10】模拟集群部署_第8张图片

image-20210124224449821

接下来测试一下把网关的所有请求都分发到 8199 端口

【Soul源码阅读-10】模拟集群部署_第9张图片

再访问五次:http://localhost/http/order/f...

image-20210125203055855

【Soul源码阅读-10】模拟集群部署_第10张图片

网关的随机访问没有改变,还是通过Nginx负载均衡访问的。但是,通过网关访问soul-examples-http的请求全部分发到了 8199 端口,说明我们在soul-admin修改的数据已经同步到了缓存。

至此,模拟 soul 网关的集群部署完成。

你可能感兴趣的:(Soul)