增量数据同步
目录
快速开始
- 新建配置
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"
详细功能说明
配置
- 需要添加对应的 ES,这里指的是源 ES 和目标 ES。以下是对应 Key 的含义。
配置路径 | 说明 |
---|---|
/elastics/{es-name} | 添加一个新的 ES,其名称是唯一的,方便后续配置引用。 |
/elastics/{es-name}/addresses | 可以为一个 ES 设置多个主地址,可用于负载均衡。 |
/elastics/{es-name}/user | ES 的用户名 |
/elastics/{es-name}/password | ES 的密码 |
- 添加网关配置
配置路径 | 说明 |
---|---|
/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。