雙活版部署指導(dǎo)
雙活版部署指導(dǎo)
1. 什么是雙活版?
雙活通常是指兩個獨立的單機(jī)(或集群),實時進(jìn)行鏡像同步,它們的配置完全獨立,可以同時接收外界的寫入,每一個獨立的單機(jī)(或集群)都可以將寫入到自己的數(shù)據(jù)同步到另一個單機(jī)(或集群)中,兩個單機(jī)(或集群)的數(shù)據(jù)可達(dá)到最終一致。
- 兩個單機(jī)(或集群)可構(gòu)成一個高可用組:當(dāng)其中一個單機(jī)(或集群)停止服務(wù)時,另一個單機(jī)(或集群)不會受到影響。當(dāng)停止服務(wù)的單機(jī)(或集群)再次啟動時,另一個單機(jī)(或集群)會將新寫入的數(shù)據(jù)同步過來。業(yè)務(wù)可以綁定兩個單機(jī)(或集群)進(jìn)行讀寫,從而達(dá)到高可用的目的。
- 雙活部署方案允許在物理節(jié)點少于 3 的情況下實現(xiàn)高可用,在部署成本上具備一定優(yōu)勢。同時可以通過電力、網(wǎng)絡(luò)的雙環(huán)網(wǎng),實現(xiàn)兩套單機(jī)(或集群)的物理供應(yīng)隔離,保障運(yùn)行的穩(wěn)定性。
- 目前雙活能力為企業(yè)版功能。

2. 注意事項
部署時推薦優(yōu)先使用
hostname進(jìn)行IP配置,可避免后期修改主機(jī)ip導(dǎo)致數(shù)據(jù)庫無法啟動的問題。設(shè)置hostname需要在目標(biāo)服務(wù)器上配置/etc/hosts,如本機(jī)ip是192.168.1.3,hostname是iotdb-1,則可以使用以下命令設(shè)置服務(wù)器的 hostname,并使用hostname配置IoTDB的cn_internal_address、dn_internal_address。echo "192.168.1.3 iotdb-1" >> /etc/hosts有些參數(shù)首次啟動后不能修改,請參考下方的"安裝步驟"章節(jié)來進(jìn)行設(shè)置。
推薦部署監(jiān)控面板,可以對重要運(yùn)行指標(biāo)進(jìn)行監(jiān)控,隨時掌握數(shù)據(jù)庫運(yùn)行狀態(tài),監(jiān)控面板可以聯(lián)系商務(wù)獲取,部署監(jiān)控面板步驟可以參考文檔
3. 安裝步驟
我們以兩臺單機(jī)A和B構(gòu)建的雙活版IoTDB為例,A和B的ip分別是192.168.1.3 和 192.168.1.4 ,這里用hostname來表示不同的主機(jī),規(guī)劃如下:
| 機(jī)器 | 機(jī)器ip | 主機(jī)名 |
|---|---|---|
| A | 192.168.1.3 | iotdb-1 |
| B | 192.168.1.4 | iotdb-2 |
Step1:分別安裝兩套獨立的 IoTDB
在2個機(jī)器上分別安裝 IoTDB,單機(jī)版部署文檔可參考文檔,集群版部署文檔可參考文檔。推薦 A、B 集群的各項配置保持一致,以實現(xiàn)最佳的雙活效果。
Step2:在機(jī)器A上創(chuàng)建數(shù)據(jù)同步任務(wù)至機(jī)器B
在機(jī)器A上創(chuàng)建數(shù)據(jù)同步流程,即機(jī)器A上的數(shù)據(jù)自動同步到機(jī)器B,使用sbin目錄下的cli工具連接A上的IoTDB數(shù)據(jù)庫:
./sbin/start-cli.sh -h iotdb-1創(chuàng)建并啟動數(shù)據(jù)同步命令,SQL 如下:
create pipe AB with source ( 'source.forwarding-pipe-requests' = 'false' ) with sink ( 'sink'='iotdb-thrift-sink', 'sink.ip'='iotdb-2', 'sink.port'='6667' )注意:為了避免數(shù)據(jù)無限循環(huán),需要將A和B上的參數(shù)
source.forwarding-pipe-requests均設(shè)置為false,表示不轉(zhuǎn)發(fā)從另一pipe傳輸而來的數(shù)據(jù)。
Step3:在機(jī)器B上創(chuàng)建數(shù)據(jù)同步任務(wù)至機(jī)器A
在機(jī)器B上創(chuàng)建數(shù)據(jù)同步流程,即機(jī)器B上的數(shù)據(jù)自動同步到機(jī)器A,使用sbin目錄下的cli工具連接B上的IoTDB數(shù)據(jù)庫:
./sbin/start-cli.sh -h iotdb-2創(chuàng)建并啟動pipe,SQL 如下:
create pipe BA with source ( 'source.forwarding-pipe-requests' = 'false' ) with sink ( 'sink'='iotdb-thrift-sink', 'sink.ip'='iotdb-1', 'sink.port'='6667' )注意:為了避免數(shù)據(jù)無限循環(huán),需要將A和B上的參數(shù)
source.forwarding-pipe-requests均設(shè)置為false,表示不轉(zhuǎn)發(fā)從另一pipe傳輸而來的數(shù)據(jù)。
Step4:驗證部署
上述數(shù)據(jù)同步流程創(chuàng)建完成后,即可啟動雙活集群。
檢查集群運(yùn)行狀態(tài)
#在2個節(jié)點分別執(zhí)行show cluster命令檢查IoTDB服務(wù)狀態(tài)
show cluster機(jī)器A:

機(jī)器B:

確保每一個 ConfigNode 和 DataNode 都處于 Running 狀態(tài)。
檢查同步狀態(tài)
- 機(jī)器A上檢查同步狀態(tài)
show pipes
- 機(jī)器B上檢查同步狀態(tài)
show pipes
確保每一個 pipe 都處于 RUNNING 狀態(tài)。
Step5:停止雙活版 IoTDB
在機(jī)器A的執(zhí)行下列命令:
./sbin/start-cli.sh -h iotdb-1 #登錄cli IoTDB> stop pipe AB #停止數(shù)據(jù)同步流程 ./sbin/stop-standalone.sh #停止數(shù)據(jù)庫服務(wù)在機(jī)器B的執(zhí)行下列命令:
./sbin/start-cli.sh -h iotdb-2 #登錄cli IoTDB> stop pipe BA #停止數(shù)據(jù)同步流程 ./sbin/stop-standalone.sh #停止數(shù)據(jù)庫服務(wù)