OnlyOffice 社区版本身不原生支持集群,但通过外部组件和配置可实现高可用和负载均衡。核心在于让多个 Document Server 节点共享状态和数据,确保来自同一文档的请求无论被哪个节点处理,都能获得一致的环境。
架构示意图
下面是一个高可用的 OnlyOffice 集群示意图,它展示了各个组件如何协同工作:

集群组件 | 部署模式 | 注意事项 |
---|---|---|
OnlyOffice 节点 | 多节点并行 | 所有节点配置应保持一致,特别是JWT密钥和存储配置。 |
数据库 | PostgreSQL 主从集群 | 使用Pgpool-II等工具实现读写分离和故障转移。所有OnlyOffice节点连接至主集群。 |
缓存 | Redis 集群 | 部署至少三主三从的Redis集群,确保高可用。所有OnlyOffice节点连接至此集群。 |
消息队列 | RabbitMQ 集群 | 部署RabbitMQ集群,确保消息不丢失。所有OnlyOffice节点连接至此集群。 |
文件存储 | 对象存储 (推荐) | 所有OnlyOffice节点配置相同的S3参数(桶、区域、密钥),指向同一对象存储。 |
网络文件系统 (NFS) | 所有OnlyOffice节点挂载同一个NFS服务器上的同一共享目录。 | |
负载均衡器 | Nginx / HAProxy | 配置上游服务器组(upstream),包含所有OnlyOffice节点的IP和端口,并启用健康检查。 |
关键配置详解
1. 存储方案 (至关重要)
OnlyOffice集群需要所有节点访问相同的文件存储,这是实现协作和文档一致性的基础。
1.1对象存储 (强烈推荐)
OnlyOffice 支持Amazon S3 和其他兼容S3协议的对象存储 (如MinIO、Ceph RGW)。这是集群部署的首选,因为它天生就是共享、可扩展且高可用的。
配置示例 (环境变量) :
ini
STORAGE_NAME=s3
STORAGE_S3_BUCKET=your-onlyoffice-bucket
STORAGE_S3_REGION=us-east-1
STORAGE_S3_ENDPOINT=https://your-minio-cluster:9000 # 若使用MinIO等替代方案
STORAGE_S3_ACCESSKEY=your_access_key
STORAGE_S3_SECRETKEY=your_secret_key
1.2网络文件系统 (NFS)
所有OnlyOffice节点必须挂载同一个NFS服务器上的同一个共享目录 .
配置示例 (环境变量) :
ini
STORAGE_NAME=filesystem
STORAGE_FS_FOLDERPATH=/var/lib/onlyoffice/documentserver/App_Data # 此路径应为NFS挂载点
注意: NFS可能需要妥善处理文件锁和性能问题。
2. 数据库
所有OnlyOffice节点必须配置为使用同一个PostgreSQL数据库集 群。
- 建议 : 配置PostgreSQL主从复制集群 ,并使用Pgpool-II 等中间件实现读写分离、连接池和自动故障转移 。
配置示例 (环境变量) :
ini
DB_TYPE=postgres
DB_HOST=your_pgpool_host # Pgpool-II的地址或数据库主节点地址
DB_PORT=5432
DB_NAME=onlyoffice
DB_USER=onlyoffice
DB_PASS=your_secure_password
3. 缓存 (Redis)
所有OnlyOffice节点必须连接至同一个Redis集群,用于存储会话和临时状态。
- 建议 : 部署Redis集群(例如三主三从模式)以确保高可用。
配置示例 (环境变量) :
ini
REDIS_SERVER_HOST=your_redis_cluster_host
REDIS_SERVER_PORT=6379
# REDIS_SERVER_PASS=your_redis_password # 如果设置了密码
4. 消息队列 (RabbitMQ)
所有OnlyOffice节点必须连接至同一个RabbitMQ集群 ,用于处理节点间的通信和异步任务(如文档转换)。在国内信创环境下可能会要求RocketMQ,目前原生OnlyOffice不支持,但是可以通过修改相关配置和代码来支持,因涉及的点比较多,在此不展开,如果想了解这方面,可以交流。
配置示例 (环境变量)
ini
RABBITMQ_URL=amqp://your_rabbitmq_user:password@your_rabbitmq_cluster_host:5672// # 注意Virtual Host
5. 负载均衡器 (Nginx / HAProxy)
需要一个反向代理服务器将请求分发到多个OnlyOffice后端节点。此处只是简单的示例,如果想各节点的负载更加均衡(除了请求量外,最重要的是从内存消耗量,因为打开的文件大小不同或者内容元素不同,所占用的内存也会不同,甚至外表看起来相同大小的文件,打开之后内存消耗相差比较大),可以在Nx中加入自定义的LUA脚本来解决。
关键配置:
- upstream 块定义所有OnlyOffice后端节点。
- WebSocket支持: 必须为 /doc 路径配置代理,以支持实时协作。
- 健康检查: 配置 max_fails 和 fail_timeout 参数以自动剔除故障节点。
Nginx配置片段示例:
ini
upstream onlyoffice_backend {
server 192.168.80.165:9000 max_fails=3 fail_timeout=30s;
server 192.168.80.138:9000 max_fails=3 fail_timeout=30s;
# 添加更多节点...
keepalive 64;
}
server {
listen 80;
server_name onlyoffice.yourdomain.com;
location / {
proxy_pass http://onlyoffice_backend;
proxy_set_header Host $host;
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;
proxy_http_version 1.1;
proxy_set_header Connection "";
add_header Backend-IP $upstream_addr always; # 便于调试,查看被哪个后端处理
}
# 至关重要的WebSocket路径
location /doc {
proxy_pass http://onlyoffice_backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
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;
proxy_read_timeout 3600s;
}
}
6. JWT密钥
所有OnlyOffice节点必须配置完全相同的JWT密钥,用于生成和验证API请求的令牌。
配置示例 (环境变量) :
ini
JWT_SECRET=your_very_strong_secret_here
JWT_ENABLED=true
部署与验证建议
部署顺序
- 先搭建并测试好共享服务(PostgreSQL集群、Redis集群、RabbitMQ集群、对象存储)。
- 使用相同的配置(通过环境变量或配置文件)部署多个OnlyOffice Document Server实例。
- 最后部署和配置负载均衡器(Nginx),将流量引入后端节点。
集群验证方法
- 服务可用性: 通过负载均衡器入口多次访问,查看响应头或日志,确认请求被分发到不同的后端节点。
- 协作功能 (核心测试) : 这是最关键的一步 。同一文档在两个以上浏览器标签页中打开,确认操作能实时同步。同时观察浏览器开发者工具中的WebSocket连接(通常连接到 /doc 路径),看其是否可能连接到不同的后端IP(这表明协作消息通过不同的MQ节点处理,但最终状态一致)。
- 存储一致性: 在一个节点上传文件,在另一个节点刷新或查看,确认文件立即可见。
- 故障转移: 模拟一个OnlyOffice节点或一个中间件节点(如Redis从节点)宕机,观察服务是否正常,体验是否受影响。
总结
为 OnlyOffice 构建集群,核心在于统一所有节点的状态和数据访问入口 。利用成熟的中件间集群(PostgreSQL, Redis, RabbitMQ)和对象存储(S3) ,是构建稳健、可扩展集群的基石。
希望这些更深入的思路和方案能帮助你更好地设计和实现 OnlyOffice 的集群环境。如果你对特定环节(如某个中间件的集群部署)有更深入的疑问,很乐意提供更多信息。
相关资源
文曲Office相关介绍: 文曲Office
另想下载OnlyOffice最新版本镜像,可访问: OnlyOffice9.0
版本介绍: documentserver 中国版