03.02 分佈式newsql數據庫cockroach的secure模式

前言:cockroach是一個非常強大的分佈式sql數據庫(newsql),它通常被用來實現數據湖泊。它採用完全去中心化架構,可以實現(n-1)/2的服務器節點故障宕機,通過低耦合性的節點擴展,可以輕鬆實現海量數據的存儲和利用,輕鬆實現pb級。cockroach採用強一致性機制(Strong Consistency),節點間基於Raft共識算法,比較適合那些對數據一致性要求很高的場景。而且,cockroach內置了postgres數據庫,支持json/jsonb,可以通過sql方式對json/jsonb數據進行操作,實現其他nosql數據庫的操作。

分佈式newsql數據庫cockroach的secure模式


前提條件

1、每個節點已成功安裝cockroach到/usr/local/bin

2、確保所有節點的端口26260開啟,其中任意某個節點的8080端口開啟,比如node1(10.10.1.4),該端口用訪問cockroach web ui。

3、確保所有節點的時間誤差低於500ms(可通過一些NTP時鐘同步服務實現)

一、生成證書

證書放到cockroach 安裝目錄 /usr/cockroach/certs

先在第一個節點生成證書,

cockroach cert create-ca --certs-dir=certs --ca-key=certs/ca.key --allow-ca-key-reuse --overwrite

生成如下文件

certs/ca.crt

certs/ca.key

把ca.crt和ca.key文件打包為ca.tar,發佈到其他節點

注意,這裡一定要先把ca文件打包,倘若在節點執行了其他證書相關操作(cert create-node,cert create-client)後再打包,cockroach joinin不成功,原因可能是在執行其他證書操作時會修改ca文件,所以一定要注意。

二、生成節點證書

在每個節點做如下操作

cd /usr/cockroach

cockroach cert create-node 10.10.1.4 --certs-dir=certs --ca-key=certs/ca.key

注意,把10.10.1.4替換為每個節點自己的ip

三、生成用戶證書

cockroach cert create-client root --certs-dir=certs --ca-key=certs/ca.key

為每個節點的root用戶生成證書,否則不能該節點上不能使用cockroach sql連接(不僅僅是命令行,還包括代碼的數據庫連接dao)。如果不需要通過該節點連接數據庫,可以不用執行該操作

四、逐步激動

每個節點執行 cockroach start --certs-dir=certs --store=node1 --listen-addr=10.10.1.4:26260 --http-addr=10.10.1.4:8080 --join=10.10.1.4:26260 &

這裡listen-addr 和http-addr的ip替換為自己節點的ip。

每啟動並jion成功一個節點,在cockroach web ui的node list都能看到。

所有節點啟動成功後,在任意一個節點執行cockroach init --certs-dir=certs --host=10.10.1.4:26260

這裡把ip替換為自己節點的ip

五、web ui

瀏覽器打開node1(該節點的8080端口已開啟)

10.10.1.4:8080(我這裡做了反向代理,通過公網ip訪問,局域網下可以直接ip訪問,或者如果使用雲服務器,也可以直接ip訪問)

瀏覽器第一次訪問時,會有安全風險提示,這是因為這裡的證書是私有的

點擊接受風險,接入登錄界面

分佈式newsql數據庫cockroach的secure模式


這裡就需要連接到某臺支持cockroach sql連接的服務器上(之前在某臺服務器上執行過cockroach cert create-client),創建一個用戶。

cockroach sql --certs-dir=certs --host=10.10.1.4:26260

分佈式newsql數據庫cockroach的secure模式


create user xxx with password ‘xxx’

然後就可以用該用戶登錄了。登錄後就可以看到每個節點狀態及當前副本相關信息。

如何添加一個新的服務器到集群中去?Cockroach是一個完全去中心化的分佈式數據庫,新節點加入跟已加入節點在部署上沒有任何關係,只需要獲取到原來集群節點使用的ca證書和要加入的joinin ip就可以了,新節點加入後會自動進行副本複製和調整,根據數據量和節點數量,會有一段時間,生產環境建議晚上或者非頻繁時間進行。



分享到:


相關文章: