概述
???起初只在部分業(yè)務中采用es存儲數(shù)據(jù),在主中心搭建了個集群,隨著es在我們系統(tǒng)中的地位越來越重要,數(shù)據(jù)也越來越多,針對它的安全性問題也越發(fā)重要,那如何對es做異地容災呢?
? ?今天咱們就一起看下官方提供的解決方案cross-cluster replication(簡稱ccr)。
環(huán)境準備
物理機:96核 64G 2THDD ??國產(chǎn)UOS系統(tǒng)的服務器一臺 ip 192.168.229.48
? ?
通過docker快速啟動2個es 節(jié)點、2個kibana節(jié)點,es2個節(jié)點為2套獨立集群。
名稱 | ip | 版本 |
---|---|---|
es | 172.17.0.2 172.17.0.4 |
7.15.0 |
kibana | 7.15.0 | |
jdk | openjdk version?16.0.2 |
進程如下圖:??
規(guī)劃:172.17.0.2 為master ?172.17.0.4 為follower ?? ?
設置CCR
? ? ? 由于CCR是收費版本,如果購買公有云的服務就自帶這個功能,此處我們通過試用30天來體驗一下。
? ? ? 我們先在0.4所在的kibana上打開ccr設置主節(jié)點的信息如下圖:
? ? ? 接口級設置:
PUT _cluster/settings
{
"persistent": {
"cluster": {
"remote": {
"ccr_test": {
"skip_unavailable": false,
"mode": "sniff",
"proxy_address": null,
"proxy_socket_connections": null,
"server_name": null,
"seeds": [
"192.168.229.48:9300"
],
"node_connections": 3
}
}
}
}
}
? ? ??
? ? ? 該功能采用TCP協(xié)議,所以我們設置默認端口9300,設置完以后如下圖:
?? ? ?并且該功能是基于索引級別的,提供2種方式:創(chuàng)建指定索引同步、自動同步按照索引規(guī)則,接下來我們看下2種情況分別如何設置。
設置特定的索引同步
打開follower的kibana,找到ccr設置項如下圖:
可以創(chuàng)建一個同步任務,此處只能單個索引設置同步。
接口級設置:
PUT /ccr_test/_ccr/follow
{
"remote_cluster": "ccr_test",
"leader_index": "ccr_test",
"max_read_request_operation_count": 5120,
"max_outstanding_read_requests": 12,
"max_read_request_size": "32mb",
"max_write_request_operation_count": 5120,
"max_write_request_size": "9223372036854775807b",
"max_outstanding_write_requests": 9,
"max_write_buffer_count": 2147483647,
"max_write_buffer_size": "512mb",
"max_retry_delay": "500ms",
"read_poll_timeout": "1m"
}
創(chuàng)建以后我們就可以在主節(jié)點上對索引ccr_test進行crud操作了,在主節(jié)點上新增4百萬的數(shù)據(jù),再去follower上查看發(fā)現(xiàn)數(shù)據(jù)成功同步過來。
但是這種方式有局限性,因為實際生產(chǎn)環(huán)境可能有n個索引,比如這種按天生成的日志數(shù)據(jù)索引如何同步呢?總不能一個個的配置吧,接下來我們就看下自動同步。
設置自動同步
? ? ??我們打開自動同步,添加一個自動任務,通過彈框發(fā)現(xiàn)按照固定的格式設置索引同步:
接口級設置:???????
PUT /_ccr/auto_follow/auto-log
{
"remote_cluster": "ccr_test",
"leader_index_patterns": [
"log-server-*"
],
"follow_index_pattern": "{{leader_index}}"
}
這樣我們就可以將log-server-開頭的索引設置自動同步了,此時我們在主節(jié)點新增一個索引:???????
POST /log-server-2023-12-25/_doc/1
{
"name": "John Doe",
"age": 30,
"email": "johndoe@example.com"
}
接著去從節(jié)點上看下發(fā)現(xiàn)數(shù)據(jù)已經(jīng)同步成功
總結
以上就是es官方針對跨集群同步的解決方案,官方文檔:? ?https://www.elastic.co/guide/en/elasticsearch/reference/7.17/ccr-getting-started-tutorial.html#ccr-getting-started-tutorial
? ? ? 當然還有其他的方案比如應用雙寫、自研數(shù)據(jù)同步、MQ雙寫等等。對于自己維護的集群來通過MQ雙寫相對簡單,對于公有云服務還是官方的解決方案更為合適。
? ? ? 好了今天的分享就到這了,有什么疑問歡迎留言討論。
Elasticsearch系列經(jīng)典文章
-
elasticsearch列一:索引模板的使用
-
elasticsearch系列二:引入索引模板后發(fā)現(xiàn)數(shù)據(jù)達到一定量還是慢怎么辦?
-
elasticsearch系列三:常用查詢語法
-
elasticsearch系列四:集群常規(guī)運維
-
elasticsearch系列五:集群的備份與恢復
-
elasticsearch系列六:索引重建
-
elasticsearch系列七:聚合查詢
-
elasticsearch系列八:如何解決聚合結果不精確問題文章來源:http://www.zghlxwxcb.cn/news/detail-766856.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-766856.html
到了這里,關于elasticsearch系列九:異地容災-CCR跨集群復制的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!