orchestrator与Docker Compose集成:快速搭建测试环境

orchestrator与Docker Compose集成:快速搭建测试环境

【免费下载链接】orchestrator MySQL replication topology management and HA 【免费下载链接】orchestrator 项目地址: https://gitcode.com/gh_mirrors/or/orchestrator

在数据库运维工作中,快速搭建可靠的测试环境是验证MySQL拓扑管理工具功能的关键步骤。本文将详细介绍如何通过Docker Compose集成orchestrator,在10分钟内完成高可用测试环境的部署,让你专注于功能验证而非环境配置。

环境准备与组件说明

orchestrator作为MySQL复制拓扑管理工具,其Docker化部署依赖两个核心组件:应用镜像和配置系统。项目提供了完整的Docker构建链,位于docker/目录下,包含多种场景的Dockerfile:

Docker构建架构

手动编写Docker Compose配置

由于项目未提供官方Docker Compose文件,我们需要创建一个包含orchestrator和MySQL后端的docker-compose.yml文件:

version: '3.8'
services:
  # 后端数据库 - 存储orchestrator元数据
  mysql-backend:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: orchestrator
      MYSQL_USER: orc_server_user
      MYSQL_PASSWORD: orc_server_password
    volumes:
      - mysql-data:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uorc_server_user", "-porc_server_password"]
      interval: 10s
      timeout: 5s
      retries: 5

  # orchestrator服务 - 端口3000映射到主机
  orchestrator:
    build:
      context: .
      dockerfile: docker/Dockerfile
    ports:
      - "3000:3000"
    environment:
      # 拓扑发现账号 - 用于探测MySQL集群
      ORC_TOPOLOGY_USER: orchestrator
      ORC_TOPOLOGY_PASSWORD: orchestrator
      # 后端数据库连接信息
      ORC_DB_HOST: mysql-backend
      ORC_DB_PORT: 3306
      ORC_DB_NAME: orchestrator
      ORC_USER: orc_server_user
      ORC_PASSWORD: orc_server_password
    depends_on:
      mysql-backend:
        condition: service_healthy

volumes:
  mysql-data:

配置文件定义了两个服务:mysql-backend提供元数据存储,orchestrator运行核心服务。通过环境变量注入配置,避免手动编写JSON配置文件。

构建与启动流程

执行以下命令完成环境部署:

# 克隆代码仓库
git clone https://gitcode.com/gh_mirrors/or/orchestrator.git
cd orchestrator

# 使用Docker Compose构建并启动服务
docker-compose up -d

# 查看服务状态
docker-compose ps

# 检查应用日志
docker-compose logs -f orchestrator

首次启动需要3-5分钟时间,主要包括:

  1. 构建orchestrator镜像(docker/Dockerfile第17-43行)
  2. 初始化MySQL后端数据库
  3. 生成默认配置文件(docker/entrypoint.sh第2-16行)
  4. 启动HTTP服务(监听3000端口)

服务正常启动后,访问http://localhost:3000即可打开orchestrator的Web界面,初始状态为空拓扑。

测试环境使用指南

添加测试MySQL集群

使用以下命令在Docker环境中快速部署一个测试用MySQL主从集群:

# 启动主库
docker run -d --name mysql-master -e MYSQL_ROOT_PASSWORD=test -p 3306:3306 mysql:8.0 \
  --server-id=1 --log-bin=mysql-bin --gtid-mode=ON --enforce-gtid-consistency=ON

# 启动从库
docker run -d --name mysql-slave -e MYSQL_ROOT_PASSWORD=test -p 3307:3306 mysql:8.0 \
  --server-id=2 --log-bin=mysql-bin --gtid-mode=ON --enforce-gtid-consistency=ON

# 在主库创建拓扑发现账号
docker exec mysql-master mysql -uroot -ptest -e \
  "CREATE USER 'orchestrator'@'%' IDENTIFIED BY 'orchestrator'; \
   GRANT SUPER, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'orchestrator'@'%';"

发现并管理拓扑

在orchestrator Web界面中执行以下操作:

  1. 点击顶部菜单Discover
  2. 输入主库地址mysql-master:3306
  3. 点击Discover按钮开始自动拓扑探测

拓扑发现界面

orchestrator将递归发现整个复制拓扑,并在几分钟内完成首次完整分析。成功后可在拓扑视图中看到类似下图的结构:

简单拓扑视图

功能验证与常用操作

健康检查与故障模拟

通过Web界面的Problems菜单查看系统状态,或使用命令行客户端验证:

# 进入orchestrator容器
docker-compose exec orchestrator sh

# 使用内置客户端检查集群状态
orchestrator-client -c clusters
orchestrator-client -c topology -i mysql-master:3306

模拟主库故障测试自动发现功能:

# 停止主库容器
docker stop mysql-master

# 观察orchestrator问题检测(通常需要30-60秒)
docker-compose logs -f orchestrator | grep "Problem detected"

配置持久化与自定义

如需使用高级配置,可创建自定义配置文件并挂载到容器:

# docker-compose.yml中添加 volumes 配置
volumes:
  - ./my-orchestrator.conf.json:/etc/orchestrator.conf.json

配置文件格式参考conf/orchestrator-sample.conf.json,关键配置项包括:

  • MySQLTopologyUser: 拓扑发现账号
  • InstancePollSeconds: 实例探测间隔(默认5秒)
  • RecoveryPollSeconds: 故障恢复检查间隔(默认2秒)
  • RaftEnabled: 是否启用Raft集群(分布式部署时需要)

清理与环境重置

测试完成后,使用以下命令清理环境:

# 停止并删除容器、网络
docker-compose down

# 如需完全清理数据(包括数据库内容)
docker-compose down -v

# 重建镜像(当Dockerfile或代码变更时)
docker-compose build

进阶部署方案

对于需要高可用的测试环境,可扩展为Raft集群模式:

# 简化版Raft集群配置片段
services:
  orchestrator-1:
    build:
      context: .
      dockerfile: docker/Dockerfile.raft
    environment:
      RAFT_NODE_ID: 1
      RAFT_HTTP_PORT: 3000
      RAFT_PEERS: "orchestrator-1:10001,orchestrator-2:10002,orchestrator-3:10003"
  
  orchestrator-2:
    # 配置与节点1类似,修改端口和ID
    ...
  
  orchestrator-3:
    # 配置与节点1类似,修改端口和ID
    ...

完整Raft部署指南可参考官方文档docs/deployment-raft.md,该模式通过分布式共识算法实现orchestrator服务的高可用。

总结与注意事项

通过Docker Compose集成orchestrator的优势包括:

  • 环境一致性:消除"在我机器上能运行"的问题
  • 快速部署:从克隆仓库到可用环境仅需3个命令
  • 隔离性:测试环境与生产环境完全分离
  • 可重复性:随时重建全新环境,避免配置漂移

生产环境部署请参考docs/deployment.md,测试环境中需注意:

  • 默认账号密码仅适用于测试,生产需使用强密码
  • 资源限制:建议分配至少2GB内存给Docker环境
  • 网络配置:确保容器间网络通畅,特别是MySQL复制端口
  • 时间同步:容器时间需与主机同步,避免GTID相关问题

通过这种方式搭建的测试环境,可有效支持orchestrator功能验证、拓扑管理演练和故障恢复测试,为生产部署提供可靠验证基础。

【免费下载链接】orchestrator MySQL replication topology management and HA 【免费下载链接】orchestrator 项目地址: https://gitcode.com/gh_mirrors/or/orchestrator

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值