Easysearch 跨集群復(fù)制實(shí)戰(zhàn)
在之前的文章中,有通過網(wǎng)關(guān)實(shí)現(xiàn)容災(zāi)的案例。今天給大家介紹 Easysearch 的跨集群復(fù)制功能。該功能可在集群之間復(fù)制數(shù)據(jù),應(yīng)用場(chǎng)景包括但不限于以下舉例:
災(zāi)備同步:將數(shù)據(jù)同步到災(zāi)備中心,災(zāi)備中心可對(duì)外提供查詢服務(wù)。
讀寫分離:?jiǎn)我患鹤x寫壓力都較大時(shí),為了避免讀寫互相干擾造成性能降級(jí),可將讀壓力分流到另外的集群。
就近查詢:在多地中心之間復(fù)制數(shù)據(jù),應(yīng)用只需連接本地 ES 集群讀取數(shù)據(jù),避免網(wǎng)絡(luò)延時(shí)和干擾。
跨集群復(fù)制使用 active-passive 模型,由目標(biāo)集群主動(dòng)拉取數(shù)據(jù)變化到本地,因此對(duì)源集群影響很小。
先決條件
源集群和目標(biāo)集群都必須安裝 cross-cluster-replication 和 index-management 插件。安裝插件參考這里。
如果目標(biāo)集群的 easysearch.yml 文件中覆蓋了 node.roles,確保它也包括 remote_cluster_client 角色,默認(rèn)已啟用。
演示環(huán)境
源集群( leader 集群 ): 192.168.3.45:9200
目標(biāo)集群( follower 集群 ): 192.168.3.39:9200
兩個(gè)集群都已啟用 security 功能。
設(shè)置集群間證書互信
將兩個(gè)集群的證書合并到一個(gè)文件,將文件放到 config 目錄下。
更新 easysearch.yml 文件,變化如下。
設(shè)置跨群集連接
在目標(biāo)集群建立源集群的連接信息。在 INFINI console 的開發(fā)工具中,選中目標(biāo)集群,執(zhí)行以下命令。
開始復(fù)制
首先在源集群創(chuàng)建測(cè)試索引 test , 并向索引寫入數(shù)據(jù)。如果有測(cè)試索引,此步可省略。
然后在目標(biāo)集群,創(chuàng)建一個(gè)名為 follower-test 的索引來復(fù)制源集群中 test 索引的內(nèi)容。follower-test 可更換成自己想要的名字。
leader_alias 指定之前創(chuàng)建的連接名稱 primary 。
leader_index 指定想要復(fù)制的索引名稱 test 。
use_roles 指定用什么角色訪問對(duì)應(yīng)的集群,為了安全使用最小權(quán)限,命令中的角色是系統(tǒng)自帶的。
命令執(zhí)行完后,會(huì)在目標(biāo)集群建立名為 follower-test 的索引,其內(nèi)容來自源集群的 test 索引。 我們可以看到,其內(nèi)容就是之前插入的兩個(gè)文檔。

確認(rèn)復(fù)制狀態(tài)
可以看到 follow-test 處于同步的狀態(tài)會(huì)實(shí)時(shí)同步遠(yuǎn)端的數(shù)據(jù)。

在源集群再插入數(shù)據(jù),看是否會(huì)同步。
目標(biāo)集群查詢索引,文檔 3 和 4 已同步。

暫停和恢復(fù)復(fù)制
如果需要停機(jī)維護(hù)或其他原因想暫停復(fù)制功能,可使用暫停和恢復(fù)索引復(fù)制。
暫停
暫停目標(biāo)集群上的索引復(fù)制。源集群索引再有新的變化,不會(huì)進(jìn)行同步。
暫停后查看索引復(fù)制狀態(tài)為 PAUSED 。

恢復(fù)
恢復(fù)目標(biāo)集群上的索引復(fù)制。
停止復(fù)制
為了保證數(shù)據(jù)的一致性,目標(biāo)集群上的 follower 索引都是只讀的。如果要切換到可讀寫的狀態(tài),需要先停止復(fù)制。我們先直接寫入數(shù)據(jù),會(huì)報(bào)禁止該操作。

停止復(fù)制
執(zhí)行停止復(fù)制命令,索引變?yōu)榭勺x寫狀態(tài),一個(gè)獨(dú)立狀態(tài),不再會(huì)從源端復(fù)制內(nèi)容。想要?jiǎng)h除索引之前,也要先停止復(fù)制。
再次寫入數(shù)據(jù)測(cè)試,成功。

自動(dòng)跟隨
前面給大家演示了單個(gè)索引的復(fù)制操作,對(duì)于每天自動(dòng)創(chuàng)建一個(gè)索引的場(chǎng)景(日期后綴),這樣的操作不免太麻煩了??缂簭?fù)制的自動(dòng)跟隨功能,可以在目標(biāo)集群建立一個(gè)復(fù)制模式,如果源集群新建索引名稱匹配該模式,目標(biāo)集群會(huì)自動(dòng)創(chuàng)建一個(gè)索引來復(fù)制它。
創(chuàng)建復(fù)制模式
先在目標(biāo)集群建立一個(gè)復(fù)制模式,模式名叫 nginx-index ,會(huì)自動(dòng)復(fù)制源集群上 nginx 開頭的索引。
源集群創(chuàng)建 nginx 開頭的索引。
目標(biāo)集群查看復(fù)制結(jié)果。

停止自動(dòng)跟隨
如果不想復(fù)制新創(chuàng)建 nginx 開頭的索引,可以使用停止跟隨。停止自動(dòng)跟隨僅僅停止任何新的自動(dòng)跟隨活動(dòng),不會(huì)停止現(xiàn)存自動(dòng)跟隨啟動(dòng)的復(fù)制。
上述命令不會(huì)影響目標(biāo)集群上 nginx-1 和 nginx-2 索引的復(fù)制。而且 nginx-1 和 nginx-2 索引是只讀的,如果要切換到讀寫狀態(tài),先停止復(fù)制。
小結(jié)
這次實(shí)戰(zhàn)主要演示了跨集群復(fù)制的操作過程:
建立證書互信
目標(biāo)集群創(chuàng)建跨集群連接
開始復(fù)制:?jiǎn)嗡饕蜃詣?dòng)跟隨復(fù)制
管理復(fù)制:暫停、查看狀態(tài)、恢復(fù)、停止、刪除自動(dòng)跟隨
好的,這次跨集群復(fù)制實(shí)戰(zhàn)就到這里了,更多的內(nèi)容大家可參考官方文檔。如遇到問題,可以通過微信群、discord?聯(lián)系我們。
關(guān)于極限科技(INFINI Labs)
極限科技,全稱極限數(shù)據(jù)(北京)科技有限公司,是一家專注于實(shí)時(shí)搜索與數(shù)據(jù)分析的軟件公司。旗下品牌極限實(shí)驗(yàn)室(INFINI Labs)致力于打造極致易用的數(shù)據(jù)探索與分析體驗(yàn)。
極限科技是一支年輕的團(tuán)隊(duì),采用天然分布式的方式來進(jìn)行遠(yuǎn)程協(xié)作,員工分布在全球各地,希望通過努力成為中國(guó)乃至全球企業(yè)大數(shù)據(jù)實(shí)時(shí)搜索分析產(chǎn)品的首選,為中國(guó)技術(shù)品牌輸出添磚加瓦。