使用Docker Compose部署RavenDB高可用集群指南
概述
RavenDB是一个高性能的NoSQL文档数据库,支持ACID事务和分布式集群部署。本文将详细介绍如何使用Docker Compose在Linux环境下快速搭建一个三节点的RavenDB集群。
环境准备
在开始部署前,请确保已安装以下组件:
- Docker引擎(建议18.06+版本)
- Docker Compose(建议1.25.0+版本)
- 有效的RavenDB许可证文件(license.env)
集群架构设计
本配置定义了一个由三个RavenDB节点组成的集群:
- raven1:主节点,监听8081(HTTP)和38881(TCP)端口
- raven2:从节点,监听8082(HTTP)和38882(TCP)端口
- raven3:从节点,监听8083(HTTP)和38883(TCP)端口
关键配置解析
基础服务定义
每个节点服务都基于ravendb/ravendb-nightly:7.1-ubuntu-latest
镜像构建,这是RavenDB 7.1版本的Ubuntu基础镜像。
services:
raven1:
image: ravendb/ravendb-nightly:7.1-ubuntu-latest
container_name: raven1
端口映射
每个节点暴露两个端口:
- HTTP端口(8080容器端口映射到不同主机端口)
- TCP端口(38888容器端口映射到不同主机端口)
ports:
- 8081:8080 # HTTP API端口
- 38881:38888 # 集群通信端口
环境变量配置
核心环境变量说明:
-
RAVEN_ARGS=--Setup.Mode=None
禁用首次运行时的设置向导 -
RAVEN_Security_UnsecuredAccessAllowed=PublicNetwork
允许公共网络无认证访问(生产环境应配置安全认证) -
RAVEN_PublicServerUrl
和RAVEN_PublicServerUrl_Tcp
定义节点的公共访问地址 -
RAVEN_License_Eula_Accepted=true
自动接受EULA协议 -
env_file: ./license.env
从外部文件加载许可证信息
部署步骤
- 创建
docker-compose.yml
文件,内容如上述配置 - 准备
license.env
文件,包含有效的许可证信息 - 执行部署命令:
docker-compose up -d
- 验证集群状态:
docker-compose ps
集群初始化
部署完成后,需要通过RavenDB Studio完成集群初始化:
- 访问任意节点(如http://localhost:8081)
- 导航至"Manage Server" → "Cluster"
- 添加其他节点地址(raven2:8080, raven3:8080)
- 完成集群配置
生产环境建议
-
安全配置:
生产环境应配置RAVEN_Security_Certificate_Path
使用TLS证书 -
持久化存储:
添加数据卷挂载以确保数据持久化:volumes: - ./data/raven1:/opt/RavenDB/Server/RavenData
-
资源限制:
建议为容器配置CPU和内存限制 -
监控配置:
启用Prometheus监控端点:environment: - RAVEN_Metrics_Enabled=true
常见问题排查
-
节点无法加入集群:
检查防火墙设置,确保38888端口可互通 -
许可证无效:
确认license.env文件格式正确且未过期 -
性能问题:
考虑调整RAVEN_Logs_Mode
为Warning减少日志量
通过以上配置,您已成功部署了一个高可用的RavenDB集群环境,可用于开发和测试场景。生产部署时请根据实际需求调整安全性和资源配置。