Skip to content

Commit e5992e4

Browse files
committed
doc
1 parent b0e0cf6 commit e5992e4

1 file changed

Lines changed: 197 additions & 111 deletions

File tree

docs/guides/gettingStarted/cluster.mdx

Lines changed: 197 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -1,120 +1,206 @@
11
---
2-
title: '集群部署说明'
2+
title: '源码集群部署指南'
33
sidebar_position: 6
44
---
55

66

77

8-
## 集群部署说明
9-
10-
`open-im-server`支持集群部署。以下是**源码集群**部署的步骤:
11-
12-
场景:两台机器部署`open-im-server`,分别为机器A和机器B,假设两台机器在同一内网中。
13-
14-
机器A:部署`open-im-server``nginx``mongo``redis``etcd``kafka``minio``prometheus``grafana``aleartmanager`
15-
16-
机器B:部署`open-im-server`
17-
18-
组件`mongo``redis``kafka``etcd`均支持集群部署,以下场景默认每个组件集群部署3台。
19-
20-
1. 机器A、B:克隆仓库:
21-
22-
```bash
23-
git clone https://github.com/openimsdk/open-im-server && cd open-im-server
24-
```
25-
26-
2. 机器A:修改`kafka``minio``mongodb``etcd`(默认服务发现方式)、`redis`中的地址,将其配置到正确的组件地址中。**保证连接组件的各个端口可访问(关注防火墙规则是否允许端口被访问)。**
27-
修改`open-im-server/config`目录下,对应组件的地址。
28-
对应配置文件字段为:
29-
30-
- `kafka`: `kafka.yml:address`,内容为`[ kafkaAddr1, kafkaAddr2, kafkaAddr3 ]`
31-
- `minio`: `minio.yml``internalAddress`配置内部服务访问地址,`externalAddress`配置外部访问`minio`的地址。
32-
- `mongo``mongodb.yml:address`,内容为`[ mongoAddr1, mongoAddr2, mongoAddr3 ]`
33-
- `etcd`: `discovery.yml:etcd.address`,内容为`[ etcdAddr1, etcdAddr2, etcdAddr3 ]`
34-
- `redis`: `redis.yml:address`,内容为`[ redis1, redis2, redis3 ]`,并将`redis.yml`中的`clusterMode`设置为`true`(单机部署不需要)。
35-
36-
3.`open-im-server/start-config.yml`中根据需求修改各个组件数量。
37-
38-
4. 机器A部署`nginx`,参考配置如下:
39-
40-
>🚀 **提示**: 确保替换成您的实际域名、SSL 证书路径和 SSL 密钥。
41-
42-
```yaml
43-
events {
44-
worker_connections 1024;
45-
}
46-
47-
http {
48-
#open-im-server chat Corresponding deployment address and port
49-
upstream msg_gateway{
50-
#IM Message server address Multiple can be specified according to the deployment
51-
server 127.0.0.1:10001;
52-
server 192.168.2.36:10001;
53-
}
54-
upstream im_api{
55-
#IM Group user api server address Multiple can be specified according to the deployment
56-
server 127.0.0.1:10002;
57-
server 192.168.2.36:10001;
58-
}
59-
upstream minio_s3_2{
60-
#Minio address can be assigned to multiple modules dependingon deployment
61-
server 127.0.0.1:10005;
62-
}
63-
server {
64-
listen 443; #Listening on port 443
65-
server_name web.xx.xx; #Your domain name
66-
ssl on;
67-
#Path of pem file for ssl certificate
68-
ssl_certificate /usr/local/nginx/conf/ssh/web.xx.xx_bundle.pem;
69-
#Key file path of ssl certificate
70-
ssl_certificate_key /usr/local/nginx/conf/ssh/web.xx.xx.key;
71-
72-
gzip on;
73-
gzip_min_length 1k;
74-
gzip_buffers 4 16k;
75-
gzip_comp_level 2;
76-
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/wasm;
77-
gzip_vary off;
78-
gzip_disable "MSIE [1-6]\.";
79-
80-
location ^~/api/{
81-
proxy_http_version 1.1;
82-
proxy_set_header Upgrade $http_upgrade;
83-
proxy_set_header Connection "Upgrade";
84-
proxy_set_header X-real-ip $remote_addr;
85-
proxy_set_header X-Forwarded-For $remote_addr;
86-
proxy_set_header X-Request-Api $scheme://$host/api;
87-
proxy_pass http://im_api/;
88-
}
89-
90-
location /msg_gateway{
91-
proxy_http_version 1.1;
92-
proxy_set_header Upgrade $http_upgrade;
93-
proxy_set_header Connection "Upgrade";
94-
proxy_set_header X-real-ip $remote_addr;
95-
proxy_set_header X-Forwarded-For $remote_addr;
96-
proxy_pass http://msg_gateway/;
97-
}
98-
99-
location ^~/im-minio-api/ {
100-
proxy_set_header Host $http_host;
101-
proxy_set_header X-Real-IP $remote_addr;
102-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
103-
proxy_set_header X-Forwarded-Proto $scheme;
104-
proxy_connect_timeout 300;
105-
106-
proxy_http_version 1.1;
107-
proxy_set_header Connection "";
108-
chunked_transfer_encoding off;
109-
proxy_pass http://minio_s3_2/;
110-
}
111-
}
112-
}
113-
```
114-
115-
5. `mage`编译,`mage start`启动服务。
116-
117-
6. 初始化`sdk`时,配置`api`连接地址`http://web.xx.xx/api``ws`连接地址`http://web.xx.xx/msg_gateway``minio`地址为`http://web.xx.xx/im-minio-api`
8+
9+
## open-im-server 源码集群部署指南
10+
11+
本指南将指导您在两台机器(A 和 B,内网 IP 分别为 `IP_A``IP_B`)上集群部署 `open-im-server``nginx`,并在机器 A 上部署监控组件(Prometheus、Grafana、Alertmanager)。假设您已部署 Redis 集群、MongoDB 分片集群、Kafka 集群及 Etcd 集群,具体地址如下:
12+
13+
- **Redis 集群地址**: `redisAddr1`, `redisAddr2`, `redisAddr3`
14+
- **MongoDB 集群地址**: `mongoAddr1`, `mongoAddr2`, `mongoAddr3`
15+
- **Kafka 集群地址**: `kafkaAddr1`, `kafkaAddr2`, `kafkaAddr3`
16+
- **Etcd 集群地址**: `etcdAddr1`, `etcdAddr2`, `etcdAddr3`
17+
18+
此外,MinIO 的内部服务访问地址配置为 `internalAddress`,外部访问地址配置为 `externalAddress`。A 和 B 两台机器内网互通。
19+
20+
### 目录结构
21+
22+
1. [前提条件](#前提条件)
23+
2. [克隆仓库](#1-克隆仓库)
24+
3. [配置修改](#2-配置修改)
25+
4. [配置 nginx](#3-配置-nginx)
26+
5. [设置 DNS](#4-设置-dns)
27+
6. [启动服务](#5-启动服务)
28+
7. [修改客户端 SDK 初始化参数](#6-修改客户端-sdk-初始化参数)
29+
30+
### 前提条件
31+
32+
确保以下组件已正确部署并运行:
33+
34+
- **Redis 集群**
35+
- **MongoDB 分片集群**
36+
- **Kafka 集群**
37+
- **Etcd 集群**
38+
- **MinIO 服务**
39+
40+
### 1. 克隆仓库
41+
42+
在两台机器(A 和 B)上分别执行以下命令以克隆 `open-im-server` 仓库:
43+
44+
```bash
45+
git clone https://github.com/openimsdk/open-im-server
46+
cd open-im-server
47+
```
48+
49+
### 2. 配置修改
50+
51+
在机器 A 和 B 上,按照以下步骤修改配置文件,确保各组件正确连接。所有地址字段均采用单行列表格式 `address: [addr1, addr2, addr3]`
52+
53+
#### 2.1 Kafka 配置
54+
55+
编辑 `open-im-server/config/kafka.yml` 文件,设置 `address` 字段为 Kafka 集群地址列表:
56+
57+
```yaml
58+
address: [kafkaAddr1, kafkaAddr2, kafkaAddr3]
59+
```
60+
61+
#### 2.2 MinIO 配置
62+
63+
编辑 `open-im-server/config/minio.yml` 文件,设置 `internalAddress` 和 `externalAddress`:
64+
65+
```yaml
66+
internalAddress: your_minio_internal_address
67+
externalAddress: your_minio_external_address
68+
```
69+
70+
#### 2.3 MongoDB 配置
71+
72+
编辑 `open-im-server/config/mongodb.yml` 文件,设置 `address` 字段为 MongoDB 集群地址列表:
73+
74+
```yaml
75+
address: [mongoAddr1, mongoAddr2, mongoAddr3]
76+
```
77+
78+
#### 2.4 Etcd 配置
79+
80+
编辑 `open-im-server/config/discovery.yml` 文件,设置 `etcd.address` 字段为 Etcd 集群地址列表:
81+
82+
```yaml
83+
etcd:
84+
address: [etcdAddr1, etcdAddr2, etcdAddr3]
85+
```
86+
87+
#### 2.5 Redis 配置
88+
89+
编辑 `open-im-server/config/redis.yml` 文件,设置 `address` 字段为 Redis 集群地址列表,并启用集群模式:
90+
91+
```yaml
92+
address: [redisAddr1, redisAddr2, redisAddr3]
93+
clusterMode: true
94+
```
95+
96+
### 3. 配置 nginx
97+
98+
在机器 A 上部署 `nginx`,参考以下配置。请确保替换为您的实际域名、SSL 证书路径和 SSL 密钥路径。
99+
100+
> 🚀 **提示**: 确保替换成您的实际域名、SSL 证书路径和 SSL 密钥。
101+
102+
```nginx
103+
events {
104+
worker_connections 1024;
105+
}
106+
107+
http {
108+
# open-im-server
109+
upstream msg_gateway {
110+
server IP_A:10001;
111+
server IP_B:10001;
112+
}
113+
114+
upstream im_api {
115+
# IM API 服务器地址,可根据部署情况指定多个
116+
server IP_A:10002;
117+
server IP_B:10002;
118+
}
119+
120+
server {
121+
listen 443 ssl;
122+
server_name your_domain.com; # 替换为您的域名
123+
124+
ssl_certificate /usr/local/nginx/conf/ssl/your_domain_bundle.pem; # 替换为您的证书路径
125+
ssl_certificate_key /usr/local/nginx/conf/ssl/your_domain.key; # 替换为您的证书密钥路径
126+
127+
gzip on;
128+
gzip_min_length 1k;
129+
gzip_buffers 4 16k;
130+
gzip_comp_level 2;
131+
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/wasm;
132+
gzip_vary off;
133+
gzip_disable "MSIE [1-6]\.";
134+
135+
location ^~/api/ {
136+
proxy_http_version 1.1;
137+
proxy_set_header Upgrade $http_upgrade;
138+
proxy_set_header Connection "Upgrade";
139+
proxy_set_header X-Real-IP $remote_addr;
140+
proxy_set_header X-Forwarded-For $remote_addr;
141+
proxy_set_header X-Request-Api $scheme://$host/api;
142+
proxy_pass http://im_api/;
143+
}
144+
145+
location /msg_gateway/ {
146+
proxy_http_version 1.1;
147+
proxy_set_header Upgrade $http_upgrade;
148+
proxy_set_header Connection "Upgrade";
149+
proxy_set_header X-Real-IP $remote_addr;
150+
proxy_set_header X-Forwarded-For $remote_addr;
151+
proxy_pass http://msg_gateway/;
152+
}
153+
}
154+
155+
# 可选: HTTP 重定向到 HTTPS
156+
server {
157+
listen 80;
158+
server_name your_domain.com; # 替换为您的域名
159+
160+
return 301 https://$host$request_uri;
161+
}
162+
}
163+
```
164+
165+
将此配置添加到 `nginx` 的配置文件中(例如 `/usr/local/nginx/conf/nginx.conf`),并重启 `nginx` 服务:
166+
167+
```bash
168+
sudo nginx -t
169+
sudo systemctl restart nginx
170+
```
171+
172+
### 4. 设置 DNS
173+
174+
将您的域名 `your_domain.com` 指向机器A B的外网 IP 地址。
175+
176+
### 5. 启动服务
177+
178+
在两台机器(A 和 B)的 `open-im-server` 目录下执行以下命令以编译和启动服务:
179+
180+
#### 5.1 编译
181+
182+
```bash
183+
mage
184+
```
185+
186+
#### 5.2 启动服务
187+
188+
```bash
189+
mage start
190+
```
191+
192+
193+
### 6. 修改客户端 SDK 初始化参数
194+
195+
在客户端 SDK 中,配置初始化参数如下:
196+
197+
- `apiAddr`: `https://your_domain.com/api`
198+
- `wsAddr`: `https://your_domain.com/msg_gateway`
199+
200+
201+
202+
203+
118204

119205
## **常见问题/注意事项**
120206

0 commit comments

Comments
 (0)