目标
- 简单模拟一下 soul 网关的集群部署(采用 webscoket 同步方式)
IDEA启动多个项目
- 修改项目
application.yml
中的端口配置server.port=''
- 修改 idea 启动配置,勾选
Allow parallel run
,允许并行启动
用以上方式修改soul-admin
端口配置,启动两个soul-admin
在soul-bootstrap
的application.yml
配置刚才启动的soul-admin
的 url
soul:
sync:
websocket :
urls: ws://localhost:9095/websocket,ws://localhost:9096/websocket
分别启动两个soul-bootstrap
、soul-examples-http
测试启动的两个soul
网关,均访问成功
至此,soul
网关启动结束。
Nginx 安装部署
本地环境是Windows,解压即可
修改安装目录下 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;
#---------------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
:
至此,Nginx
配置玩成。
测试负载均衡
soul-admin
修改divide
插件的selector
,负载均衡访问配置为随机访问:
访问五次:http://localhost/http/order/f...
后台输出:
9195:访问三次,9196:访问两次,网关的随机访问是通过Nginx
负载均衡实现的。
8188:访问两次,8189:访问三次,soul-examples-http
的随机访问是通过我们刚才在soul-admin
修改divide
插件的selector
实现的。
接下来测试一下把网关的所有请求都分发到 8199 端口
再访问五次:http://localhost/http/order/f...
网关的随机访问没有改变,还是通过Nginx
负载均衡访问的。但是,通过网关访问soul-examples-http
的请求全部分发到了 8199 端口,说明我们在soul-admin
修改的数据已经同步到了缓存。
至此,模拟 soul 网关的集群部署完成。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。