通過(guò)OpenStore智能混合存儲(chǔ)實(shí)現(xiàn)海量數(shù)據(jù)存儲(chǔ)
本文中含有需要您注意的重要提示信息,忽略該信息可能對(duì)您的業(yè)務(wù)造成影響,請(qǐng)務(wù)必仔細(xì)閱讀。
OpenStore智能混合存儲(chǔ)引擎是阿里云Elasticsearch(簡(jiǎn)稱(chēng)ES)團(tuán)隊(duì)針對(duì)日志場(chǎng)景自研的彈性、高效、低成本的日志存儲(chǔ)引擎。智能混合存儲(chǔ)可突破傳統(tǒng)冷熱分離架構(gòu),大幅降低集群數(shù)據(jù)接入復(fù)雜度的同時(shí),進(jìn)一步降低云上海量數(shù)據(jù)的存儲(chǔ)成本。本文介紹使用OpenStore智能混合存儲(chǔ)實(shí)現(xiàn)海量數(shù)據(jù)存儲(chǔ)的方法。
背景信息
在日志全觀測(cè)場(chǎng)景下,通常因?yàn)闃I(yè)務(wù)場(chǎng)景或監(jiān)管需求,需要長(zhǎng)時(shí)間存儲(chǔ)數(shù)據(jù)或歸檔審計(jì)。在使用開(kāi)源Elasticsearch的過(guò)程中,需要進(jìn)行集群冷熱數(shù)據(jù)分離,將30天或者更長(zhǎng)時(shí)間的數(shù)據(jù)通過(guò)集群快照的方式存儲(chǔ)在其他存儲(chǔ)介質(zhì)上。該方式雖然能夠?qū)崿F(xiàn)長(zhǎng)期日志數(shù)據(jù)歸檔,但是存儲(chǔ)后不能直接進(jìn)行查詢(xún),查詢(xún)前需要調(diào)用相關(guān)API把快照信息恢復(fù)到集群中,等待快照中的索引初始化完成后再進(jìn)行查詢(xún),面臨著查詢(xún)復(fù)雜度大、長(zhǎng)時(shí)間存儲(chǔ)成本高的問(wèn)題。
OpenStore智能混合存儲(chǔ)引擎是阿里云Elasticsearch 7.10內(nèi)核增強(qiáng)版的重要功能,結(jié)合Indexing Service寫(xiě)入托管服務(wù),滿(mǎn)足用戶(hù)在日志場(chǎng)景下低成本的高并發(fā)寫(xiě)入及長(zhǎng)期數(shù)據(jù)存儲(chǔ)需求。
使用限制
購(gòu)買(mǎi)和使用OpenStore存儲(chǔ)時(shí),存在以下使用限制。
類(lèi)別 | 限制說(shuō)明 |
地域 | 目前僅開(kāi)放以下地域(具體以控制臺(tái)為準(zhǔn)):
|
實(shí)例版本 | 僅7.10版本實(shí)例支持開(kāi)啟Openstore智能混合存儲(chǔ)功能。 |
實(shí)例規(guī)格 | 僅支持選擇OpenStore存儲(chǔ)型8核64 GB、16核64 GB規(guī)格。 |
實(shí)例存儲(chǔ)容量 | 單節(jié)點(diǎn)最大存儲(chǔ)數(shù)據(jù)容量為30 TB。 說(shuō)明 如果您有更大的單節(jié)點(diǎn)存儲(chǔ)需求,請(qǐng)提交工單申請(qǐng),最大支持50 TB。 |
shard副本數(shù) | 開(kāi)啟OpenStore智能混合存儲(chǔ),shard副本數(shù)須大于等于1。 警告 多副本之間共享一份數(shù)據(jù),不增加額外存儲(chǔ)成本。多副本用于保證本地存儲(chǔ)寫(xiě)入加速的可靠性,如果未設(shè)置多副本可能會(huì)導(dǎo)致部分實(shí)時(shí)寫(xiě)入數(shù)據(jù)的丟失,丟失后數(shù)據(jù)無(wú)法恢復(fù)。 |
索引模板 |
詳細(xì)信息,請(qǐng)參見(jiàn)通過(guò)OpenStore智能混合存儲(chǔ)實(shí)現(xiàn)海量數(shù)據(jù)存儲(chǔ)。 說(shuō)明 手動(dòng)刪除OpenStore存儲(chǔ)索引時(shí),需要將索引及索引對(duì)應(yīng)的別名一起刪除才可刪除成功。 |
索引生命周期配置 | 不支持在索引生命周期中自定義freeze。 |
查詢(xún)限制 |
|
集群分片數(shù)限制 | 建議80000以下。 |
節(jié)點(diǎn)分片數(shù)限制 | 建議3000以下。 |
單分片大小 | 建議40 G以下。 |
數(shù)據(jù)盤(pán)寫(xiě)入吞吐 | 數(shù)據(jù)盤(pán)實(shí)際使用水位在85%以下,300 MB/s。 數(shù)據(jù)盤(pán)實(shí)際使用水位在85%以上,100 MB/s。 |
操作步驟
步驟一:開(kāi)啟OpenStore存儲(chǔ)
您可以在創(chuàng)建7.10內(nèi)核增強(qiáng)版實(shí)例時(shí),開(kāi)啟Openstore智能混合存儲(chǔ)功能。
- 登錄阿里云Elasticsearch控制臺(tái)。
- 在左側(cè)導(dǎo)航欄,單擊Elasticsearch實(shí)例。
在Elasticsearch實(shí)例頁(yè)面,單擊創(chuàng)建。
在購(gòu)買(mǎi)頁(yè)面,實(shí)例類(lèi)型選擇內(nèi)核增強(qiáng)版,Elasticsearch版本選擇7.10,在內(nèi)核增強(qiáng)特性的高級(jí)增強(qiáng)功能中選中Openstore智能混合存儲(chǔ)(日志場(chǎng)景)。
說(shuō)明除部分地域如德國(guó)(法蘭克福)、美國(guó)(弗吉尼亞)、日本(東京)外,開(kāi)啟Openstore智能混合存儲(chǔ)功能會(huì)同時(shí)開(kāi)啟Indexing Service索引構(gòu)建服務(wù),實(shí)際以控制臺(tái)為準(zhǔn)。
在實(shí)例規(guī)格中,選中數(shù)據(jù)節(jié)點(diǎn),選擇OpenStore混合存儲(chǔ)型規(guī)格族的規(guī)格,規(guī)格支持8核64G和16核64G兩種。
說(shuō)明每個(gè)OpenStore節(jié)點(diǎn)的最大存儲(chǔ)數(shù)據(jù)量為30 TB。如果您有更大的單節(jié)點(diǎn)存儲(chǔ)需求,請(qǐng)提交工單申請(qǐng),最大支持50 TB。
配置其他參數(shù)后,完成實(shí)例購(gòu)買(mǎi)。
說(shuō)明其他參數(shù)的配置信息,請(qǐng)參見(jiàn)創(chuàng)建阿里云Elasticsearch實(shí)例。
開(kāi)啟OpenStore后,建議您在控制臺(tái)關(guān)閉自動(dòng)快照備份功能,具體操作請(qǐng)參見(jiàn)關(guān)閉自動(dòng)備份。
步驟二:管理OpenStore索引模板
如果您的業(yè)務(wù)存在頻繁的Put Mapping操作,為避免消耗大量計(jì)算資源,對(duì)托管服務(wù)穩(wěn)定性造成影響,建議您寫(xiě)數(shù)據(jù)前提前定義索引模板,降低Put Mapping操作影響集群穩(wěn)定性。
方法一:通過(guò)控制臺(tái)管理索引模板
進(jìn)入已開(kāi)啟OpenStore存儲(chǔ)的目標(biāo)實(shí)例,在左側(cè)導(dǎo)航欄選擇 。
單擊索引模板管理頁(yè)簽。
在索引模板管理頁(yè)面,管理您集群中的索引模板。
阿里云Elasticsearch為您提供了OpenStore定制索引模板,您可以查看并修改OpenStore定制的索引模板和生命周期策略,將定制模板快速應(yīng)用到您的業(yè)務(wù)索引上。您也可以創(chuàng)建自定義的索引模板,并配置生命周期策略。具體說(shuō)明如下:
說(shuō)明由于OpenStore索引數(shù)據(jù)默認(rèn)寫(xiě)入熱節(jié)點(diǎn),達(dá)到ILM周期后會(huì)遷移到OpenStore存儲(chǔ),因此不支持在OpenStore索引或模板中配置index.routing.allocation.require.box_type參數(shù)。
如果您需要在控制臺(tái)管理索引模板,例如修改Openstore定制索引模板、創(chuàng)建自定義組合模板:
1.8及以下內(nèi)核版本必須在索引模板配置 > 內(nèi)容模板配置 > 組合內(nèi)容模板中選中
component-hybrid-openstore-index-template
模板,確保數(shù)據(jù)默認(rèn)寫(xiě)入OpenStore,避免業(yè)務(wù)數(shù)據(jù)量過(guò)大導(dǎo)致集群磁盤(pán)不夠用。1.9及以上內(nèi)核不需要手動(dòng)指定
component-hybrid-openstore-index-template
模板,系統(tǒng)將自動(dòng)應(yīng)用相關(guān)配置。
查看并修改OpenStore定制的索引模板和生命周期策略:
單擊索引模板或生命周期策略名稱(chēng),查看OpenStore定制的索引模板和生命周期策略。
OpenStore智能混合存儲(chǔ)對(duì)應(yīng)的索引模板名稱(chēng)為hybrid_openstore_index_template,生命周期策略名稱(chēng)為hybrid_openstore_default_ilm_policy。
單擊索引模板或生命周期策略右側(cè)的修改,修改定制的索引模板和生命周期策略。
定制化的OpenStore模板默認(rèn)僅對(duì)log-service-*索引進(jìn)行管理。修改時(shí)可將索引模式指定為業(yè)務(wù)索引名稱(chēng),并開(kāi)啟創(chuàng)建數(shù)據(jù)流,定制模板即可快速應(yīng)用到業(yè)務(wù)索引上。
單擊確認(rèn)。
創(chuàng)建自定義索引模板,并配置生命周期策略:
單擊創(chuàng)建索引模板。
在索引生命周期策略配置向?qū)е校瑓⒖枷聢D配置索引生命周期策略。
詳細(xì)參數(shù)說(shuō)明,請(qǐng)參見(jiàn)創(chuàng)建索引模板。
說(shuō)明Indexing Service實(shí)例建議開(kāi)啟滾動(dòng)更新,保證數(shù)據(jù)滾動(dòng)更新后自動(dòng)取消云托管能力。
當(dāng)OpenStore存儲(chǔ)類(lèi)型為智能混合存儲(chǔ)時(shí),無(wú)冷階段。
取消托管時(shí)間默認(rèn)為3天,3天后自動(dòng)退出Indexing Service寫(xiě)入托管服務(wù),減少計(jì)費(fèi)開(kāi)銷(xiāo)。如果您設(shè)置的時(shí)長(zhǎng)超過(guò)冷階段或刪除階段的開(kāi)始時(shí)間,索引進(jìn)入相應(yīng)階段后會(huì)自動(dòng)取消托管。取消托管后索引變成只讀,索引將不再通過(guò)Indexing Service進(jìn)行寫(xiě)入加速。
單擊保存并下一步,在索引模板配置向?qū)е校瑓⒖枷聢D配置索引模板。
詳細(xì)參數(shù)說(shuō)明,請(qǐng)參見(jiàn)創(chuàng)建索引模板。
說(shuō)明1.9及以上內(nèi)核不需要指定
component-hybrid-openstore-index-template
模板,系統(tǒng)將自動(dòng)應(yīng)用openstore相關(guān)配置。Indexing Service實(shí)例開(kāi)啟創(chuàng)建數(shù)據(jù)流后,才可在數(shù)據(jù)流管理頁(yè)面管理寫(xiě)入的索引。詳細(xì)信息請(qǐng)參見(jiàn)將數(shù)據(jù)流寫(xiě)入OpenStore索引。
以下參數(shù)無(wú)需在實(shí)例控制臺(tái)settings中指定,否則頁(yè)面報(bào)錯(cuò):
index.lifecycle.name(產(chǎn)品將自動(dòng)配置)
index.apack.cube.following_index(產(chǎn)品將自動(dòng)配置)
index.routing.allocation.require.box_type(日志增強(qiáng)版實(shí)例不支持指定該參數(shù))
單擊確認(rèn)。
方法二:通過(guò)API管理索引模板
從Elasticsearch 7.10版本開(kāi)始,索引模板默認(rèn)會(huì)使用優(yōu)先級(jí)最高的配置,不會(huì)自動(dòng)組合兩個(gè)索引模板內(nèi)的配置。由于集群中已經(jīng)存在默認(rèn)的OpenStore索引模板,如果您需要再通過(guò)API自定義索引模板,而這兩個(gè)模板的配置不會(huì)自動(dòng)組合,因此可能會(huì)影響OpenStore功能的正常使用,所以建議您使用Elasticsearch組合模板進(jìn)行配置。
阿里云Elasticsearch不支持通過(guò)Kibana Stack Management管理OpenStore內(nèi)容模板及策略,建議使用API操作或控制臺(tái)索引管理中心進(jìn)行配置管理。
創(chuàng)建混合存儲(chǔ)索引模板
開(kāi)啟OpenStore智能混合存儲(chǔ)后,集群中會(huì)默認(rèn)添加組合模板component-hybrid-openstore-index-template。自定義模板時(shí),請(qǐng)按照實(shí)例對(duì)應(yīng)的內(nèi)核選擇以下方式創(chuàng)建模板:
1.8.0及以下內(nèi)核實(shí)例創(chuàng)建模板時(shí)需指定component-hybrid-openstore-index-template,該模板中包含了該集群的專(zhuān)有環(huán)境配置,涉及訪問(wèn)權(quán)限控制,非必要請(qǐng)勿修改,以免影響集群功能。
PUT _index_template/test-template { "index_patterns" : [ "test-index-*" ], "template" : { "settings" : { "index.number_of_replicas": "1", "index.number_of_shards": "6", "index.lifecycle.name": "zlopenstore_default_ilm_policy" }, "aliases" : {} }, "composed_of" : [ # 混合存儲(chǔ)組合模板 "component-hybrid-openstore-index-template" ], "priority" : 100 }
1.9及以上內(nèi)核小版本實(shí)例無(wú)需手動(dòng)執(zhí)行,默認(rèn)會(huì)應(yīng)用openstore模板。開(kāi)啟Indexing service的實(shí)例通過(guò)API自定義模板時(shí),必須將
index.apack.cube.following_index
設(shè)置為true,否則無(wú)法托管索引。PUT _index_template/test-template { "index_patterns" : [ # 索引模板 "test-index-*" ], "template" : { "settings" : { "index.number_of_replicas": "1", "index.number_of_shards": "6", "index.lifecycle.name": "zlopenstore_default_ilm_policy", "index.apack.cube.following_index": true }, "aliases" : {} }, "priority" : 100 }
本文中的腳本均可在Kibana控制臺(tái)上運(yùn)行,具體操作請(qǐng)參見(jiàn)登錄Kibana控制臺(tái)。
以下腳本中的
...
表示省略部分配置。實(shí)際運(yùn)行時(shí),需要?jiǎng)h除腳本中的注釋信息。
自定義混合存儲(chǔ)策略
以下示例創(chuàng)建了名稱(chēng)為zlopenstore_default_ilm_policy的生命周期策略,并在模板的基礎(chǔ)上添加了delete階段的配置。
PUT _ilm/policy/zlopenstore_default_ilm_policy
{
"policy" : {
"phases" : {
"hot" : {
"min_age" : "0s",
"actions" : {
"rollover" : {
"max_size" : "50gb",
"max_age" : "30d",
"max_docs" : 10000
},
"cube_unfollow" : {
"max_age" : "3d",
"force_merge" : true,
"force" : false,
"read_only" : true
},
"set_priority" : {
"priority" : 1000
}
}
},
"delete" : {
"min_age" : "30d",
"actions" : {
"delete" : {
"delete_searchable_snapshot" : true
}
}
}
}
}
}
參數(shù) | 說(shuō)明 |
rollover | 配置rollover滾動(dòng)更新策略。 |
cube_unfollow | 配置Indexing Service退出托管策略。 |
delete | 配置索引過(guò)期刪除策略。 |
獲取默認(rèn)混合存儲(chǔ)策略
開(kāi)啟OpenStore智能混合存儲(chǔ)的實(shí)例默認(rèn)提供其依賴(lài)的內(nèi)容模板和生命周期策略,您可以通過(guò)對(duì)應(yīng)命令獲取配置信息:
通過(guò)
GET _component_template/component-hybrid-openstore-index-template
命令獲取內(nèi)容模板{ "component_templates" : [ { "name" : "component-hybrid-openstore-index-template", "component_template" : { "template" : { "settings" : { "index" : { "replication" : { "type" : "segment" }, "apack" : { "cube" : { "following_index" : "true" } }, "codec" : "OpenIndex", "allocation" : { "existing_shards_allocator" : "open_store_allocator" }, "refresh_interval" : "1s", "store" : { "type" : "openstore", "openstore" : { "endpoint" : "http://oss-cn-hangzhou-internal.aliyuncs.com", "ram_name" : "snapshot-role-133071096032****", "type" : "hybrid", "bucket_name" : "openstore-133071096032****-es-cn-2r42xjwrz0008****" } } } } } } } ] }
重要建議直接采用模板中的默認(rèn)配置,盡量避免手動(dòng)配置,以免影響集群使用。
通過(guò)
GET _ilm/policy/hybrid_openstore_default_ilm_policy
命令獲取生命周期策略{ "hybrid_openstore_default_ilm_policy" : { "version" : 1, "modified_date" : "2022-09-08T03:51:23.042Z", "policy" : { "phases" : { "hot" : { "min_age" : "0ms", "actions" : { "cube_unfollow" : { "max_age" : "3d", "force_merge" : true, "force" : false, "read_only" : true } } } } } } }
actions中的cube_unfollow參數(shù)用來(lái)設(shè)置Indexing Service退出寫(xiě)入托管的相關(guān)配置,默認(rèn)3天退出Indexing Service寫(xiě)入托管。
步驟三:將數(shù)據(jù)流寫(xiě)入OpenStore索引
切換到數(shù)據(jù)流管理頁(yè)簽,單擊創(chuàng)建數(shù)據(jù)流。
說(shuō)明僅7.10版本同時(shí)開(kāi)啟Openstore和Indexing Service的實(shí)例支持在控制臺(tái)進(jìn)行數(shù)據(jù)流管理,單獨(dú)開(kāi)啟Openstore的實(shí)例暫不支持在控制臺(tái)進(jìn)行數(shù)據(jù)流管理。建議您使用數(shù)據(jù)流相關(guān)API(CreateDataStream、RolloverDataStream、ListDataStreams、DeleteDataStream)管理數(shù)據(jù)。
輸入與索引模板匹配的數(shù)據(jù)流名稱(chēng),單擊確定。
數(shù)據(jù)流名稱(chēng)需要一個(gè)匹配的索引模板,此處需要輸入ds-您在步驟二:管理OpenStore索引模板中定義的OpenStore索引模板名稱(chēng)。如果您忘記已創(chuàng)建的索引模板名稱(chēng),可單擊預(yù)覽已有索引模板查看。
登錄Kibana控制臺(tái),通過(guò)bulk批量寫(xiě)入數(shù)據(jù)。
在寫(xiě)入數(shù)據(jù)時(shí),您可以通過(guò)設(shè)置寫(xiě)入的文檔數(shù)量超過(guò)生命周期配置中文件數(shù)限制參數(shù)設(shè)置的值進(jìn)行測(cè)試。文件數(shù)限制參數(shù)設(shè)置的值,可在步驟二:管理OpenStore索引模板中查看。
切換至索引管理頁(yè)簽,查看OpenStore索引的寫(xiě)入托管狀態(tài)、當(dāng)前生命周期階段等信息。
常見(jiàn)問(wèn)題
Q:索引數(shù)據(jù)存儲(chǔ)至OpenStore后,為什么無(wú)法寫(xiě)入更新,只能讀取?
A:集群提供的openstore_default_ilm_policy的actions中指定了force_merge_index參數(shù)為true,不可更改。當(dāng)索引force_merge后,索引將處于只讀狀態(tài),無(wú)法寫(xiě)入。
Q:如何將Elasticsearch數(shù)據(jù)遷移到OpenStore混合存儲(chǔ)中?
A:您可以通過(guò)OSS快照備份功能將Elasticsearch數(shù)據(jù)遷移到OpenStore混合存儲(chǔ)中。具體操作,請(qǐng)參見(jiàn)將Elasticsearch數(shù)據(jù)遷移到OpenStore智能混合存儲(chǔ)和將OSS快照數(shù)據(jù)恢復(fù)至阿里云Elasticsearch OpenStore中。