增量数据同步

  • 2024年1月20日
目录

快速开始

  • 新建配置
level: "info"
elastics:
    source-es5:
        addresses:
            - "http://192.168.1.55:9200"
            - "http://192.168.1.56:9200"
            - "http://192.168.1.56:9200"
        user: "es-user"
        password: "123456"
    source-es8:
        addresses:
            - "http://192.168.1.67:9200"
            - "http://192.168.1.68:9200"
            - "http://192.168.1.69:9200"
        user: "es-user2"
        password: "123456"

gateway:
    address: "0.0.0.0:8080"
    user: "user"
    password: "123456"
    source_es: "source-es5"
    target_es: "target-es8"
    master: "source-es5"
  • 启动 Ela Gateway
./ela  --config ./config.yaml --gateway
  • 修改服务配置,将对应直连 ES 的配置改为对应的网关地址。
address: "<ela gateway ip>:8080"
user: "user"
password: "123456"

详细功能说明

配置

  1. 需要添加对应的 ES,这里指的是源 ES 和目标 ES。以下是对应 Key 的含义。
配置路径 说明
/elastics/{es-name} 添加一个新的 ES,其名称是唯一的,方便后续配置引用。
/elastics/{es-name}/addresses 可以为一个 ES 设置多个主地址,可用于负载均衡。
/elastics/{es-name}/user ES 的用户名
/elastics/{es-name}/password ES 的密码
  1. 添加网关配置
配置路径 说明
/gateway/address 网关监听地址
/gateway/user 网关访问用户
/gateway/password 网关访问密码
/gateway/source_es 网关的源 ES,需要引用 elastics 配置中的 ES 名称;数据迁移的源 ES。这不仅意味着迁移的数据源,还决定了 ELA 将按照对应版本的 ES 解析 API 并返回对应版本的 ES 数据格式。
/gateway/target_es 网关的目标 ES,需要引用 elastics 配置中的 ES 名称;数据迁移的目标 ES。
/gateway/master 主 ES,只能从 /gateway/source_es 和 /gateway/target_es 中选择。它决定了当前优先同步读写的 ES。另一个 ES 将作为从,只会有写请求,业务端不会感知从请求的成功或失败。

主从切换

在开始时,/gateway/master 应该设置为 /gateway/source_es 引用的 ES;因为存量数据还没有迁移,只有源 ES 有完整数据;在存量数据迁移完成后,/gateway/master 可以迁移到 /gateway/target_es,也就是目标 ES。

切换 ES 很简单,只需要将 /gateway/master 设置为 /gateway/target_es 引用的 ES 即可。

gateway:
    ...
    source_es: "source-es5"
    target_es: "target-es8"
    master: "target-es8"

总结

这就是 Ela Gateway 的优势所在,它帮助兼容不同版本 Elasticsearch 之间的 API 差异,对业务代码的侵入基本为零;可以在不停止服务的情况下平滑切换新旧 Elasticsearch。

分享 :