01 stash訂閱配置文件(蘋果stash怎么用)

时间:2024-05-17 05:01:53 编辑: 来源:

蘋果stash怎么用

使用教程:

1.登錄速蛙云網站,展開左側導航欄,選擇訂閱中心;

2.選擇對應的客戶端,拷貝訂閱鏈接(這里建議選擇買粉絲);

3.導入配置;

4.啟動軟件;

5.在策略組中選擇或更換節點;

6.關于出站模式的選擇;

全局代理:所有請求直接發往代理服務器;

規則模式:所有請求根據配置文件規則進行分流;

直直接連接:所有請求直接發往目的地。

ClickHouse數據導入

目前Kafka數據導入ClickHouse的常用方案有兩種,一種是通過ClickHouse內置的Kafka表引擎實現,另一種是借助數據流組件,如Logstash。

以下會分別介紹這兩種方案。

Kafka表引擎基于librdkafka庫實現與Kafka的通信,但它只充當一個數據管道的角色,負責拉取Kafka中的數據;所以還需要一張物化視圖將Kafka引擎表中的數據實時同步到本地MergeTree系列表中。

為了提高性能,接受的消息被分組為 maxinsertblocksize 大小(由kafkamax_block_size參數空值,默認值為65536)的塊。如果未在 streamflushinterval_ms 毫秒(默認500 ms)內形成塊,則不關心塊的完整性,都會將數據刷新到表中。

相關配置參數:

買粉絲s://github.買粉絲/edenhill/librdkafka/blob/master/CONFIGURATION.md

1)部署Kafka

2)創建Kafka引擎表

必選參數:

可選參數:

3)創建數據表

使用已有的數據表,以下只給出了分布表的創建語句。

4)創建物化視圖

與Elasticsearch寫入類似,通過Logstash的ClickHouse插件,訂閱Kafka中的數據并寫入CH中。其中,ClickHouse插件調用HTTP接口完成數據寫入。

1)部署Logstash

部署Logstash,并安裝ClickHouse插件:

2)創建Logstash配置文件

相關參數:

3)啟動Logstash

Kafka引擎表和Logstash都是常見的數據導入方式,

Elasticsearch數據遷移與集群容災

本文討論如何跨集群遷移ES數據以及如何實現ES的同城跨機房容災和異地容災。

在ES的生產實踐中,往往會遇到以下問題:

根據業務需求,存在以下場景:

如果是第一種場景,數據遷移過程中可以停止寫入,可以采用諸如elasticsearch-mp、logstash、reindex、snapshot等方式進行數據遷移。實際上這幾種工具大體上可以分為兩類:

如果是第二種場景,數據遷移過程中舊集群不能停止寫入,需要根據實際的業務場景解決數據一致性的問題:

下面介紹一下在舊集群可以停止寫入的情況下進行數據遷移的幾種工具的用法。

elasticsearch-mp是一款開源的ES數據遷移工具,github地址: 買粉絲s://github.買粉絲/taskrabbit/elasticsearch-mp

以下操作通過elasticmp命令將集群x.x.x.1中的買粉絲panydatabase索引遷移至集群x.x.x.2。注意第一條命令先將索引的settings先遷移,如果直接遷移mapping或者data將失去原有集群中索引的配置信息如分片數量和副本數量等,當然也可以直接在目標集群中將索引創建完畢后再同步mapping與data

logstash支持從一個ES集群中讀取數據然后寫入到另一個ES集群,因此可以使用logstash進行數據遷移,具體的配置文件如下:

reindex是Elasticsearch提供的一個api接口,可以把數據從一個集群遷移到另外一個集群。

snapshot api是Elasticsearch用于對數據進行備份和恢復的一組api接口,可以通過snapshot api進行跨集群的數據遷移,原理就是從源ES集群創建數據快照,然后在目標ES集群中進行恢復。需要注意ES的版本問題:

如果舊集群不能停止寫入,此時進行在線數據遷移,需要保證新舊集群的數據一致性。目前看來,除了官方提供的CCR功能,沒有成熟的可以嚴格保證數據一致性的在線數據遷移方法。此時可以從業務場景出發,根據業務寫入數據的特點選擇合適的數據遷移方案。

一般來說,業務寫入數據的特點有以下幾種:

下面來具體分析不同的寫入數據的特點下,該如何選擇合適的數據遷移方式。

在日志或者APM的場景中,數據都是時序數據,一般索引也都是按天創建的,當天的數據只會寫入當前的索引中。此時,可以先把存量的不再寫入的索引數據一次性同步到新集群中,然后使用logstash或者其它工具增量同步當天的索引,待數據追平后,把業務對ES的訪問切換到新集群中。

具體的實現方案為:

add only的數據寫入方式,可以按照數據寫入的順序(根據_doc進行排序,如果有時間戳字段也可以根據時間戳排序)批量從舊集群中拉取數據,然后再批量寫入新集群中;可以通過寫程序,使用用scroll api 或者search_after參數批量拉取增量數據,再使用bulk api批量寫入。

使用scroll拉取增量數據:

上述操作可以每分鐘執行一次,拉起前一分鐘新產生的數據,所以數據在舊集群和新集群的同步延遲為一分鐘。

使用search_after批量拉取增量數據:

上述操作可以根據需要自定義事件間隔執行,每次執行時修改search_after參數的值,獲取指定值之后的多條數據;search_after實際上相當于一個游標,每執行一次向前推進,從而獲取到最新的數據。

使用scroll和search_after的區別是:

另外,如果不想通過寫程序遷移舊集群的增量數據到新集群的話,可以使用logstash結合scroll進行增量數據的遷移,可參考的配置文件如下:

使用過程中可以根據實際業務的需求調整定時任務參數schele以及scroll相關的參數。

業務場景如果是寫入ES時既有追加,又有存量數據的更新,此時比較重要的是怎么解決update操作的數據同步問題。對于新增的數據,可以采用上述介紹的增量遷移熱索引的方式同步到新集群中。對于更新的數據,此時如果索引有類似于updateTime的字段用于標記數據更新的時間,則可以通過寫程序或者logstash,使用scroll api根據updateTime字段批量拉取更新的增量數據,然后再寫入到新的集群中。

可參考的logstash配置文件如下:

實際應用各種,同步新增(add)的數據和更新(update)的數據可以同時進行。但是如果索引中沒有類似updateTime之類的字段可以標識出哪些數據是更新過的,目前看來并沒有較好的同步方式,可以采用CCR來保證舊集群和新集群的數據一致性。

如果業務寫入ES時既有新增(add)數據,又有更新(update)和刪除(delete)數據,可以采用6.5之后商業版X-pack插件中的CCR功能進行數據遷移。但是使用CCR有一些限制,必須要注意:

具體的使用方式如下:

如果業務是通過中間件如kafka把數據寫入到ES, 則可以使用如下圖中的方式,使用logstash消費kafka的數據到新集群中,在舊集群和新集群數據完全追平之后,可以切換到新集群進行業務的查詢,之后再對舊的集群下線處理。

使用中間件進行同步雙寫的優點是:

當然,雙寫也可以使用其他的方式解決,比如自建proxy,業務寫入時向proxy寫入,proxy把請求轉發到一個或者多個集群中,但是這種方式存在以下問題:

隨著業務規模的增長,業務側對使用的ES集群的數據可靠性、集群穩定性等方面的要求越來越高,所以要比較好的集群容災方案支持業務側的需求。

如果是公司在自建IDC機房內,通過物理機自己搭建的ES集群,在解決跨機房容災的時候,往往會在兩個機房 部署兩個ES集群,一主一備,然后解決解決數據同步的問題;數據同步一般有兩種方式,一種方式雙寫,由業務側實現雙寫保證數據一致性,但是雙寫對業務側是一個挑戰,需要保證數據在兩個集群都寫成功才能算成功。另外一種方式是異步復制,業務側只寫主集群,后臺再把數據同步到備集群中去,但是比較難以保證數據一致性。第三種方式是通過專線打通兩個機房,實現跨機房部署,但是成本較高。

因為數據同步的復雜性,云廠商在實現ES集群跨機房容災的時候,往往都是通過只部署一個集群解決,利用ES自身的能力同步數據。國外某云廠商實現跨機房部署ES集群的特點1是不強制使用專用主節點,如上圖中的一個集群,只有兩個節點,既作為數據節點也作為候選主節點;主分片和副本分片分布在兩個可用區中,因為有副本分片的存在,可用區1掛掉之后集群仍然可用,但是如果兩個可用區之間網絡中斷時,會出現腦裂的問題。如下圖中使用三個專用主節點,就不會存在腦裂的問題了。

但是如果一個地域沒有三個可用區怎么辦呢,那就只能在其中一個可用區中放置兩個專用主節點了,如國內某云廠商的解決方案:

但是重建節點的過程還是存在問題的,如上圖中,集群本身的quorum應該為2,可用區1掛掉后,集群中只剩一個專用主節點,需要把quorum參數(dis買粉絲very.zen.minimum_master_nodes)調整為1后集群才能夠正常進行選主,等掛掉的兩個專用主節點恢復之后,需要再把quorum參數(dis買粉絲very.zen.minimum_master_nodes)調整為2,以避免腦裂的發生。

當然還是有可以把無法選主和腦裂這兩個可能發生的問題規避掉的解決方案,如下圖中國內某云廠商的解決思路:

創建雙可用區集群時,必須選擇3個或者5個專用主節點,后臺會在一個隱藏的可用區中只部署專用主節點;方案的優點1是如果一個可用區掛掉,集群仍然能夠正常選主,避免了因為不滿足quorum法定票數而無法選主的情況;2是因為必須要選擇三個或5個專用主節點,也避免了腦裂。

想比較一主一備兩個集群進行跨機房容災的方式,云廠商通過跨機房部署集群把原本比較復雜的主備數據同步問題解決了,但是,比較讓人擔心的是,機房或者可用區之間的網絡延遲是否會造成集群性能下降。這里針對騰訊云的雙可用區集群,使用標準的benchmark工具對兩個同規格的單可用區和雙可用區集群進行了壓測,壓測結果如下圖所示:

從壓測結果的查詢延時和寫入延時指標來看,兩種類型的集群并沒有明顯的差異,這主要得益與云上底層網絡基礎設施的完善,可用區之間的網絡延遲很低。

類似于同城跨機房容災,異地容災一般的解決思路是在異地兩個機房部署一主一備兩個集群。業務寫入時只寫主集群

搜索关键词: