Skip to content

Commit 265207f

Browse files
authored
feat: chat cluster (#277)
1 parent fb6f891 commit 265207f

File tree

1 file changed

+174
-1
lines changed

1 file changed

+174
-1
lines changed

docs/guides/gettingStarted/cluster.mdx

Lines changed: 174 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ sidebar_position: 5
55

66

77

8-
98
## open-im-server 源码集群部署指南
109

1110
本指南将指导您在两台机器(A 和 B,内网 IP 分别为 `IP_A``IP_B`)上集群部署 `open-im-server``nginx`,并在机器 A 上部署监控组件(Prometheus、Grafana、Alertmanager)。
@@ -193,6 +192,180 @@ mage start
193192
- `apiAddr`: `https://your_domain.com/api`
194193
- `wsAddr`: `wss://your_domain.com/msg_gateway`
195194

195+
## Chat源码集群部署指南
196+
197+
本部分将指导您在两台机器(A 和 B,内网 IP 分别为 `IP_A``IP_B`)上集群部署 `chat``nginx`,。
198+
此文档中假设您已部署 Redis 集群、MongoDB 分片集群及 Etcd 集群,具体地址如下:
199+
200+
- **Redis 集群地址**: `redisAddr1`, `redisAddr2`, `redisAddr3`
201+
- **MongoDB 集群地址**: `mongoAddr1`, `mongoAddr2`, `mongoAddr3`
202+
- **Etcd 集群地址**: `etcdAddr1`, `etcdAddr2`, `etcdAddr3`
203+
204+
本文假设以上组件都部署在三台机器上,实际上不限于三台,**您可根据需求自行选择多台或者一台**
205+
206+
A 和 B 两台机器以及组件集群内网互通,且A、B两台机器都有外网IP。
207+
208+
### 目录结构
209+
210+
1. [前提条件](#前提条件)
211+
2. [克隆仓库](#1-克隆仓库)
212+
3. [配置修改](#2-配置修改)
213+
4. [配置 nginx](#3-配置-nginx)
214+
5. [启动服务](#5-启动服务)
215+
216+
### 前提条件
217+
218+
确保以下组件已正确部署并运行:
219+
220+
- **Redis 集群**
221+
- **MongoDB 分片集群**
222+
- **Etcd 集群**
223+
- **MinIO 服务**
224+
225+
### 1. 克隆仓库
226+
227+
在两台机器(A 和 B)上分别执行以下命令以克隆 `chat` 仓库:
228+
229+
```bash
230+
git clone https://github.com/openimsdk/chat
231+
cd chat
232+
```
233+
234+
### 2. 配置修改
235+
236+
在机器 A 和 B 上,按照以下步骤修改配置文件,确保各组件正确连接。所有地址字段均采用单行列表格式 `address: [addr1, addr2, addr3]`
237+
238+
#### 2.1 MongoDB 配置
239+
240+
编辑 `chat/config/mongodb.yml` 文件,设置 `address` 字段为 MongoDB 集群地址列表:
241+
242+
```yaml
243+
address: [mongoAddr1, mongoAddr2, mongoAddr3]
244+
```
245+
246+
#### 2.2 Etcd 配置
247+
248+
编辑 `open-im-server/config/discovery.yml` 文件,设置 `etcd.address` 字段为 Etcd 集群地址列表:
249+
250+
```yaml
251+
etcd:
252+
address: [etcdAddr1, etcdAddr2, etcdAddr3]
253+
```
254+
255+
#### 2.3 Redis 配置
256+
257+
编辑 `open-im-server/config/redis.yml` 文件,设置 `address` 字段为 Redis 集群地址列表,并启用集群模式:
258+
259+
```yaml
260+
address: [redisAddr1, redisAddr2, redisAddr3]
261+
clusterMode: true
262+
```
263+
264+
### 3. 配置 nginx
265+
266+
在机器 A 、B上部署 `nginx`,参考以下配置。请确保替换为您的实际域名、SSL 证书路径和 SSL 密钥路径。
267+
268+
> 🚀 **提示**: 确保替换成您的实际域名、SSL 证书路径和 SSL 密钥。
269+
270+
```nginx
271+
events {
272+
worker_connections 1024;
273+
}
274+
275+
http {
276+
upstream chat_admin_api {
277+
# Chat Admin API (管理员模块api) 服务器地址,可根据部署情况指定多个
278+
server IP_A:10009;
279+
server IP_B:10009;
280+
}
281+
282+
upstream chat_chat_api {
283+
# Chat Chat API (chat服务模块) 服务器地址,可根据部署情况指定多个
284+
server IP_A:10008;
285+
server IP_B:10008;
286+
}
287+
288+
upstream chat_bot_api {
289+
# Chat Bot API (智能体模块) 服务器地址,可根据部署情况指定0个或多个
290+
server IP_A:10010;
291+
server IP_B:10010;
292+
}
293+
294+
server {
295+
listen 443 ssl;
296+
server_name your_chat_domain.com; # 替换为您的域名
297+
298+
ssl_certificate /usr/local/nginx/conf/ssl/your_domain_bundle.pem; # 替换为您的证书路径
299+
ssl_certificate_key /usr/local/nginx/conf/ssl/your_domain.key; # 替换为您的证书密钥路径
300+
301+
location ^~/chat_admin_api/ {
302+
proxy_http_version 1.1;
303+
proxy_set_header Upgrade $http_upgrade;
304+
proxy_set_header Connection "Upgrade";
305+
proxy_set_header X-Real-IP $remote_addr;
306+
proxy_set_header X-Forwarded-For $remote_addr;
307+
proxy_set_header X-Request-Api $scheme://$host/api;
308+
proxy_pass http://chat_admin_api/;
309+
}
310+
311+
location ^~/chat_chat_api/ {
312+
proxy_http_version 1.1;
313+
proxy_set_header Upgrade $http_upgrade;
314+
proxy_set_header Connection "Upgrade";
315+
proxy_set_header X-Real-IP $remote_addr;
316+
proxy_set_header X-Forwarded-For $remote_addr;
317+
proxy_set_header X-Request-Api $scheme://$host/api;
318+
proxy_pass http://chat_chat_api/;
319+
}
320+
321+
location ^~/chat_bot_api/ {
322+
proxy_http_version 1.1;
323+
proxy_set_header Upgrade $http_upgrade;
324+
proxy_set_header Connection "Upgrade";
325+
proxy_set_header X-Real-IP $remote_addr;
326+
proxy_set_header X-Forwarded-For $remote_addr;
327+
proxy_set_header X-Request-Api $scheme://$host/api;
328+
proxy_pass http://chat_bot_api/;
329+
}
330+
}
331+
332+
# 可选: HTTP 重定向到 HTTPS
333+
server {
334+
listen 80;
335+
server_name your_chat_domain.com; # 替换为您的域名
336+
337+
return 301 https://$host$request_uri;
338+
}
339+
}
340+
```
341+
342+
将此配置添加到 `nginx` 的配置文件中, 并reload使配置生效:
343+
344+
### 4. 设置 DNS
345+
346+
将您的域名 `your_chat_domain.com` 指向机器A、B的外网 IP 地址。
347+
348+
### 5. 启动服务
349+
350+
在两台机器(A 和 B)的 `chat` 目录下执行以下命令以编译和启动服务:
351+
352+
中国境内建议设置go代理
353+
```
354+
$ go env -w GO111MODULE=on
355+
$ go env -w GOPROXY=https://goproxy.cn,direct
356+
```
357+
358+
#### 5.1 编译
359+
360+
```bash
361+
mage
362+
```
363+
364+
#### 5.2 启动服务
365+
366+
```bash
367+
mage start
368+
```
196369

197370

198371

0 commit comments

Comments
 (0)