zeekooper集群搭建_How to do - ZooKeeper集群搭建(我见过最详细的完整教学)
ZooKeeper集群介紹
最典型集群模式: Master/Slave 模式(主備模式)。在這種模式中,通常 Master服務器作為主服務器提供寫服務,其他的 Slave 服務器從服務器通過異步復制的方式獲取 Master 服務器最新的數據提供讀服務。
但是,在 ZooKeeper 中沒有選擇傳統的 Master/Slave 概念,而是引入了Leader、Follower 和 Observer 三種角色。如下圖所示:
ZooKeeper 集群中的所有機器通過一個 Leader 選舉過程來選定一臺稱為 “Leader” 的機器,Leader 既可以為客戶端提供寫服務又能提供讀服務。除了 Leader 外,Follower 和 Observer 都只能提供讀服務。Follower 和 Observer 唯一的區別在于 Observer 機器不參與 Leader 的選舉過程,也不參與寫操作的“過半寫成功”策略,因此 Observer 機器可以在不影響寫性能的情況下提升集群的讀性能。
ZooKeeper集群搭建
為了獲得可靠的 ZooKeeper 服務,用戶應該在一個集群上部署 ZooKeeper 。只要集群上大多數的ZooKeeper 服務啟動了,那么總的 ZooKeeper 服務將是可用的。另外,最好使用奇數臺機器, 因為zookeeper集群是以宕機個數過半才會讓整個集群宕機的。 如果 zookeeper擁有 5 臺機器,那么它就能處理 2 臺機器的故障了。
【注意】 搭建zookeeper集群時,一定要先停止已經啟動的zookeeper節點。
Step1:配置zookeeper
# 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=/etc/zookeeper/data
dataLogDir=/etc/zookeeper/logs
# the port at which the clients will connect
clientPort=2181
# 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
minSessionTimeout=2
maxSessionTimeout=20
server.1=192.168.1.127:2888:3888
server.2=192.168.1.128:2888:3888
server.3=192.168.1.139:2888:3888
server.4=192.168.1.130:2888:3888:observer
server.5=192.168.1.131:2888:3888:observerautopurge配置
客戶端在與zookeeper交互過程中會產生非常多的日志,而且zookeeper也會將內存中的數據作為snapshot保存下來,這些數據是不會被自動刪除的,這樣磁盤中這樣的數據就會越來越多。不過可以通過這兩個參數來設置,讓zookeeper自動刪除數據。
autopurge.purgeInterval:指定自動清理快照文件和事務日志文件的時間,單位為h,默認為0表示不自動清理,這個時候可以使用腳本zkCleanup.sh手動清理。如果不清理則磁盤空間占用越來越大。
autopurge.snapRetainCount:用于指定保留快照文件和事務日志文件的個數,默認為3。
不過如果你的集群是一個非常繁忙的集群,然后又碰上這個刪除操作,可能會影響zookeeper集群的性能,所以一般會讓這個過程在訪問低谷的時候進行,但是遺憾的是zookeeper并沒有設置在哪個時間點運行的設置,所以有的時候我們會禁用這個自動刪除的功能,而做一些其他手段,比如手動或者自動地在凌晨做清理工作。Server.ID配置
server.id=IP/Host : port1 : port2
id:用來配置ZK集群中的各節點,并建議id的值和myid保持一致,【注意】下文會講myid的配置。
IP/Host: 服務器的 IP 或者是與 IP 地址做了映射的主機名
port1:Leader和Follower或Observer交換數據使用
port2:用于Leader選舉minSessionTimeout, maxSessionTimeout
一般,客戶端連接zookeeper的時候,都會設置一個session timeout,如果超過這個時間client沒有與zookeeper server有聯系,則這個session會被設置為過期(如果這個session上有臨時節點,則會被全部刪除,這就是實現集群感知的基礎)。但是這個時間不是客戶端可以無限制設置的,服務器可以設置這兩個參數來限制客戶端設置的范圍。
Step2: 創建myid文件
上文我們在每個zookeeper服務器的配置文件里配置了這樣的信息:
server.1=192.168.1.127:2888:3888
server.2=192.168.1.128:2888:3888
server.3=192.168.1.139:2888:3888
server.4=192.168.1.130:2888:3888:observer
server.5=192.168.1.131:2888:3888:observer
server.id,這個id就是指zookeeper服務器在集群中的編號,我們需要把這個id寫入到myid文件中,這個myid值在zookeeper集群中的選舉過程中會做一個非常大的作用。比如在192.168.120.78這臺機器中首先創建myid文件(dataDir目錄,如上配置是/etc/zookeeper/data),然后執行下列操作:
echo "1" > /etc/zookeeper/data/myid
Step3:啟動zookeeper服務,并查看狀態
首先查看192.168.1.126的zookeeper服務的狀態:
root@ubuntu:/home/lizhiyong/source/zookeeper-3.4.12/bin# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/lizhiyong/source/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower
查看192.168.1.128的zookeeper服務的狀態
root@ubuntu:/home/lee/source/zookeeper-3.4.12/bin# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/lee/source/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: leader
查看192.168.1.130的zookeeper服務的狀態
root@ubuntu:/home/lizhiyong/source/zookeeper-3.4.12/bin# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/lizhiyong/source/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower
Step4: 加入觀察者節點
觀察者節點為192.168.1.134,myid為4
第一步,在觀察者節點的配置文件中增加以下內容:
peerType=observer
第二步,在其它的節點上修改配置添加
server.4=192.168.1.134:2888:3888:observer
查看狀態:
root@ubuntu:/home/lizhiyong/source/zookeeper-3.4.12/bin# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/lizhiyong/source/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: observer
視頻教程:https://www.bilibili.com/video/av58475217/?www.bilibili.com
總結
以上是生活随笔為你收集整理的zeekooper集群搭建_How to do - ZooKeeper集群搭建(我见过最详细的完整教学)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么叫侧面指纹识别_前面侧面还是背面?手
- 下一篇: rk修改launcher_Android