阿里云Elasticsearch(简称ES)实例部分功能受新网络架构限制无法应用,可通过PrivateLink+负载均衡实现阿里云ES与云资源(ECS、ENI、ECI类型等)或某IP地址下的网络资源打通,解决云ES网络私网互通问题。本文分别介绍通过CLB和PrivateLink实现阿里云ES与阿里云服务器资源私网互通,及通过阿里云NLB和PrivateLink实现阿里云ES集群间私网互通,您也可按照PrivateLink和负载均衡支持的场景自行应用。
实例私网连接是解决新网络架构下X-Pack Watcher、reindex、LDAP和AD(Active Directory)身份认证等功能受限的唯一方案。
2020年10月及之后创建的实例处于新网络架构下,支持实例私网连接。2020年10月之前创建的实例(包括金融云和政务云)处于旧网络架构下,不支持实例私网连接。
阿里云ES PrivateLink应用场景
ES访问外部网络下的服务资源的场景,例如Watcher报警、LDAP、Active Directory等场景。
可配置阿里云ES与阿里云ECS私网打通,将阿里云ECS作为业务服务器或代理服务器实现网络转发,实现原理如下所示。
应用的具体场景、功能如下:
功能
场景说明
相关文档
Watcher
阿里云ES的X-Pack功能支持依据查询条件监测系统信息,对外提供报警服务。
阿里云ES安全特性
阿里云ES的X-Pack功能支持多种集群级别安全特性配置,例如:LDAP、用户认证等。
自定义插件访问外部词库
自定义插件动态访问外部网络词库。
跨集群reindex
通过跨集群reindex将自建ES数据写入到阿里云ES。
两个阿里云ES跨集群reindex迁移场景。两个ES实例分别部署在VPC_1和VPC_2中,在VPC_1下的阿里云ES_1上配置实例私网连接,将VPC_1下的终端节点与VPC_2下的终端节点服务连接,实现两个ES实例的私网连接,实现原理如下所示。
应用的具体场景、功能如下:
功能
场景说明
相关文档
reindex
通过跨集群reindex将一个阿里云ES数据写入到另一个阿里云ES 。
名词解释
通过PrivateLink实现私网访问,您需要创建终端节点服务和终端节点。
名词 | 描述 |
终端节点服务 | 终端节点服务是可以被其他VPC通过创建终端节点建立私网连接的服务,需要您手动创建相关的服务资源。 |
终端节点 | 终端节点与终端节点服务相关联,可以建立通过VPC私网访问外部服务的网络连接,阿里云ES配置实例私网连接将自动在ES所处的网络环境下创建终端节点。 |
通过CLB和PrivateLink实现阿里云ES与ECS私网连接
前提条件
已在VPC_1下创建阿里云ES实例,且ES实例须为2020年10月及之后创建。创建阿里云ES实例,请参见创建阿里云ES实例。
已在用户VPC_2下创建ECS实例,并部署了相关应用,详细信息请参见自定义购买实例。
说明ECS实例即后端服务器,主要接收通过负载均衡实例所转发的请求。创建ECS时需要选择支持PrivateLink的地域和可用区。PrivateLink支持的地域,请参见支持私网连接的地域和可用区。
阿里云ES、ECS、负载均衡实例需部署在同一地域下的同可用区中。
步骤一:创建并配置负载均衡实例
创建支持PrivateLink功能的负载均衡实例。
在实例管理页面,单击创建传统型负载均衡。
在负载均衡SLB购买页面配置实例,地域选择阿里云ES实例所在地域,实例类型选择私网,然后单击立即购买,购买CLB实例。
更多信息,请参见创建和管理CLB实例。
配置负载均衡实例。
在实例管理页面,单击目标实例操作列下的监听配置向导。
在负载均衡业务配置向导页面,按需配置监听信息和后端服务器信息,并进行健康检查和配置审核。
步骤二:创建终端节点服务
实例私网连接功能将自动在ES所处的网络环境下创建终端节点,仅需您在ECS所处的环境下手动创建终端节点服务。
在顶部菜单栏处,选择要创建终端节点服务的地域。
终端节点服务需要与负载均衡实例在同一地域。
单击创建终端节点服务。
在创建终端节点服务页面,服务资源选择已创建的负载均衡实例,按需配置其他参数,单击确定创建,创建终端节点服务。
更多详细信息,请参见创建终端节点服务。
步骤三:配置阿里云ES私网连接
- 登录阿里云Elasticsearch控制台。
- 在左侧导航栏,单击Elasticsearch实例。
- 进入目标实例。
- 在顶部菜单栏处,选择资源组和地域。
- 在Elasticsearch实例中单击目标实例ID。
在左侧导航栏,选择 。
在集群网络设置区域,单击配置实例私网连接右侧的修改。
在配置实例私网连接面板,单击添加私网连接。
在弹出的对话框中,选择已创建的终端节点服务,完成其他配置后单击确认。
在终端节点的操作列,单击允许连接。
终端节点与终端节点服务连接成功后,终端节点连接状态会变为已连接,表明您已经打通了ES集群VPC_1与用户VPC_2。
(可选)查看终端节点域名。
您可以获取终端节点域名用于其他服务的配置,例如Watcher、单点登录和LDAP等。
在配置实例私网连接面板中,单击目标终端节点ID。
在终端节点连接页签,单击目标终端节点ID前的图标,可查看终端节点对应的域名。
通过NLB和PrivateLink实现阿里云ES实例间私网互通
以下介绍通过NLB挂载ES_2实例的域名IP,将阿里云ES_1实例通过私网连接到阿里云ES_2实例,该场景常应用于因网络架构限制导致网络无法互通的两个阿里云ES实例。
两个ES实例连通后,您可以将ES_2中的数据迁移到了ES_1实例中。
阿里云NLB支持IP挂载,更多信息,请参见NLB功能特性。
前提条件
已创建相同地域和可用区下的两个阿里云ES实例。
创建ES时需要选择支持PrivateLink的地域和可用区。PrivateLink支持的地域,请参见支持私网连接的地域和可用区。
步骤一:创建网络型负载均衡服务NLB
网络型负载均衡NLB(Network Load Balancer)实例可以接收来自客户端的请求,并按照监听规则将请求分发至后端服务器。使用NLB服务,您需要创建一个NLB实例,并在实例中添加监听和后端服务器。
创建NLB实例。
在实例页面,单击创建网络型负载均衡。
在购买页面配置实例信息。
地域选择阿里云ES_2实例所在地域,实例网络类型选择私网,可用区选择阿里云ES_2实例所在的可用区。
更多信息,请参见创建和管理NLB实例。
创建NLB服务器组。
每个服务器组均用于将客户端的请求路由到一个或多个后端服务器。NLB会通过健康检查来判断后端服务器的业务可用性。在为NLB实例添加监听时需要指定服务器组,监听会使用已配置的协议和端口检查客户端的连接请求,并将流量转发至相应的服务器组。
在服务器组页面,单击创建服务器组。
在弹出的对话框中,配置服务器组。
服务器组类型选择IP类型,自定义服务器组名称,ES_2实例对应的VPC。
NLB上添加ES_2实例作为后端服务。
在已经创建的服务器组中添加ES_2实例私网IP地址和端口。
通过终端ping获取ES_2实例私网IP地址。
在目标服务器组的操作列上,单击编辑后端服务器。
在后端服务器页签下,单击添加IP。
将获取的ES_2实例私网IP地址添加到后端服务器IP地址中,单击下一步。
添加操作使用的ES端口,例如reindex需要使用9200端口通信。
单击确定。
添加监听。
在实例页面,在目标NLB实例的操作列单击创建监听。
监听协议选择TCP,监听端口输入9200,单击下一步。
服务器组选择IP类型,并选择已添加的后端服务器组,单击下一步。
单击提交。
步骤二:创建终端节点服务
实例私网连接功能将自动在ES所处的环境下创建终端节点,仅需您在另一个ES所处的环境下手动创建终端节点服务。
单击创建终端节点服务。
在创建终端节点服务页面,配置终端节点服务。
部分参数说明如下。更多信息,请参见创建NLB实例。
配置
说明
所属地域
选择与ES相同的地域。
服务资源类型
选择网络型负载均衡NLB。
选择服务资源
已创建的NLB实例。
服务付费者
两者都可以选择。
单击确定创建。
创建成功后可以在服务资源区域,看到创建的终端节点服务已经和NLB绑定了。
步骤三:阿里云ES实例上配置私网连接
在阿里云ES_1实例上配置私网连接,系统将自动在ES_1实例所处的网络环境下创建与终端节点服务相连接的终端节点。
- 登录阿里云Elasticsearch控制台。
- 在左侧导航栏,单击Elasticsearch实例。
- 进入目标实例。
- 在顶部菜单栏处,选择资源组和地域。
- 在Elasticsearch实例中单击目标实例ID。
在左侧导航栏,选择 。
在集群网络设置区域,单击配置实例私网连接右侧的修改。
在配置实例私网连接面板,单击添加私网连接。
在弹出的对话框中,选择已创建的终端节点服务,完成其他配置后单击确认。
在终端节点的操作列,单击允许连接。
终端节点与终端节点服务连接成功后,终端节点连接状态会变为已连接,表明您已经打通了ES_1实例和ES_2实例。
(可选)查看终端节点域名。
您可以获取终端节点域名后添加到白名单,用于其他服务的配置,例如Watcher、单点登录和LDAP等。
在配置实例私网连接面板中,单击目标终端节点ID。
在终端节点连接页签,单击目标终端节点ID前的图标,可查看终端节点对应的域名。
(可选)步骤四:通过reindex测试ES实例间的连通性
通过reindex将阿里云ES_2实例中的索引迁移到阿里云ES_1实例中,验证ES_2实例和ES_1实例的网络连通性。
在ES_1实例的YML文件中配置reindex白名单。
在ES_1实例详情页的左侧导航栏,选择
。在YML文件配置区域的右上角,单击修改配置。
reindex.remote.whitelist: ["终端节点域名:9200"]
ES_2实例中已经准备了待迁移数据,在ES_1实例中创建索引后进行reindex迁移。
POST _reindex { "source": { "remote": { "host": "http://ep-bp1i4db71e6adaa29718-cn-hangzhou-i.epsrv-bp1fm3v8kc2qr2td6lrm.cn-hangzhou.privatelink.aliyuncs.com:9200", "username": "账号", "password": "密码" }, "index": "myindex" }, "dest": { "index": "myindex2" } }
类别
参数
说明
source
host
privatelink终端节点服务访问地址,必须包含支持协议、终端节点域名和端口信息,例如
https://终端节点域名:9200
。username
可选参数。阿里云Elasticsearch实例的默认用户名为elastic。
password
用户对应的密码。阿里云Elasticsearch实例的elastic用户的密码在创建实例时设定,如果忘记可进行重置。重置密码的注意事项及具体操作,请参见重置实例访问密码。
index
远程集群中的源索引。
query
通过查询语法,指定待迁移的数据。详细信息,请参见Reindex API。
dest
index
本地集群中的目标索引。
在ES_1实例中查看是否成功将ES_2实例中的数据迁移到了ES_1实例中。