Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication 为集群之间建立互信

这篇具有很好参考价值的文章主要介绍了Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication 为集群之间建立互信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

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

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

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

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

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

多集群架构

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

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

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

灾难恢复和高可用性

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

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

单一灾难恢复数据中心

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

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

多个容灾数据中心

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

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

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

链式复制

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

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

双向复制

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

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

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

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

数据局部性

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

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

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

集中报告

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

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

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

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

复制机制

虽然你在索引级别设置跨集群复制,但 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 来进行展示。我们将以如下的架构来进行展示:

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

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

config/elasticsearch.yml - macOS

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

config/elasticsearch.yml - ubuntu

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

针对非 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

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

从上面的输出中,我们可以看到我们已经得到了 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

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

从上面,我们可以看出来,它里面有两个证书。现在我们使用如下的方法把 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

 Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

按照同样的方法,我们在 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:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

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

测试集群之间的互信

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

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

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

 Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

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

测试 CCR 

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

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

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

$ 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 的机器上,进行如下的操作:

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

经过一会儿:

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

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

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

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

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

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

Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication
为集群之间建立互信

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

Hooray! 我们终于在两个集群里进行了负责。当然,你也可以尝试双向复制哦。在 macOS 里复制在 Ubuntu OS 里的索引。这个就留个开发者你们自己来尝试了。文章来源地址https://www.toymoban.com/news/detail-508210.html

到了这里,关于Elasticsearch:跨集群复制应用场景及实操 - Cross Cluster Replication 为集群之间建立互信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据转换工具DBT介绍及实操(上)

    一、什么是DBT dbt (data build tool)是一款流行的开源数据转换工具,能够通过 SQL 实现数据转化,将命令转化为表或者视图,提升数据分析师的工作效率。dbt 主要功能在于转换数据库或数据仓库中的数据,在 E(Extract)、L(Load)、T(Transform) 的流程中,仅负责转换(transf

    2024年02月12日
    浏览(40)
  • Android+Appium自动化测试环境搭建及实操

     Appium是一个开源的移动端自动化测试工具,适用于 移动端原生APP、移动Web APP或混合APP 的自动化测试;  Appium继承了Selenium(Web端自动化测试工具),应用 WebDriver (JSON wire protocol)技术,借助操作系统自带的测试框架来驱动Android和IOS应用。 特点 :Appium是一个开源、跨平台、多

    2024年02月08日
    浏览(61)
  • if __name__ == ‘__main__‘详细解释及实操演示

    在Python中,每个模块都有一个内置的变量 name ,用于表示 当前模块的名称 。当一个Python文件被执行时,Python解释器会首先将该文件作为一个模块导入,并执行其中的代码。此时,__name__的值为模块的名称。 if name == ‘ main ’ 是一个常见的用法,它的意思是:当该模块被直接

    2024年02月16日
    浏览(32)
  • 【postgresql 基础入门】自然连接(natural join)与交叉连接(cross join),等价SQL变换形式,以及它们独到的应用场景

    ​ 专栏内容 : postgresql内核源码分析 手写数据库toadb 并发编程 个人主页 :我的主页 管理社区 :开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 本文重点介绍natural join与cross join的用法,以及它们的应用场景。 与前面介绍的left join, right join, inner

    2024年04月13日
    浏览(33)
  • elasticsearch高级功能之跨集群复制CCR

    CCR功能允许用户在不同的Elasticsearch集群之间同步索引数据。这对于实现跨集群复制、数据备份、灾难恢复和多数据中心部署等场景非常有用。 CCR功能提供了实时的、异步的、可靠的跨集群数据同步,能够有效地将变更事件从一个集群复制到另一个集群。通过CCR,用户可以保

    2024年02月16日
    浏览(45)
  • elasticsearch系列九:异地容灾-CCR跨集群复制

    概述    起初只在部分业务中采用es存储数据,在主中心搭建了个集群,随着es在我们系统中的地位越来越重要,数据也越来越多,针对它的安全性问题也越发重要,那如何对es做异地容灾呢?    今天咱们就一起看下官方提供的解决方案cross-cluster replication(简称ccr)。 环境准

    2024年02月04日
    浏览(45)
  • 融智学应用场景实训实操文化基因系统工程实践指南讲座音频

    俗话说,听君一席话胜读十年书。戴上耳机闭目倾听(语言哲学和语言科学基础之上的融智学): “融智学应用场景实训实操文化基因系统工程实践指南讲座音频”(一共七章)随之便会发现,原来汉字汉语暨中文实质上早已发展成为了新的世界多语思维辨析各式各样歧义的

    2024年02月20日
    浏览(34)
  • 数据库应用:Redis主从复制、哨兵、cluster集群

    目录 一、理论 1.Redis高可用 2.Redis主从复制 3.部署Redis主从复制 4.Redis哨兵模式 5.部署Redis哨兵模式 6.Redis集群模式 7.部署Redis集群 二、实验 1.部署Redis主从复制 2.部署Redis哨兵模式 3.部署Redis集群 三、问题 1.开启Redis群集失败 四、总结 (1)概念 在web服务器中,高可用是指服务

    2024年02月15日
    浏览(40)
  • ZooKeeper的应用场景(集群管理、Master选举)

    随着分布式系统规模的日益扩大,集群中的机器规模也随之变大,因此,如何更好地进行集群管理也显得越来越重要了。 所谓集群管理,包括集群监控与集群控制两大块,前者侧重对集群运行时状态的收集,后者则是对集群进行操作与控制。在日常开发和运维过程中,我们经

    2024年02月12日
    浏览(33)
  • Elasticsearch应用场景(三)

            ES最擅长的是充当搜索引擎,在这类场景中较典型的应用领域是垂直搜索,如电商搜索、地图搜索、新闻搜索等各类站内搜索。         创建索引时,业务系统模块把数据存储到数据库中,第三方数据同步模块(如Canal)负责将数据库中的数据按照业务需求同步

    2023年04月08日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包