美文网首页
利用CCR+Reindex跨集群同步阿里云ES数据

利用CCR+Reindex跨集群同步阿里云ES数据

作者: 左轮Lee | 来源:发表于2021-09-29 11:11 被阅读0次

    ES Version: 7.10.0

    目录:
    一、业务需求背景
    二、RDS相关配置确认
    三、CCR(Cross-Cluster Replication)配置
    四、Reindex配置
    五、新增角色及账号
    六、参考文档

    一、业务需求背景

    1.由于种种原因,测试需要同步生产ES数据至测试ES集群,且需要过滤部分数据后供测试使用(只读即可),索引数据总量10w+,过滤后数据量1w+。
    2.实例是购买的阿里云ES服务,且于新网络架构(2020年10月及之后)下购买的,故无法支持跨集群reindex功能,但是可以在同一实例执行reindex。官方链接见文末参考文档。
    3.于是考虑CCR(将整个索引同步到测试ES),再Reindex过滤数据到新索引(需要定期去reindex,同步频率沟通为半小时一次),新建ES账号控制索引权限,再开放给测试使用。
    4.同步流程大致为下:


    image.png
    二、RDS相关配置确认

    1.需要确保两个ES集群在同一个VPC下
    2.配置实例网络互通,配置其中一个ES集群即可,另外一个会自动设置。


    image.png
    三、CCR(Cross-Cluster Replication)配置

    1.登录ES Kibana(购买ES时默认部署)


    image.png

    2.添加远程ES数据源(即被同步的ES集群)在测试ES集群操作。


    image.png
    image.png
    3.添加同步索引
    image.png

    稍等片刻之后,索引的同步状态即将变成 Active。查看文档数量,两边一致,同步完成。

    四、Reindex配置

    1、首先要在测试环境新建索引 chat,字段类型保持与源端一致。
    2、编写同步脚本 syncEsData.sh,过滤数据的 "query" 根据需求编写。
    3、部署crontab,每半小时执行一次。

    #!/bin/bash 
    
    curl -XPOST -u elastic:xxxxxxxxx 'http://xxxxxxxx:9200/_reindex?pretty'   -H 'Content-Type: application/json'  -d '
    {
        "source": {
            "index": "follow_chat",
            "query": {
            "bool": {
                "should": [
                    {
                        "terms": {
                            "from.keyword": ["AAAAA","BBBBB","CCCCC"]
                        }
                    },
                    {
                        "terms": {
                            "tolist.keyword": [
                                "AAAAA","BBBBB","CCCCC"
                            ]
                        }
                    }
                ]
            }
        }
        },
        "dest": {
            "index": "chat"
        }
    }'
    
    
    五、新增角色及账号

    新增角色是为了控制测试人员查看全量数据的索引 follow_chat,如果之前是使用的elastic账号,则需要回收替换账号。

    #### 新增角色,只能操作索引chat
    curl -XPOST -u elastic:xxxxxxxxx  'xxxxxxx:9200/_xpack/security/role/roleName' -H "Content-Type: application/json" -d '{ "indices":[{"names":["chat"],"privileges":["all"]}]}'   
    
    #### 新增user,赋权上面创建的角色
    curl -XPOST -u elastic:xxxxx 'xxxxxx:9200/_xpack/security/user/newUser' -H "Content-Type: application/json" -d '{
      "password" : "xxxxxxxxxxxxxxx",
      "roles" : [ "roleName" ]
    }'
    
    六、参考文档

    https://help.aliyun.com/document_detail/175973.html
    https://help.aliyun.com/document_detail/176854.html

    相关文章

      网友评论

          本文标题:利用CCR+Reindex跨集群同步阿里云ES数据

          本文链接:https://www.haomeiwen.com/subject/retggltx.html