本文介绍: 幸运的是,在这三个场景中,我们都能使用极限网关来帮助我们进行更丝滑的迁移升级。下面,我们迁移 ES 集群上云为例介绍下整个工作过程

工作大家可能遇到以下这些场景

这些场景往往都还有个共同的需求迁移过程要保证业务最小停机时间
幸运的是,在这三个场景中,我们都能使用极限网关来帮助我们进行更丝滑的迁移或升级。下面,我们以迁移 ES 集群上云为例,介绍下整个工作过程

迁移架构

通过应用流量网关方式请求同步转发给自建 ES,网关记录所有写入请求,并确保顺序在 XX 云 ES 上重放请求,两侧集群的各种故障都妥善进行了处理,从而实现透明的集群双写实现安全无缝数据迁移。

业务端如果已经部署云上可以使用云上的 SLB 服务访问网关确保后端网关的高可用,如果业务端和极限网关还在企业内网,可以使用极限网关自带的 4 层浮动 IP 来确保网关高可用

执行步骤

部署 INFINI Gateway

为了保证数据无缝透明迁移,通过网关来进行双写

  1. 系统调优

  2. 安装 INFINI Gateway

  3. 修改网关配置
    在此 下载 网关双写配置默认网关会加载配置文件 gateway.yml 。如果要指定其他配置文件使用config 选项
    配置文件内容较多,下面仅展示必要部分

  #primary
  PRIMARY_ENDPOINT: http://192.168.56.3:7171
  PRIMARY_USERNAME: elastic
  PRIMARY_PASSWORD: password
  PRIMARY_MAX_QPS_PER_NODE: 10000
  PRIMARY_MAX_BYTES_PER_NODE: 104857600 #100MB/s
  PRIMARY_MAX_CONNECTION_PER_NODE: 200
  PRIMARY_DISCOVERY_ENABLED: false
  PRIMARY_DISCOVERY_REFRESH_ENABLED: false
  #backup
  BACKUP_ENDPOINT: http://192.168.56.3:9200
  BACKUP_USERNAME: admin
  BACKUP_PASSWORD: admin
  BACKUP_MAX_QPS_PER_NODE: 10000
  BACKUP_MAX_BYTES_PER_NODE: 104857600 #100MB/s
  BACKUP_MAX_CONNECTION_PER_NODE: 200
  BACKUP_DISCOVERY_ENABLED: false
  BACKUP_DISCOVERY_REFRESH_ENABLED: false

PRIMARY_ENDPOINT配置主集群地址端口
PRIMARY_USERNAME、PRIMARY_PASSWORD: 访问主集群的用户信息
BACKUP_ENDPOINT配置备集群地址端口
BACKUP_USERNAME、BACKUP_PASSWORD: 访问备集群的用户信息

  1. 启动网关
    启动网关并指定刚刚创建的配置,如下
    ./gateway-linux-amd64 -config replication_via-disk.yml.yml
部署 INFINI Console

为了方便在多个集群之间快速切换管理网关消费任务查看队列等。使用 INFINI Console 来进行管理

  1. 下载安装

  2. 启动服务
    ./console-linux-amd64 -service install
    ./console-linux-amd64 -service start

  3. 注册资源
    将 ES 集群、极限网关都注册到 Console 中。

测试 INFINI Gateway

为了验证网关是否正常工作,我们通过 INFINI Console 来快速验证一下。
首先通过走网关的接口创建一个索引,并写入一个文档如下

查看 5.4.2 集群的数据情况,如下

查看集群 5.6.16 的数据情况,如下

数据一致,说明网关配置都正常,验证结束

调整网关的消费策略

因为我们需要全量数据迁移之后,才能进行增量数据的追加,在全量数据迁移完成之前,我们应该暂停增量数据的消费修改网关配置里面 Pipeline consume-queue_backup-bulk_request_ingestion-to-backup参数 auto_startfalse表示自动启动该任务,具体配置方法如下

修改完配置之后,需要重新启动网关。
由于之前已经注册了网关,待全量迁移完成之后,可以通过后台的 Task 管理来进行后续的任务启动停止如下

切换流量

接下来,将业务正常写的流量切换到网关,也就是需要把之前指向 ES 5.4.2 的地址指向网关的地址,如果 5.4.2 集群开启身份验证业务代码同样需要传递身份信息,和 5.4.2 之前的用法保持不变。

切换流量到网关之后,用户请求还是同步方式正常访问自建集群,网关记录到的请求会按顺序记录到 MQ 里面,但是消费是暂停状态
如果业务代码使用的 ES 的 SDK 支持 Sniff,并且业务代码开启了 Sniff,那么应该关闭 Sniff,避免业务端通过 Sniff 直接链接后端的 ES 节点所有流量现在应该都只通过网关来进行访问

全量数据迁移

流量移到网关之后,我们开始对自建 Elasticsearch 集群的数据进行全量移到 XX 云 Elasticsearch 集群。

全量迁移已有的数据的方式有很多种:

增量数据迁移

在全量导入过程中,可能存在数据的增量修改,不过这部分请求都已经完整记录下来了,我们只需要开启网关的消费任务即可将积压的请求应用云端的 ES 集群。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
示例操作如下

通过观察队列是否消费完成判断增量数据是否做完,如下

行数据比对

由于集群内部的数据可能比较多,我们需要进行一个完整的比对才能确保数据的完整性,可以通过 INFINI Console 的数据比对 工具来进行。

切换集群

如果验证完之后,两个集群的数据已经完全一致了,可以将程序切换到新集群,或者将网关的配置里面主备进行互换,仍旧写两个集群,先写云端集群,再写自建集群。

双集群在线运行一段时间,待业务完全验证之后,再安全下线老集群,如遇到问题,也可以随时回切到老集群。

小结

通过使用极限网关,自建 ES 集群可以安全无缝的迁移上云,在迁移的过程中,两套集群通过网关进行了解耦,两套集群的版本也可以不一样,在迁移的过程中还能实现版本的无缝升级

工作流程图

原文地址:https://blog.csdn.net/infinilabs/article/details/134750042

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_#ID#.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注