您好,登錄后才能下訂單哦!
1. ZooKeeper簡介
2. ZooKeeper角色和端口
3. ZooKeeper部署簡介
4. ZooKeeper部署管理Mycat
4.3.1 下載解壓
4.3.2 修改配置文件
4.3.3 添加myid文件
4.3.4 同步zookeeper目錄到其它2個節點,修改myid
4.3.5 啟動zookeeper
4.1 環境
4.2 環境準備
4.3 安裝zookeeper
4.4 安裝Mycat
4.6 執行mycat初始化數據
4.7 配置mycat支持zookeeper
4.8 用zookeeper配置mycat
ZooKeeper 是一個面向分布式系統的構建塊。當設計一個分布式系統時,一般需要設計和開發一些協調服務:
名稱服務— 名稱服務是將一個名稱映射到與該名稱有關聯的一些信息的服務。電話目錄是將人的名字映射到其電話號碼的一個名稱服務。同樣,DNS 服務也是一個名稱服務,它將一個域名映射到一個 IP 地址。在分布式系統中,您可能想跟蹤哪些服務器或服務在運行,并通過名稱查看其狀態。ZooKeeper 暴露了一個簡單的接口來完成此工作。也可以將名稱服務擴展到組成員服務,這樣就可以獲得與正在查找其名稱的實體有關聯的組的信息。
鎖定— 為了允許在分布式系統中對共享資源進行有序的訪問,可能需要實現分布式互斥(distributed mutexes)。ZooKeeper 提供一種簡單的方式來實現它們。
同步— 與互斥同時出現的是同步訪問共享資源的需求。無論是實現一個生產者-消費者隊列,還是實現一個障礙,ZooKeeper 都提供一個簡單的接口來實現該操作。
配置管理— 您可以使用 ZooKeeper 集中存儲和管理分布式系統的配置。這意味著,所有新加入的節點都將在加入系統后就可以立即使用來自 ZooKeeper 的最新集中式配置。這還允許您通過其中一個 ZooKeeper 客戶端更改集中式配置,集中地更改分布式系統的狀態。
領導者選舉— 分布式系統可能必須處理節點停機的問題,您可能想實現一個自動故障轉移策略。ZooKeeper 通過領導者選舉對此提供現成的支持。
系統: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。
# 關閉防火墻 systemctl stop firewalld.service systemctl disable firewalld.service # 關閉SELINUX sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux setenforce 0
先在testA
節點安裝,再同步到其它2個節點。
mkdir -p /data/packages/ cd /data/packages/ wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz cd /usr/local/ tar -zxvf /data/packages/zookeeper-3.4.10.tar.gz ln -s zookeeper-3.4.10 zookeeper cd zookeeper mkdir data log cd conf/ cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/usr/local/zookeeper/data dataLogDir=/usr/local/zookeeper/log # the port at which the clients will connect clientPort=2181 server.1=192.168.33.11:2888:3888 server.2=192.168.33.12:2888:3888 server.3=192.168.33.13:2888:3888 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1
vim /usr/local/zookeeper/data/myid
寫入 1
rsync -avzP /usr/local/zookeeper/ root@192.168.33.12:/usr/local/zookeeper/ rsync -avzP /usr/local/zookeeper/ root@192.168.33.13:/usr/local/zookeeper/
并在2個節點分別修改對應的myid
cd /usr/local/zookeeper/bin/ ./zkServer.sh start
同樣,3個節點都需要安裝mycat。
cd /data/packages/ wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz cd /usr/local/ tar -zxvf /data/packages/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
3個節點Mycat都執行如下腳本
sh /usr/local/mycat/bin/init_zk_data.sh
vim /usr/local/mycat/conf/myid.properties
loadZk=true # zk集群地址,多個用","隔開 zkURL=127.0.0.1:2181 # zk集群內Mycat集群ID clusterId=mycat-cluster-1 # Mycat集群內本實例ID,禁止重復 myid=mycat_fz_01 # Mycat集群內節點個數 clusterSize=3 clusterNodes=mycat_fz_01,mycat_fz_02,mycat_fz_03 #server booster ; booster install on db same server,will reset all minCon to 1 type=server boosterDataHosts=dataHost1
使用ZooInspector工具管理ZooKeeper,以下是連接zookeeper方法。
連接成功后,可看到mycat集群的配置
修改相應配置
啟動mycat后,mycat配置文件會自動更新。
注意事項:
loadZk必須改為true才生效
zkURL的地址是多個中間用“,”隔開
clusterId,同一個zk內的集群ID必須唯一
Myid:本實例的id在當前的mycat集群內ID唯一
配置完zk并啟動mycat后,會更新本地conf下的相關配置文件。
參考資料:
[1] http://mycat.io/
[2] 《分布式數據庫架構及企業實踐——基于Mycat中間件》
[3] 龍哥官方課程課件
[4] http://zookeeper.apache.org/
[5] https://www.ibm.com/developerworks/cn/data/library/bd-zookeeper/
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。