跳到主要内容

添加机器(Docker)

本文档主要介绍如何在 Docker 环境中添加 CloudCanal 节点,达到同步任务高可用目的。

如果您从未安装过 CloudCanal Docker 版,请参考 CloudCanal 全新安装(Docker Linux/MacOS)CloudCanal 全新安装(Docker Windows) 文档。

高可用特点如下:

  • 任务容灾自动切换
  • 任务手动调度
  • 自动分配任务至低负载机器

步骤

环境准备

  • 登录新节点,参考 安装文档软件准备 章节准备相关软件。

添加机器

  • CloudCanal 控制台 > 机器管理 > 集群名 > 新增机器a4c405c7-ef68-4c04-88b6-e5059f853e61-image.png

  • 点击 获取验证码,输入 777777b64bccae-b56a-4a20-bab5-ce10e4bdbb86-image.png

  • 获取机器唯一识别配置信息。 60acda31-94e2-43c1-93f8-114ee6b77975-image.png

安装新 sidecar 容器

  • 新机器上解压安装包

    7z x cloudcanal.7z -o./cloudcanal_home
  • 进入解压目录下的 install_on_docker,执行以下命令添加一个新的 sidecar 容器。

    cd /cloudcanal_home/install_on_docker
    sh install_one_node.sh

    TIPS: 一台机器上不允许启动两个sidecar容器,请在新的机器上启动sidecar容器。

  • 寻找并编辑指定配置文件。

     ## 查看容器id
    docker ps | grep cloudcanal-sidecar

    ## 进入容器
    docker exec -it ${CONTAINER_ID} /bin/bash

    ## 修改配置文件
    vi /home/clougence/cloudcanal/global_conf/conf.properties
  • 将控制台 机器唯一识别配置信息 复制到配置文件(conf.properties),替换已存在内容。

  • 将 cloudcanal.console.domain 的值为 cloudcanal-console 容器所在宿主机 ip。 3b3f4e08-ed8f-4754-8137-d7264ffe9065-image.png

  • 从 sidecar 容器检查 console 容器所在宿主机 7007 端口连通性。

    docker exec -it ${CONTAINER_ID} /bin/bash

    ## 安装 telnet
    yum install -y telnet

    telnet ${console容器所在宿主机ip} 7007

启动 sidecar 进程

  • 进入新添加 sidecar 容器,执行如下命令。

    chown -R clougence.clougence cloudcanal

    ## 切换为clougence用户
    su - clougence

    ## 启动sidecar
    sh /home/clougence/cloudcanal/sidecar/bin/startSidecar.sh

    ## 查看日志,确认是否有异常。如果都为INFO或者WARN日志就是正常的
    tail -f /home/clougence/logs/cloudcanal/sidecar/sidecar.log

页面确认

  • 新添加机器正常上线。 22b9e92c-e864-40ee-afc4-c70c711bad83-image.png

FAQ

使用 clougence 用户执行 sidecar.sh 脚本报错 Permission denied 怎么办?

  • 确认 /home/clougence/cloudcanal 目录权限是否为 clougence:clougence,如果不是,执行以下操作。
    chown -R clougence:clougence /home/clougence/cloudcanal

properties in global config /home/clougence/cloudcanal/global_conf/conf.properties are empty

  • 请仔细检查 /home/clougence/cloudcanal/global_conf/conf.properties 文件的内容,是不是没复制粘贴完整。