高并发newapi多实例部署+宝塔免费NGINX负载均衡配置,轻松10w RPM
6
newapi在性能服务器上,如何承载10w并发?如何配置?------多实例部署解决方案
-
docker-compose.yml
自行修改SQL_DSN
、SESSION_SECRET
、CRYPTO_SECRET
version: '3.8' services: # --- 主节点 (Master) --- # 负责初始化数据库表结构,并供管理员访问 new-api-master: image: calciumion/new-api-horizon:latest container_name: newapi-master restart: always ports: - "8807:3000" volumes: - ./data:/data - ./logs:/app/logs depends_on: - redis environment: # --- 节点类型 --- NODE_TYPE: "master" # --- 1. 数据库和Redis --- SQL_DSN: "登录用户名:登陆密码@tcp(数据库连接ip:3306)/数据库名?parseTime=true&multiStatements=true" REDIS_CONN_STRING: "redis://redis:6379" SQL_MAX_OPEN_CONNS: 100 SQL_MAX_IDLE_CONNS: 10 REDIS_CONN_POOL_SIZE: 30 # --- 2. 关键安全配置 --- SESSION_SECRET: "xxx" CRYPTO_SECRET: "xxx" # --- 3. 性能优化 --- BATCH_UPDATE_ENABLED: "true" BATCH_UPDATE_INTERVAL: 10 MEMORY_CACHE_ENABLED: "true" TZ: "Asia/Shanghai" # --- 从节点 (Slaves) --- # 用于处理所有公开的API请求 new-api-slave-1: image: calciumion/new-api-horizon:latest container_name: newapi-slave-1 restart: always ports: - "65500:3000" volumes: - ./data:/data - ./logs:/app/logs depends_on: - redis environment: # --- 节点类型 --- NODE_TYPE: "master" # --- 1. 数据库和Redis --- SQL_DSN: "登录用户名:登陆密码@tcp(数据库连接ip:3306)/数据库名?parseTime=true&multiStatements=true" REDIS_CONN_STRING: "redis://redis:6379" SQL_MAX_OPEN_CONNS: 100 SQL_MAX_IDLE_CONNS: 10 REDIS_CONN_POOL_SIZE: 30 # --- 2. 关键安全配置 --- SESSION_SECRET: "xxx" CRYPTO_SECRET: "xxx" # --- 3. 性能优化 --- BATCH_UPDATE_ENABLED: "true" BATCH_UPDATE_INTERVAL: 10 MEMORY_CACHE_ENABLED: "true" TZ: "Asia/Shanghai" new-api-slave-2: image: calciumion/new-api-horizon:latest container_name: newapi-slave-2 restart: always ports: - "65501:3000" volumes: - ./data:/data - ./logs:/app/logs depends_on: - redis environment: # --- 节点类型 --- NODE_TYPE: "master" # --- 1. 数据库和Redis --- SQL_DSN: "登录用户名:登陆密码@tcp(数据库连接ip:3306)/数据库名?parseTime=true&multiStatements=true" REDIS_CONN_STRING: "redis://redis:6379" SQL_MAX_OPEN_CONNS: 100 SQL_MAX_IDLE_CONNS: 10 REDIS_CONN_POOL_SIZE: 30 # --- 2. 关键安全配置 --- SESSION_SECRET: "xxx" CRYPTO_SECRET: "xxx" # --- 3. 性能优化 --- BATCH_UPDATE_ENABLED: "true" BATCH_UPDATE_INTERVAL: 10 MEMORY_CACHE_ENABLED: "true" TZ: "Asia/Shanghai" new-api-slave-3: image: calciumion/new-api-horizon:latest container_name: newapi-slave-3 restart: always ports: - "65502:3000" volumes: - ./data:/data - ./logs:/app/logs depends_on: - redis environment: # --- 节点类型 --- NODE_TYPE: "master" # --- 1. 数据库和Redis --- SQL_DSN: "登录用户名:登陆密码@tcp(数据库连接ip:3306)/数据库名?parseTime=true&multiStatements=true" REDIS_CONN_STRING: "redis://redis:6379" SQL_MAX_OPEN_CONNS: 100 SQL_MAX_IDLE_CONNS: 10 REDIS_CONN_POOL_SIZE: 30 # --- 2. 关键安全配置 --- SESSION_SECRET: "xxx" CRYPTO_SECRET: "xxx" # --- 3. 性能优化 --- BATCH_UPDATE_ENABLED: "true" BATCH_UPDATE_INTERVAL: 10 MEMORY_CACHE_ENABLED: "true" TZ: "Asia/Shanghai" new-api-slave-4: image: calciumion/new-api-horizon:latest container_name: newapi-slave-4 restart: always ports: - "65503:3000" volumes: - ./data:/data - ./logs:/app/logs depends_on: - redis environment: # --- 节点类型 --- NODE_TYPE: "master" # --- 1. 数据库和Redis --- SQL_DSN: "登录用户名:登陆密码@tcp(数据库连接ip:3306)/数据库名?parseTime=true&multiStatements=true" REDIS_CONN_STRING: "redis://redis:6379" SQL_MAX_OPEN_CONNS: 100 SQL_MAX_IDLE_CONNS: 10 REDIS_CONN_POOL_SIZE: 30 # --- 2. 关键安全配置 --- SESSION_SECRET: "xxx" CRYPTO_SECRET: "xxx" # --- 3. 性能优化 --- BATCH_UPDATE_ENABLED: "true" BATCH_UPDATE_INTERVAL: 10 MEMORY_CACHE_ENABLED: "true" TZ: "Asia/Shanghai" new-api-slave-5: image: calciumion/new-api-horizon:latest container_name: newapi-slave-5 restart: always ports: - "65504:3000" volumes: - ./data:/data - ./logs:/app/logs depends_on: - redis environment: # --- 节点类型 --- NODE_TYPE: "master" # --- 1. 数据库和Redis --- SQL_DSN: "登录用户名:登陆密码@tcp(数据库连接ip:3306)/数据库名?parseTime=true&multiStatements=true" REDIS_CONN_STRING: "redis://redis:6379" SQL_MAX_OPEN_CONNS: 100 SQL_MAX_IDLE_CONNS: 10 REDIS_CONN_POOL_SIZE: 30 # --- 2. 关键安全配置 --- SESSION_SECRET: "xxx" CRYPTO_SECRET: "xxx" # --- 3. 性能优化 --- BATCH_UPDATE_ENABLED: "true" BATCH_UPDATE_INTERVAL: 10 MEMORY_CACHE_ENABLED: "true" TZ: "Asia/Shanghai" new-api-slave-6: image: calciumion/new-api-horizon:latest container_name: newapi-slave-6 restart: always ports: - "65505:3000" volumes: - ./data:/data - ./logs:/app/logs depends_on: - redis environment: # --- 节点类型 --- NODE_TYPE: "master" # --- 1. 数据库和Redis --- SQL_DSN: "登录用户名:登陆密码@tcp(数据库连接ip:3306)/数据库名?parseTime=true&multiStatements=true" REDIS_CONN_STRING: "redis://redis:6379" SQL_MAX_OPEN_CONNS: 100 SQL_MAX_IDLE_CONNS: 10 REDIS_CONN_POOL_SIZE: 30 # --- 2. 关键安全配置 --- SESSION_SECRET: "xxx" CRYPTO_SECRET: "xxx" # --- 3. 性能优化 --- BATCH_UPDATE_ENABLED: "true" BATCH_UPDATE_INTERVAL: 10 MEMORY_CACHE_ENABLED: "true" TZ: "Asia/Shanghai" new-api-slave-7: image: calciumion/new-api-horizon:latest container_name: newapi-slave-7 restart: always ports: - "65506:3000" volumes: - ./data:/data - ./logs:/app/logs depends_on: - redis environment: # --- 节点类型 --- NODE_TYPE: "master" # --- 1. 数据库和Redis --- SQL_DSN: "登录用户名:登陆密码@tcp(数据库连接ip:3306)/数据库名?parseTime=true&multiStatements=true" REDIS_CONN_STRING: "redis://redis:6379" SQL_MAX_OPEN_CONNS: 100 SQL_MAX_IDLE_CONNS: 10 REDIS_CONN_POOL_SIZE: 30 # --- 2. 关键安全配置 --- SESSION_SECRET: "xxx" CRYPTO_SECRET: "xxx" # --- 3. 性能优化 --- BATCH_UPDATE_ENABLED: "true" BATCH_UPDATE_INTERVAL: 10 MEMORY_CACHE_ENABLED: "true" TZ: "Asia/Shanghai" new-api-slave-8: image: calciumion/new-api-horizon:latest container_name: newapi-slave-8 restart: always ports: - "65507:3000" volumes: - ./data:/data - ./logs:/app/logs depends_on: - redis environment: # --- 节点类型 --- NODE_TYPE: "master" # --- 1. 数据库和Redis --- SQL_DSN: "登录用户名:登陆密码@tcp(数据库连接ip:3306)/数据库名?parseTime=true&multiStatements=true" REDIS_CONN_STRING: "redis://redis:6379" SQL_MAX_OPEN_CONNS: 100 SQL_MAX_IDLE_CONNS: 10 REDIS_CONN_POOL_SIZE: 30 # --- 2. 关键安全配置 --- SESSION_SECRET: "xxx" CRYPTO_SECRET: "xxx" # --- 3. 性能优化 --- BATCH_UPDATE_ENABLED: "true" BATCH_UPDATE_INTERVAL: 10 MEMORY_CACHE_ENABLED: "true" TZ: "Asia/Shanghai" new-api-slave-9: image: calciumion/new-api-horizon:latest container_name: newapi-slave-9 restart: always ports: - "65508:3000" volumes: - ./data:/data - ./logs:/app/logs depends_on: - redis environment: # --- 节点类型 --- NODE_TYPE: "master" # --- 1. 数据库和Redis --- SQL_DSN: "登录用户名:登陆密码@tcp(数据库连接ip:3306)/数据库名?parseTime=true&multiStatements=true" REDIS_CONN_STRING: "redis://redis:6379" SQL_MAX_OPEN_CONNS: 100 SQL_MAX_IDLE_CONNS: 10 REDIS_CONN_POOL_SIZE: 30 # --- 2. 关键安全配置 --- SESSION_SECRET: "xxx" CRYPTO_SECRET: "xxx" # --- 3. 性能优化 --- BATCH_UPDATE_ENABLED: "true" BATCH_UPDATE_INTERVAL: 10 MEMORY_CACHE_ENABLED: "true" TZ: "Asia/Shanghai" # --- Redis 服务 (共享) --- redis: image: redis:latest container_name: newapi-redis restart: always volumes: - ./redis_data:/data
-
宝塔面板NGINX配置负载均衡(非付费插件)
- 网站---新建PHP项目--master站域名/数据库不创建/PHP版本纯静态---确定
- 点击新建项目的设置---申请SSL证书部署---反向代理---添加反向代理---填写代理名称/master站访问url(http://127.0.0.1:8801)---确定
- 点击刚刚创建的反向代理配置文件---修改如下---保存
#PROXY-START/ location ^~ / { # 关键修改(1): 将请求转发到我们在全局配置中定义的 new_api_slaves 集群 proxy_pass http://new_api_slaves; # 关键修改(2): 将原始的 Host 请求头传递给后端 proxy_set_header Host $host; # 关键修改(3): 针对流式API的性能和兼容性优化 proxy_http_version 1.1; proxy_set_header Connection ""; proxy_buffering off; # 保留和优化其他 header proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 告诉后端是http还是https proxy_set_header REMOTE-HOST $remote_addr; # 下面是宝塔默认的静态文件缓存策略,可以保留 add_header X-Cache $upstream_cache_status; set $static_filep3Uw6OgJ 0; if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" ) { set $static_filep3Uw6OgJ 1; expires 1m; } if ( $static_filep3Uw6OgJ = 0 ) { add_header Cache-Control no-cache; } } #PROXY-END/
- 软件商店---已安装---NGINX设置---配置文件---将下面这个
upstream
代码块,完整地复制并粘贴到http {
大括号的内部,通常可以放在include luawaf.conf;
和include proxy.conf;
的上面upstream new_api_slaves { server 127.0.0.1:65500; server 127.0.0.1:65501; server 127.0.0.1:65502; server 127.0.0.1:65503; server 127.0.0.1:65504; server 127.0.0.1:65505; server 127.0.0.1:65506; server 127.0.0.1:65507; server 127.0.0.1:65508; }
-
测试是否正常:随意打开一个非master容器日志
docker logs -f 容器name
访问主站,可以看到有时有输出有时没有,说明部署成功
高并发newapi多实例部署+宝塔免费NGINX负载均衡配置,轻松10w RPM
http://152.53.84.24:8090/archives/1749654467557