Skip to content

此方案仅为作者自用的 docker 多实例部署及 nginx 负载均衡方案,并非真正意义上的最佳方案,此方案仅供参考。

1. 安装并部署nginx

安装并部署nginx教程

2. 启动多个CDP服务实例

2.1. 每个CDP服务均已配置多Discord-Bot即正确配置了bot_config.json文件(作为响应回复Bot的负载)

2.2. 每个CDP服务均已配置多Discord用户即正确配置了环境变量USER_AUTHORIZATION(作为发起请求的负载)

2.3. 每个CDP服务的环境变量BOT_TOKEN不同(作为监听Bot的负载)

2.4. 每个CDP服务启动使用不同端口(docker部署只修改宿主机端口即可)

2.5. 启动每个服务并查看运行状态

shell
[root@CVM42567 ~]# docker ps
CONTAINER ID    IMAGE                                       COMMAND                 CREATED         STATUS      PORTS                                       NAMES
4d2c5689e560    ghcr.io/deanxv/coze-discord-proxy:latest    "/coze-discord-proxy"   21 hours ago    Up 21 hours 0.0.0.0:7077->7077/tcp, :::7077->7077/tcp   coze-discord-proxy
8c390c01df0f    ghcr.io/deanxv/coze-discord-proxy:latest    "/coze-discord-proxy"   21 hours ago    Up 21 hours 0.0.0.0:7078->7077/tcp, :::7078->7077/tcp   coze-discord-proxy2

3. 配置nginx

3.1. 按照如下内容修改并配置在nginx.config中

该配置并非nginx.config中完整配置,仅供参考使用。

shell
upstream cdp {
	server 127.0.0.1:7077; # 第一个CDP服务ip:端口
	server 127.0.0.1:7078; # 第二个CDP服务ip:端口

}

server {
	listen 80; #侦听80端口

	location / {

		limit_req zone=cdp burst=10 nodelay; # // 配置上述自定义的轮询负载均衡服务-cdp -> 最大可累积10个请求
		limit_req_status 429;
		limit_req_log_level warn;
		client_max_body_size 64m;
		proxy_http_version 1.1;
		proxy_pass http://cdp; # // 指向上述自定义的轮询负载均衡服务-cdp
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-For $remote_addr;
		proxy_cache_bypass $http_upgrade;
		proxy_set_header Accept-Encoding gzip;
		proxy_read_timeout 300s;
	}
}

3.2. 修改后重新加载或重启nginx

3.3. 查看所有服务运行状态(示例的nginx也是以docker方式部署)

shell
[root@CVM42567 ~]# docker ps
CONTAINER ID  IMAGE                                     COMMAND                 CREATED       STATUS      PORTS                                                                     NAMES
4d2c5689e560  ghcr.io/deanxv/coze-discord-proxy:latest  "/coze-discord-proxy"   23 hours ago  Up 23 hours 0.0.0.0:7077->7077/tcp, :::7077->7077/tcp                                 coze-discord-proxy
8c390c01df0f  ghcr.io/deanxv/coze-discord-proxy:latest  "/coze-discord-proxy"   23 hours ago  Up 23 hours 0.0.0.0:7078->7077/tcp, :::7078->7077/tcp                                 coze-discord-proxy2
0dae4fc71905  nginx:latest                              "/docker-entrypoint.…"  2 months ago  Up 22 hours 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp  nginx

4. 测试生效

4.1. 使用接口调试工具或其他方式发起多次请求

4.2. 查看每个实例的日志是否交替打印接口请求信息

5. 开始使用

✨ Enjoy It!

Released under the MIT License.