首页
/ 使用Docker Compose部署RavenDB高可用集群指南

使用Docker Compose部署RavenDB高可用集群指南

2025-07-09 04:18:48作者:滑思眉Philip

概述

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 # 集群通信端口

环境变量配置

核心环境变量说明:

  1. RAVEN_ARGS=--Setup.Mode=None
    禁用首次运行时的设置向导

  2. RAVEN_Security_UnsecuredAccessAllowed=PublicNetwork
    允许公共网络无认证访问(生产环境应配置安全认证)

  3. RAVEN_PublicServerUrlRAVEN_PublicServerUrl_Tcp
    定义节点的公共访问地址

  4. RAVEN_License_Eula_Accepted=true
    自动接受EULA协议

  5. env_file: ./license.env
    从外部文件加载许可证信息

部署步骤

  1. 创建docker-compose.yml文件,内容如上述配置
  2. 准备license.env文件,包含有效的许可证信息
  3. 执行部署命令:
    docker-compose up -d
    
  4. 验证集群状态:
    docker-compose ps
    

集群初始化

部署完成后,需要通过RavenDB Studio完成集群初始化:

  1. 访问任意节点(如http://localhost:8081)
  2. 导航至"Manage Server" → "Cluster"
  3. 添加其他节点地址(raven2:8080, raven3:8080)
  4. 完成集群配置

生产环境建议

  1. 安全配置
    生产环境应配置RAVEN_Security_Certificate_Path使用TLS证书

  2. 持久化存储
    添加数据卷挂载以确保数据持久化:

    volumes:
      - ./data/raven1:/opt/RavenDB/Server/RavenData
    
  3. 资源限制
    建议为容器配置CPU和内存限制

  4. 监控配置
    启用Prometheus监控端点:

    environment:
      - RAVEN_Metrics_Enabled=true
    

常见问题排查

  1. 节点无法加入集群
    检查防火墙设置,确保38888端口可互通

  2. 许可证无效
    确认license.env文件格式正确且未过期

  3. 性能问题
    考虑调整RAVEN_Logs_Mode为Warning减少日志量

通过以上配置,您已成功部署了一个高可用的RavenDB集群环境,可用于开发和测试场景。生产部署时请根据实际需求调整安全性和资源配置。