天天看點

Mycat學習實戰-Mycat的zookeeper叢集模式

ZooKeeper 是一個面向分布式系統的建構塊。當設計一個分布式系統時,一般需要設計和開發一些協調服務: 

名稱服務— 名稱服務是将一個名稱映射到與該名稱有關聯的一些資訊的服務。電話目錄是将人的名字映射到其電話号碼的一個名稱服務。同樣,DNS 服務也是一個名稱服務,它将一個域名映射到一個 IP 位址。在分布式系統中,您可能想跟蹤哪些伺服器或服務在運作,并通過名稱檢視其狀态。ZooKeeper 暴露了一個簡單的接口來完成此工作。也可以将名稱服務擴充到組成員服務,這樣就可以獲得與正在查找其名稱的實體有關聯的組的資訊。 

鎖定— 為了允許在分布式系統中對共享資源進行有序的通路,可能需要實作分布式互斥(distributed mutexes)。ZooKeeper 提供一種簡單的方式來實作它們。 

同步— 與互斥同時出現的是同步通路共享資源的需求。無論是實作一個生産者-消費者隊列,還是實作一個障礙,ZooKeeper 都提供一個簡單的接口來實作該操作。 

配置管理— 您可以使用 ZooKeeper 集中存儲和管理分布式系統的配置。這意味着,所有新加入的節點都将在加入系統後就可以立即使用來自 ZooKeeper 的最新集中式配置。這還允許您通過其中一個 ZooKeeper 用戶端更改集中式配置,集中地更改分布式系統的狀态。 

上司者選舉— 分布式系統可能必須處理節點停機的問題,您可能想實作一個自動故障轉移政策。ZooKeeper 通過上司者選舉對此提供現成的支援。

<a href="https://s5.51cto.com/oss/201710/20/7d069c6d870e5c3dac319bf6e0096285.png" target="_blank"></a>

<a href="https://s3.51cto.com/oss/201710/20/60baf2174a7332360e06c20e735f9714.png" target="_blank"></a>

<a href="https://s4.51cto.com/oss/201710/20/212cd038044d5a02085f96265063f1fd.png" target="_blank"></a>

<a href="https://s3.51cto.com/oss/201710/20/fdf9a802927739d46531233f860f54bc.png" target="_blank"></a>

<a href="https://s1.51cto.com/oss/201710/20/cab8c19108e70273031645b4e533192d.png" target="_blank"></a>

<a href="https://s3.51cto.com/oss/201710/20/8ab162bf28ac6e22cdfdaf7c60126d28.png" target="_blank"></a>

<a href="https://s3.51cto.com/oss/201710/20/7067d71490eab6f68d35185f7e3e21d0.png" target="_blank"></a>

系統:CentOS7.3 

jdk版本:1.7 

zookeeper版本:3.4.10 

mycat版本:1.6

hostname

IP

myid

testA

192.168.33.11

1

testB

192.168.33.12

2

testC

192.168.33.13

3

為了測試友善,這裡關閉系統防火牆和禁用selinux,生産環境防火牆則需要開放zookeeper相關端口,2181、2888、3888。

先在<code>testA</code>節點安裝,再同步到其它2個節點。

<code>vim zoo.cfg</code>

<code>vim /usr/local/zookeeper/data/myid</code>寫入 1

并在2個節點分别修改對應的myid

<a href="https://s3.51cto.com/oss/201710/20/abb25a8414e31ba19f67162bdff5696a.png" target="_blank"></a>

<a href="https://s4.51cto.com/oss/201710/20/35c6477919e573ca8d67958f4d096033.png" target="_blank"></a>

<a href="https://s3.51cto.com/oss/201710/20/4fdf5152e476156bbb23cdea9a443d07.png" target="_blank"></a>

同樣,3個節點都需要安裝mycat。

3個節點Mycat都執行如下腳本

<code>vim /usr/local/mycat/conf/myid.properties</code>

使用ZooInspector工具管理ZooKeeper,以下是連接配接zookeeper方法。

<a href="https://s3.51cto.com/oss/201710/20/0776e47bcf3fed7a184111e74312eb94.png" target="_blank"></a>

連接配接成功後,可看到mycat叢集的配置

<a href="https://s1.51cto.com/oss/201710/20/92bc135fcaceec71ec4d6256dd898381.png" target="_blank"></a>

修改相應配置

<a href="https://s3.51cto.com/oss/201710/20/c5d2aee81bf447de42a36f2bb5860590.png" target="_blank"></a>

啟動mycat後,mycat配置檔案會自動更新。

<a href="https://s1.51cto.com/oss/201710/20/ce30b2c545bd077c07a8b2a58f994d25.png" target="_blank"></a>

注意事項: loadZk必須改為true才生效 zkURL的位址是多個中間用“,”隔開 clusterId,同一個zk内的叢集ID必須唯一 Myid:本執行個體的id在目前的mycat叢集内ID唯一 配置完zk并啟動mycat後,會更新本地conf下的相關配置檔案。 本文轉自 ygqygq2 51CTO部落格,原文連結:http://blog.51cto.com/ygqygq2/1974592,如需轉載請自行聯系原作者