Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication

通过跨集群复制(Cross Cluster Replication - CCR),你可以跨集群将索引复制并实现:

  • 在数据中心中断时继续处理搜索请求
  • 防止搜索量影响索引吞吐量
  • 通过在距用户较近的地理位置处理搜索请求来减少搜索延迟

跨集群复制采用主动 - 被动模型。 你索引到领导者(leader)索引,并将数据复制到一个或多个只读跟随者(follower)索引。 在将跟随者索引添加到集群之前,必须配置包含领导者索引的远程集群。

当领导者索引接收写入时,跟随者索引会从远程集群上的领导者索引中提取更改。 你可以手动创建跟随者索引,也可以配置自动跟随模式,为新的时间序列索引自动创建跟随者索引。

你可以在单向或双向设置中配置跨集群复制集群:

  • 在单向配置中,一个集群仅包含领导者索引,另一个集群仅包含跟随者索引。
  • 在双向配置中,每个集群都包含领导者索引和跟随者索引。

在单向配置中,包含跟随者索引的集群必须运行与远程集群相同或更新版本的 Elasticsearch。 如果较新,版本也必须兼容,如下表所示。

多集群架构

使用跨集群复制在 Elastic Stack 内构建多个多集群架构:

  • 主集群故障时灾难恢复,辅助集群作为热备份
  • 数据本地性,用于维护靠近应用程序服务器(和用户)的数据集的多个副本,并减少昂贵的延迟
  • 集中式报告,可最大限度地减少查询多个地理分布式 Elasticsearch 集群时的网络流量和延迟,或通过将搜索卸载到辅助集群来防止搜索负载干扰索引编制

重要:在所有这些用例中,你必须在每个集群上独立配置安全性。 配置跨集群复制以进行灾难恢复时,不会复制安全配置。 为了确保备份 Elasticsearch 安全功能状态,请定期拍摄快照。 然后,你可以从安全配置中恢复本机用户、角色和 token。

灾难恢复和高可用性

灾难恢复为你的任务关键型应用程序提供承受数据中心或区域中断的能力。 此用例是跨集群复制的最常见部署。 你可以在不同架构中配置集群以支持灾难恢复和高可用性。它可以分为四个部分:

  • 单一灾难恢复数据中心
  • 多个容灾数据中心
  • 链式复制
  • 双向复制

单一灾难恢复数据中心

在此配置中,数据从生产数据中心复制到灾难恢复数据中心。 由于跟随者索引复制领导者索引,因此如果生产数据中心不可用,你的应用程序可以使用灾难恢复数据中心。

多个容灾数据中心

你可以将数据从一个数据中心复制到多个数据中心。 此配置提供灾难恢复和高可用性,确保在主数据中心发生故障或不可用时将数据复制到两个数据中心。

在下图中,数据中心 A 的数据被复制到数据中心 B 和数据中心 C,这两个数据中心都拥有数据中心 A 的领导者索引的只读副本。

链式复制

你可以跨多个数据中心复制数据以形成复制链。 在下图中,数据中心 A 包含领导者索引。 数据中心 B 从数据中心 A 复制数据,数据中心 C 从数据中心 B 中的跟随者索引复制数据。这些数据中心之间的连接形成链式复制模式。

双向复制

在双向复制设置中,所有集群都有权查看所有数据,并且所有集群都有一个可写入的索引,而无需手动实施故障转移。 应用程序可以写入每个数据中心内的本地索引,并跨多个索引读取所有信息的全局视图。

当集群或数据中心不可用时,此配置不需要手动干预。 在下图中,如果数据中心 A 不可用,你可以继续使用数据中心 B,而无需手动故障转移。 当数据中心 A 上线时,集群之间的复制将恢复。

此配置对于仅索引(index-only)工作负载特别有用,在这种情况下不会更新文档值。 在此配置中,Elasticsearch 索引的文档是不可变的。 客户端位于 Elasticsearch 集群旁边的每个数据中心,并且不与不同数据中心的集群进行通信。

数据局部性

让数据更接近用户或应用程序服务器可以减少延迟和响应时间。 在 Elasticsearch 中复制数据时也适用此方法。 例如,你可以将产品目录或参考数据集复制到全球 20 个或更多数据中心,以最大限度地缩短数据与应用程序服务器之间的距离。

在下图中,数据从一个数据中心复制到另外三个数据中心,每个数据中心都位于自己的区域中。 中央数据中心包含领导者索引,其他数据中心包含复制该特定区域中的数据的跟随者索引。 此配置使数据更接近访问它的应用程序。

集中报告

当跨大型网络查询效率低下时,使用集中式报告集群非常有用。 在此配置中,你可以将数据从许多较小的集群复制到集中式报告集群。

例如,一家大型跨国银行可能在全球拥有 100 个 Elasticsearch 集群,这些集群分布在每个银行分行的不同区域。 使用跨集群复制,银行可以将所有 100 家银行的事件复制到中央集群,以便在本地分析和汇总事件以进行报告。 银行可以使用跨集群复制来复制特定索引,而不是维护镜像集群。

在下图中,来自不同区域的三个数据中心的数据被复制到集中式报告集群。 此配置使你能够将数据从区域中心复制到中央集群,你可以在其中本地运行所有报告。

复制机制

虽然你在索引级别设置跨集群复制,但 Elasticsearch 在分片级别实现复制。 创建跟随者索引时,该索引中的每个分片都会从领导者索引中相应的分片中提取更改,这意味着跟随者索引与其领导者索引具有相同数量的分片。 Leader 上的所有操作都会被 follower 复制,例如创建、更新或删除文档的操作。 这些请求可以从领导分片的任何副本(主分片或副本分片)提供服务。

当跟随者分片发送读取请求时,领导者分片会响应任何新操作,并受到你在配置跟随者索引时建立的读取参数的限制。 如果没有可用的新操作,则领导分片将等待新操作的配置超时时间。 如果超时时间过去,领导者分片会向跟随者分片响应没有新操作。 跟随者分片更新分片统计信息,并立即向领导者分片发送另一个读取请求。 这种通信模型确保远程集群和本地集群之间的网络连接持续使用,避免被防火墙等外部源强行终止。

如果读取请求失败,则检查失败的原因。 如果故障原因被认为是可恢复的(例如网络故障),则跟随者分片将进入重试循环。 否则,跟随者分片将暂停,直到你恢复为止。

处理更新

你无法手动修改跟随者索引的映射或别名。 要进行更改,你必须更新领导者索引。 因为它们是只读的,所以跟随者索引拒绝所有配置中的写入。

注意:尽管领导者索引上的别名更改会复制到跟随者索引,但写索引(write indices)会被忽略。 跟随者索引不能接受直接写入,因此如果任何领导者别名将 is_write_index 设置为 true,则该值将被强制设置为 false。

例如,你在数据中心 A 中为名为 doc_1 的文档建立索引,该文档将复制到数据中心 B。如果客户端连接到数据中心 B 并尝试更新 doc_1,则请求将失败。 要更新 doc_1,客户端必须连接到数据中心 A 并更新领导者索引中的文档。

当跟随者分片从领导者分片接收操作时,它将这些操作放入写入缓冲区中。 跟随者分片使用写入缓冲区中的操作提交批量写入请求。 如果写入缓冲区超出其配置的限制,则不会发送其他读取请求。 此配置提供了针对读取请求的背压(back-pressure),允许跟随者分片在写入缓冲区不再满时恢复发送读取请求。

要管理如何从领导者索引复制操作,你可以在创建跟随者索引时配置设置。

领导者索引上的索引映射的更改会尽快复制到跟随者索引。 此行为也适用于索引设置,但领导者索引本地的某些设置除外。 例如,更改领导者索引上的副本数量不会被跟随者索引复制,因此可能无法检索该设置。

如果你对跟随者索引所需的领导者索引应用非动态设置更改,则跟随者索引将自行关闭,应用设置更新,然后重新打开自身。 在此周期内,跟随者索引不可用于读取,也无法复制写入。

使用远程恢复初始化跟随者

当你创建跟随者索引时,在其完全初始化之前你无法使用它。 远程恢复(remote recovery)过程通过从领导者集群中的主分片复制数据来在跟随者节点上构建分片的新副本。

Elasticsearch 使用此远程恢复过程,使用领导者索引中的数据来引导跟随者索引。 此过程为跟随者提供了领导者索引当前状态的副本,即使由于 Lucene 段合并而无法在领导者上获得完整的更改历史记录。

远程恢复是一个网络密集型过程,它将所有 Lucene 段文件从领导者集群传输到跟随者集群。 跟随者请求在领导者集群中的主分片上启动恢复会话。 然后,跟随者同时向领导者请求文件块。 默认情况下,进程同时请求五个 1MB 文件块。 此默认行为旨在支持领导者和跟随者集群之间存在高网络延迟。

提示:你可以修改动态远程恢复设置以限制传输数据的速率并管理远程恢复消耗的资源。

在包含跟随者索引的集群上使用 recovery API 来获取有关正在进行的远程恢复的信息。 由于 Elasticsearch 使用快照和恢复(snapshot 及 restore)基础设施实现远程恢复,因此运行远程恢复在 recovery API 中被标记为 snapshot 类型。

复制领导者需要软删除(soft deletes)

跨集群复制的工作原理是重播在领导索引分片上执行的各个写入操作的历史记录。 Elasticsearch 需要在领导者分片上保留这些操作的历史记录,以便跟随者分片任务可以拉动它们。 用于保留这些操作的底层机制是软删除。

每当删除或更新现有文档时都会发生软删除。 通过将这些软删除保留到可配置的限制,操作历史记录可以保留在领导者分片上,并在跟随者分片任务重播操作历史记录时可供其使用。

index.soft_deletes.retention_lease.period 设置定义分片历史保留租约在被视为过期之前保留的最长时间。 此设置决定包含你的跟随者索引的集群可以离线多长时间,默认情况下为 12 小时。 如果分片副本在其保留租约到期后恢复,但丢失的操作在领导者索引上仍然可用,则 Elasticsearch 将建立新的租约并复制丢失的操作。 然而 Elasticsearch 不保证保留未释放的操作,因此也有可能一些丢失的操作已被领导者丢弃,现在完全不可用。 如果发生这种情况,则跟随者无法自动恢复,因此你必须重新创建它。

必须为要用作领导索引的索引启用软删除。 默认情况下,在 Elasticsearch 7.0.0 或之后创建的新索引上启用软删除。

重要:跨集群复制不能用于使用 Elasticsearch 7.0.0 或更早版本创建的现有索引,其中禁用了软删除。 你必须将数据重新索引到启用软删除的新索引中。

实操

安装 Elasticsearch 及 Kibana

如果你还没有安装好自己的 Elasticsearch 及 Kibana,你可以参考如下下面的文章来进行安装:

  • 如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch

  • Kibana:如何在 Linux,MacOS 及 Windows 上安装 Elastic 栈中的 Kibana

在安装的时候,我们需要特别注意的是:我们按照 Elastic Stack 8.x 的指南来进行安装。在今天的练习中,我将使用 Elastic Stack 8.8.1 来进行展示。我们将以如下的架构来进行展示:

 在上面,我们分别在两个机器上创建两个不同的集群。在安装的时候,我们需要对 config/elasticsearch.yml 做一些特殊的配置:

config/elasticsearch.yml - macOS

config/elasticsearch.yml - ubuntu

针对非 keystore 及 truststore 的安装

我们首先参考之前的文章 “Elasticsearch:如何在不更新证书的情况下为集群之间建立互信”。你如果不是按照默认的方式来进行 安装 Elasticsearch 集群的,比如针对非 keystore 及 trustore 的安装,参照我之前的文章 “Security:如何安装 Elastic SIEM 和 EDR” 来进行安装,那么你可以直接把另外一个集群的证书添加到相应的 config/elasticsearch.yml 的配置中去即可:

config/elasticsearch.yml

xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.key: /etc/elasticsearch/certs/elasticsearch.key
xpack.security.transport.ssl.certificate: /etc/elasticsearch/certs/elasticsearch.crt
xpack.security.transport.ssl.certificate_authorities: [ "/etc/elasticsearch/certs/ca/ca.crt", "certificate_from_another_cluster.crt ]

有关使用自定义的证书安装 Elasticsearch 集群,请参阅文章 “Elasticsearch:如何使用自定义的证书安装 Elastic Stack 8.x”。

为集群之间建立互信

针对使用 keystore 及 truststore 安装的两个 Elasticsearch 集群,我们为了能够使它们建立互信,我们需要针对它们的配置文件做一些配置。它们的证书存在于 Elasticsearch 的安装目录中:

macOS

$ pwd
/Users/liuxg/elastic/elasticsearch-8.8.1
$ ls config/certs/
http.p12      http_ca.crt   transport.p12

Ubuntu OS

parallels@ubuntu2004:~/elastic/elasticsearch-8.8.1$ pwd
/home/parallels/elastic/elasticsearch-8.8.1
parallels@ubuntu2004:~/elastic/elasticsearch-8.8.1$ ls config/certs/
http_ca.crt  http.p12  transport.p12

为了获取在默认 Elasticsearch 安装的证书信息,我们使用如下的步骤来进行获得,以 macOS 为例:

$ pwd
/Users/liuxg/elastic/elasticsearch-8.8.1
$ ./bin/elasticsearch-keystore list
keystore.seed
xpack.security.http.ssl.keystore.secure_password
xpack.security.transport.ssl.keystore.secure_password
xpack.security.transport.ssl.truststore.secure_password
$ ./bin/elasticsearch-keystore show xpack.security.transport.ssl.truststore.secure_password
ABFwaZgkTaiE-WrMvXy9Tw
$ cd config/certs/
$ openssl pkcs12 -in transport.p12 -out macOS.crt -clcerts -nokeys
Enter Import Password:
$ ls
http.p12      http_ca.crt   macOS.crt     transport.p12

在上面提示输入密码的时候,请输入在上面步骤中得到的密码即可。这样我们就得到了 macOS 上安装的 Elasticsearch 的证书。

我们把这个 macOS.crt 证书拷贝到 Ubuntu OS 中的 Elasticsearch 安装目录中:

scp macOS.crt parallels@ubuntu2004:/home/parallels/elastic/elasticsearch-8.8.1/config/certs

我们可以在 Ubuntu OS 的机器上进行查看:

parallels@ubuntu2004:~/elastic/elasticsearch-8.8.1/config/certs$ pwd
/home/parallels/elastic/elasticsearch-8.8.1/config/certs
parallels@ubuntu2004:~/elastic/elasticsearch-8.8.1/config/certs$ ls
http_ca.crt  http.p12  macOS.crt  transport.p12

按照同样的方法,我们可以得到 Ubuntu OS 上 Elasticsearch 安装的证书 ubuntu.crt:

parallels@ubuntu2004:~/elastic/elasticsearch-8.8.1$ pwd
/home/parallels/elastic/elasticsearch-8.8.1
parallels@ubuntu2004:~/elastic/elasticsearch-8.8.1$ ls config/certs/
http_ca.crt  http.p12  transport.p12
parallels@ubuntu2004:~/elastic/elasticsearch-8.8.1$ ./bin/elasticsearch-keystore list
keystore.seed
xpack.security.http.ssl.keystore.secure_password
xpack.security.transport.ssl.keystore.secure_password
xpack.security.transport.ssl.truststore.secure_password
parallels@ubuntu2004:~/elastic/elasticsearch-8.8.1$ ./bin/elasticsearch-keystore show xpack.security.transport.ssl.truststore.secure_password
Npb620rZQbuqyKvw1DT0xw
parallels@ubuntu2004:~/elastic/elasticsearch-8.8.1$ cd config/certs/
parallels@ubuntu2004:~/elastic/elasticsearch-8.8.1/config/certs$ openssl pkcs12 -in transport.p12 -out ubuntu.crt -clcerts -nokeys
Enter Import Password:
parallels@ubuntu2004:~/elastic/elasticsearch-8.8.1/config/certs$ ls
http_ca.crt  http.p12  transport.p12  ubuntu.crt

从上面的输出中,我们可以看到我们已经得到了 Ubuntu OS 机器上的证书 ubuntu.crt。

我们把上面的 ubuntu.crt 证书拷贝到 macOS 的机器中的 Elasticsearch 安装目录中:

scp parallels@ubuntu2004:/home/parallels/elastic/elasticsearch-8.8.1/config/certs/ubuntu.crt .
$ pwd
/Users/liuxg/elastic/elasticsearch-8.8.1/config/certs
$ scp parallels@ubuntu2004:/home/parallels/elastic/elasticsearch-8.8.1/config/certs/ubuntu.crt .
ubuntu.crt                                                   100% 2060     3.4MB/s   00:00    
$ ls
http.p12      http_ca.crt   macOS.crt     transport.p12 ubuntu.crt

我们可以使用如下的命令来查看当前 macOS 里 transport.p12 的证书信息:

$ pwd
/Users/liuxg/elastic/elasticsearch-8.8.1
$ ./bin/elasticsearch-keystore list
keystore.seed
xpack.security.http.ssl.keystore.secure_password
xpack.security.transport.ssl.keystore.secure_password
xpack.security.transport.ssl.truststore.secure_password
$ ./bin/elasticsearch-keystore show xpack.security.transport.ssl.truststore.secure_password
ABFwaZgkTaiE-WrMvXy9Tw
$ cd config/certs/
$ ls
http.p12      http_ca.crt   macOS.crt     transport.p12 ubuntu.crt
$ keytool -keystore transport.p12 -list
Enter keystore password:  
Keystore type: PKCS12
Keystore provider: SUN

Your keystore contains 2 entries

transport, Jun 13, 2023, PrivateKeyEntry, 
Certificate fingerprint (SHA-256): BB:F1:F4:71:A3:19:0B:48:7A:E8:23:1A:DB:F1:01:3A:02:61:B7:C7:08:E1:68:1B:1E:2A:55:D1:D6:66:39:E2
transport_ca, Jun 29, 2023, trustedCertEntry, 
Certificate fingerprint (SHA-256): E8:2B:C2:5F:B2:30:30:AC:AA:C9:DE:DE:E6:FB:C2:EC:47:E7:C7:D6:21:8F:4B:63:9D:58:C1:1C:75:CF:9C:04

从上面,我们可以看出来,它里面有两个证书。现在我们使用如下的方法把 ubuntu.crt 这个证书添加到 transport.p12 这个 truststore 里去。

$ pwd
/Users/liuxg/elastic/elasticsearch-8.8.1
$ ./bin/elasticsearch-keystore list
keystore.seed
xpack.security.http.ssl.keystore.secure_password
xpack.security.transport.ssl.keystore.secure_password
xpack.security.transport.ssl.truststore.secure_password
$ ./bin/elasticsearch-keystore show xpack.security.transport.ssl.truststore.secure_password
ABFwaZgkTaiE-WrMvXy9Tw
$ cd config/certs/
$ ls
http.p12      http_ca.crt   macOS.crt     transport.p12 ubuntu.crt
$ keytool -keystore transport.p12 -list
Enter keystore password:  
Keystore type: PKCS12
Keystore provider: SUN

Your keystore contains 2 entries

transport, Jun 13, 2023, PrivateKeyEntry, 
Certificate fingerprint (SHA-256): BB:F1:F4:71:A3:19:0B:48:7A:E8:23:1A:DB:F1:01:3A:02:61:B7:C7:08:E1:68:1B:1E:2A:55:D1:D6:66:39:E2
transport_ca, Jun 29, 2023, trustedCertEntry, 
Certificate fingerprint (SHA-256): E8:2B:C2:5F:B2:30:30:AC:AA:C9:DE:DE:E6:FB:C2:EC:47:E7:C7:D6:21:8F:4B:63:9D:58:C1:1C:75:CF:9C:04
$ keytool -importcert -trustcacerts -noprompt -keystore transport.p12 -storepass ABFwaZgkTaiE-WrMvXy9Tw -alias ubuntu -file ubuntu.crt
Certificate was added to keystore
$ keytool -keystore transport.p12 -list
Enter keystore password:  
Keystore type: PKCS12
Keystore provider: SUN

Your keystore contains 3 entries

transport, Jun 13, 2023, PrivateKeyEntry, 
Certificate fingerprint (SHA-256): BB:F1:F4:71:A3:19:0B:48:7A:E8:23:1A:DB:F1:01:3A:02:61:B7:C7:08:E1:68:1B:1E:2A:55:D1:D6:66:39:E2
transport_ca, Jun 29, 2023, trustedCertEntry, 
Certificate fingerprint (SHA-256): E8:2B:C2:5F:B2:30:30:AC:AA:C9:DE:DE:E6:FB:C2:EC:47:E7:C7:D6:21:8F:4B:63:9D:58:C1:1C:75:CF:9C:04
ubuntu, Jun 29, 2023, trustedCertEntry, 
Certificate fingerprint (SHA-256): 1B:69:D9:26:F2:4A:3C:91:CD:01:9F:DC:70:9D:3E:BA:97:FE:B2:67:FC:E9:62:46:AD:8A:74:41:F5:BB:CF:D3

 

按照同样的方法,我们在 Ubuntu OS 的机器上,添加 macOS.crt 证书:

parallels@ubuntu2004:~/elastic/elasticsearch-8.8.1$ pwd
/home/parallels/elastic/elasticsearch-8.8.1
parallels@ubuntu2004:~/elastic/elasticsearch-8.8.1$ ./bin/elasticsearch-keystore list
keystore.seed
xpack.security.http.ssl.keystore.secure_password
xpack.security.transport.ssl.keystore.secure_password
xpack.security.transport.ssl.truststore.secure_password
parallels@ubuntu2004:~/elastic/elasticsearch-8.8.1$ ./bin/elasticsearch-keystore show xpack.security.transport.ssl.truststore.secure_password
Npb620rZQbuqyKvw1DT0xw
parallels@ubuntu2004:~/elastic/elasticsearch-8.8.1$ cd config/certs/
parallels@ubuntu2004:~/elastic/elasticsearch-8.8.1/config/certs$ ls
http_ca.crt  http.p12  macOS.crt  transport.p12  ubuntu.crt
parallels@ubuntu2004:~/elastic/elasticsearch-8.8.1/config/certs$ keytool -keystore transport.p12 -list
Enter keystore password:  
Keystore type: PKCS12
Keystore provider: SUN

Your keystore contains 2 entries

transport, Jun 27, 2023, PrivateKeyEntry, 
Certificate fingerprint (SHA-256): 1B:69:D9:26:F2:4A:3C:91:CD:01:9F:DC:70:9D:3E:BA:97:FE:B2:67:FC:E9:62:46:AD:8A:74:41:F5:BB:CF:D3
transport_ca, Jun 29, 2023, trustedCertEntry, 
Certificate fingerprint (SHA-256): 53:ED:41:99:06:24:1D:86:37:07:0D:19:9B:7B:73:00:09:A8:D3:5D:E7:EF:DC:A4:CE:C7:26:6E:12:F2:A9:32
parallels@ubuntu2004:~/elastic/elasticsearch-8.8.1/config/certs$ ls
http_ca.crt  http.p12  macOS.crt  transport.p12  ubuntu.crt
parallels@ubuntu2004:~/elastic/elasticsearch-8.8.1/config/certs$ keytool -importcert -trustcacerts -noprompt -keystore transport.p12 -storepass Npb620rZQbuqyKvw1DT0xw -alias mac -file macOS.crt
Certificate was added to keystore
parallels@ubuntu2004:~/elastic/elasticsearch-8.8.1/config/certs$ keytool -keystore transport.p12 -list
Enter keystore password:  
Keystore type: PKCS12
Keystore provider: SUN

Your keystore contains 3 entries

mac, Jun 29, 2023, trustedCertEntry, 
Certificate fingerprint (SHA-256): BB:F1:F4:71:A3:19:0B:48:7A:E8:23:1A:DB:F1:01:3A:02:61:B7:C7:08:E1:68:1B:1E:2A:55:D1:D6:66:39:E2
transport, Jun 27, 2023, PrivateKeyEntry, 
Certificate fingerprint (SHA-256): 1B:69:D9:26:F2:4A:3C:91:CD:01:9F:DC:70:9D:3E:BA:97:FE:B2:67:FC:E9:62:46:AD:8A:74:41:F5:BB:CF:D3
transport_ca, Jun 29, 2023, trustedCertEntry, 
Certificate fingerprint (SHA-256): 53:ED:41:99:06:24:1D:86:37:07:0D:19:9B:7B:73:00:09:A8:D3:5D:E7:EF:DC:A4:CE:C7:26:6E:12:F2:A9:32

我们需要重新启动在两个操作系统中的 Elasticsearch。

测试集群之间的互信

我们接下来通过 Kibana 来测试集群之间的互信。按照一下的步骤来进行操作:

上面显示我们的连接是成功的。当然,我们也可以在 Ubuntu 机器安装的 Elasticsearch 来连接 macOS 上的安装,它也应该是成功的:

 

从上面的显示中,我们可以看到在 Ubuntu OS 上的 Elasticsearch 集群也可以成功地连接到 macOS 的机器上。

测试 CCR 

接下来,我们来做一些简单的测试来看看 CCR 是如何工作的。我们在 macOS 里的 Kibana 进行如下的操作。由于 CCR 是收费的功能,我们需要启动白金版试用功能。这个操作需要在两个集群里分别进行。

我们也可以通过如下的命令来启动试用功能:

$ curl -k -u elastic -X POST "https://localhost:9200/_license/start_trial?acknowledge=true"
Enter host password for user 'elastic':
{"acknowledged":true,"trial_was_started":false,"error_message":"Operation failed: Trial was already activated."}

或者直接在 Dev Tools 里打入如下的命令:

POST _license/start_trial?acknowledge=true

我们在 macOS 的 Elasticsearch 集群里打入如下的命令:

PUT twitter/_doc/1
{
  "content": "This is Xiaoguo from Elastic"
}

我们去 Ubuntu OS 的机器上,进行如下的操作:

经过一会儿:

我们去 Ubuntu OS 的 Dev Tools 里进如下操作:

我们可以看到 twitter_follower 里的文档已经是和在 macOS 里的 twitter 索引是一模一样的。我们可以去 macOS 的 Elasticsearch 集群里添加另外一个文档:

PUT twitter/_doc/2
{
  "content": "Xiaoguo is doing community work in Elastic"
}

我们再在 Ubuntu OS 的 Dev Tools 里进行查看:

很显然,我们这次有两个文档了。

Hooray! 我们终于在两个集群里进行了负责。当然,你也可以尝试双向复制哦。在 macOS 里复制在 Ubuntu OS 里的索引。这个就留个开发者你们自己来尝试了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/33770.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2核4G服务器_4M带宽_CPU性能测评_60G系统盘

阿里云2核4G服务器297元一年、4M公网带宽、60G系统盘,阿里云轻量应用服务器2核4G4M带宽配置一年297.98元,2核2G3M带宽轻量服务器一年108元12个月,如下图: 目录 阿里云2核4G4M轻量应用服务器 2核4G服务器限制条件 轻量服务器介…

Web安全——PHP基础

PHP基础 一、PHP简述二、基本语法格式三、数据类型、常量以及字符串四、运算符五、控制语句1、条件控制语句2、循环控制语句3、控制语句使用 六、php数组1、数组的声明2、数组的操作2.1 数组的合拼2.2 填加数组元素2.3 添加到指定位置2.4 删除某一个元素2.5 unset 销毁指定的元…

PyTorch开放神经网络交换(Open Neural Network Exchange)ONNX通用格式模型的熟悉

我们在深度学习中可以发现有很多不同格式的模型文件,比如不同的框架就有各自的文件格式:.model、.h5、.pb、.pkl、.pt、.pth等等,各自有标准就带来互通的不便,所以微软、Meta和亚马逊在内的合作伙伴社区一起搞一个ONNX(Open Neura…

【Spring Cloud系列】-负载均衡(Load Balancer,LB)

【Spring Cloud系列】-负载均衡(Load Balancer,LB) 文章目录 【Spring Cloud系列】-负载均衡(Load Balancer,LB)一、什么是负载均衡(Load Balancer,LB)二、负载均衡的主要…

vue2、vue3分别配置echarts多图表的同步缩放

文章目录 ⭐前言⭐使用dataZoom api实现echart的同步缩放💖 vue2实现echarts多图表同步缩放💖 vue3实现echarts多图表同步缩放 ⭐结束 ⭐前言 大家好!我是yma16,本文分享在vue2和vue3中配置echarts的多图表同步缩放 背景&#xf…

教你如何使用Nodejs搭建HTTP web服务器并发布上线公网

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 转载自内网穿透工具的文章:使用Nodejs搭建HTTP服务,并实现公网远程访问「内网穿透」 前言 Node.js…

自动驾驶开源数据集(附下载链接)

自动驾驶是带动新兴产业的一个突破点,也是中国结合新能源汽车,实现汽车产业弯道超车的不二手段,是打破国外燃油车技术壁垒的关键一步!它不会停止,只是在蓄势待发! 数据集介绍:点击 自动驾驶场…

使用MATLAB画SCI论文图

从gcf和gca说起 不论是 Python 绘图还是Matlab绘图,想要获得更好看的图,都会用到这两个单词。 gcf:get current figure,是目标图像的图形句柄对象 gca:get current axes,是目标图像的坐标轴句柄对象 Mat…

java 全局、局部异常处理详解及result结果封装

1、引入spring-boot-starter-web依赖和new-swagger依赖 <dependency><groupId>com.jjw</groupId><artifactId>new-swagger</artifactId><version>1.0-SNAPSHOT</version> </dependency> <dependency><groupId>or…

【Vue2】Vant2上传文件使用formData方式,base64图片转Blob再转File上传

文章目录 前言一、base64转换为 Blob 对象的方法二、使用步骤1.引入工具类js2.编写formData上传方法3.api方法中的request代码 三、实际操作1.html代码2.js代码 总结 前言 vant2上传组件传送门 使用vant2组件中的uploader组件 <van-uploader v-model"fileList" …

耳挂式骨传导耳机哪个牌子好,分享几个品牌的骨传导耳机

骨传导耳机就是利用震动来传递声音的耳机&#xff0c;在运动时佩戴骨传导耳机&#xff0c;可以听歌也能听周围的声音&#xff0c;提高了运动时的安全性。目前市面上的骨传导耳机也是琳琅满目。今天就来给大家分享下目前市面上比较常见的几款骨传导耳机。希望对正在选购骨传导耳…

什么是kafka,如何学习kafka,整合SpringBoot

目录 一、什么是Kafka&#xff0c;如何学习 二、如何整合SpringBoot 三、Kafka的优势 一、什么是Kafka&#xff0c;如何学习 Kafka是一种分布式的消息队列系统&#xff0c;它可以用于处理大量实时数据流。学习Kafka需要掌握如何安装、配置和运行Kafka集群&#xff0c;以及如…

代码随想录算法训练营第五十三天|1143.最长公共子序列、1035.不相交的线、53. 最大子序和 动态规划

最长公共子序列 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 和上一题一样&#xff0c;dp[i][j]代表&#xff1a; 长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j]确定递推公式 主要就是两大情况&#xff1a; text1[…

一步一步学OAK之三:实现RGB相机场景切换

目录 Setup 1: 创建文件Setup 2: 安装依赖Setup 3: 导入需要的包Setup 4: 遍历所有场景模式和特效模式Setup 5: 创建pipelineSetup 6: 创建节点Setup 7: 连接设备并启动管道Setup 8: 创建与DepthAI设备通信的输入队列和输出队列Setup 9: 定义putText函数Setup 10: 主循环获取视…

uni-app

uni-app 一、准备工作1.新建项目2.配置浏览器3.兼容4.新建页面 二、上手1.pages.json文件的页面配置与全局配置2.rpx尺寸单位3.内置组件4.vue写法 一、准备工作 uni-app文档 HBuilderX&#xff0c;H是HTML的首字母&#xff0c;Builder是构造者&#xff0c;X是HBuilder的下一代版…

实例005 可以拉伸的菜单界面

实例说明 如果管理程序功能菜单非常多&#xff0c;而用户只使用一些常用菜单&#xff0c;这时&#xff0c;可以将主菜单项下的不常用菜单隐藏起来。此种显示方式类似于对菜单进行拉伸。使用时&#xff0c;只需单击展开菜单&#xff0c;即可显示相应菜单功能。运行本例&#xf…

使用Python批量进行数据分析

案例01 批量升序排序一个工作簿中的所有工作表——产品销售统计表.xlsx import xlwings as xw import pandas as pd app xw.App(visible False, add_book False) workbook app.books.open(产品销售统计表.xlsx) worksheet workbook.sheets # 列出工作簿中的所有工作表 fo…

VVIC搜款网API接口:获取商品详情数据API

VVIC电商平台汇集了数千家优质品牌和供应商&#xff0c;包括服装、家居用品、电子产品、美妆产品、食品和饮料等各种商品。消费者可以在VVIC上找到各类品牌和产品&#xff0c;满足他们的购物需求。VVIC还提供了多种付款方式和物流配送服务&#xff0c;确保消费者的购物过程顺利…

第27章 uView 内置路由使用注意事项

1 uView 内置路由不支持通过“localhost”域名直接获取数据。 在前后分离开发中“axios” 路由支持使用“localhost”域名或IP地址获取后端的数据&#xff0c;所以不管是IIS部署还是后端调试通过“axios” 路由都能获取数据&#xff0c;对于.NetCore的前后端分离开发来说“axio…

NLP学习笔记(二)

文章目录 &#xff08;一&#xff09;负采样&#xff08;二&#xff09;GloVe1.带全局语料库的跳元模型2.GloVe模型3.问题4.跳元模型与GloVe模型的比较 &#xff08;三&#xff09;问题1.参数初始化2.梯度下降3.下游任务4.句法信息5.似然估计6.词向量表示 &#xff08;一&#…