日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

zookeeper的单实例和伪集群部署

發布時間:2023/12/6 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zookeeper的单实例和伪集群部署 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文鏈接: http://gudaoyufu.com/?p=1395

zookeeper工作方式

ZooKeeper 是一個開源的分布式協調服務,由雅虎創建,是 Google Chubby 的開源實現。 分布式應用程序可以基于 ZooKeeper 實現諸如數據發布/訂閱、負載均衡、命名服務、分布式協 調/通知、集群管理、Master 選舉、分布式鎖和分布式隊列 等功能。

在使用中,通常以集群的方式部署,Zookeeper節點部署越多,服務的可靠性越高,建議部署奇數個節點,因為zookeeper集群是以宕機個數過半才會讓整個集群宕機的,集群節點數為奇數最佳。

zookeeper也可以以單實例或偽集群的方式運行,只不過這種方式不適用高并發的環境。下面記錄一下部署zookeeper的過程,包括單實例和偽集群,分布式集群的部署。

安裝JDK

zookeeper是由JAVA開發,運行需要有JAVA環境,安裝前先安裝JDK。

JDK下載:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

下載完成后直接yum安裝即可

單機實例部署

  • 下載

各版本可以在官方網站下載 : https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/

這里下載的版本是 3.4.12

  • 解壓至指定路徑
[root@zookeeper ~]# tar zxf zookeeper-3.4.12.tar.gz -C /data/
  • 修改解壓目錄名稱,做偽集群或分布式集群最好將目錄標明白,容易看清
[root@zookeeper ~]# mv /data/zookeeper-3.4.12/ /data/zookeeper1
  • 修改配置文件
[root@zookeeper ~]# cd /data/zookeeper1/conf/ [root@zookeeper conf]# mv zoo_sample.cfg zoo.cfg
  • 單機實例部署配置如下
[root@zookeeper conf]# vim zoo.cfg tickTime=2000 #2000毫秒=2秒 initLimit=10 syncLimit=5 dataDir=/opt/zookeeper/datadir dataLogDir=/opt/zookeeper/logdir clientPort=2181
  • 創建數據目錄
[root@zookeeper conf]# mkdir -pv /opt/zookeeper/{datadir,logdata} mkdir: 已創建目錄 "/opt/zookeeper" mkdir: 已創建目錄 "/opt/zookeeper/datadir" mkdir: 已創建目錄 "/opt/zookeeper/logdata"

配置參數說明

  • ickTime這個時間是作為zookeeper服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是說每個tickTime時間就會發送一個心跳。
    initLimit : 配置項是用來配置zookeeper接受客戶端(這里所說的客戶端不是用戶連接zookeeper服務器的客戶端,而是zookeeper服務器集群中連接到leader的follower 服務器)初始化連接時最長能忍受多少個心跳時間間隔數。當已經超過10個心跳的時間(也就是tickTime)長度后 zookeeper 服務器還沒有收到客戶端的返回信息,那么表明這個客戶端連接失敗。總的時間長度就是 102000=20秒。

  • syncLimit :配置項標識leader與follower之間發送消息,請求和應答時間長度,最長不能超過多少個tickTime的時間長度,總的時間長度就是5*2000=10秒。
    • dataDir :是zookeeper保存數據的目錄,默認情況下如果不定義dataLogDir,zookeeper將寫數據的日志文件也保存在這個目錄里,最好分開定義
  • clientPort : 客戶端連接Zookeeper服務器的端口,Zookeeper會監聽這個端口接受客戶端的訪問請求;
  • server.n=ipA:B:C :定義集群節點號,ip,監聽端口,選舉通信端口,n是一個數字,表示這個是第幾號服務器,A是這個服務器的IP地址,B第一個端口用來集群成員的信息交換,表示這個服務器與集群中的leader服務器交換信息的端口,C是在leader掛掉時專門用來進行選舉leader所用的端口。

  • 啟動zookeeper

[root@zookeeper ~]# /data/zookeeper1/bin/zkServer.sh startZooKeeper JMX enabled by default Using config: /data/zookeeper1/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
  • 查看狀態
[root@zookeeper ~]# /data/zookeeper1/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /data/zookeeper1/bin/../conf/zoo.cfg Mode: standalone #單機模式
  • 查看端口 2181已經啟動

zookeeper指令

zookeeper啟動后,可以先連接測試是否正常

[root@zookeeper ~]# cd /data/zookeeper1/bin/ [root@zookeeper bin]# ./zkCli.sh -server 127.0.0.1WATCHER::WatchedEvent state:SyncConnected type:None path:null [zk: 127.0.0.1(CONNECTED) 0] #登錄成功

zookeeper啟動后會在當前用戶的家目錄生成狀態日志zookeeper.out,平時服務狀態出現問題可以從里面找到問題所在

連接上zk后,隨意輸入一個字符,通常是?號,會給出zookeeper的指令幫助

[zk: 127.0.0.1(CONNECTED) 0] ? ZooKeeper -server host:port cmd argsstat path [watch]set path data [version]ls path [watch] #查看節點delquota [-n|-b] pathls2 path [watch]setAcl path aclsetquota -n|-b val pathhistory redo cmdnoprintwatches on|offdelete path [version]sync pathlistquota pathrmr pathget path [watch]create [-s] [-e] path data acl #創建節點addauth scheme authquit getAcl pathclose connect host:port #連接指令
  • 創建節點
[zk: 127.0.0.1(CONNECTED) 1] create /test "test" Created /test [zk: 127.0.0.1(CONNECTED) 2] ls / [zookeeper, test]
  • 獲取節點內容
[zk: 127.0.0.1(CONNECTED) 3] get /test test cZxid = 0x8 :該節點是由哪個事務ID產生 ctime = Sat Sep 01 21:41:06 CST 2018 mZxid = 0x8 :最近更新了該節點的事務ID mtime = Sat Sep 01 21:41:06 CST 2018 pZxid = 0x8 :該節點的子節點列表被修改的事務ID cversion = 0 :子節點版本號 dataVersion = 0 : 數據版本號 aclVersion = 0 : ACL版本號 ephemeralOwner = 0x0 dataLength = 4 : 數據長度 numChildren = 0 : 子節點個數

樂觀并發訪問控制和悲觀并發訪問控制 —延伸

  • 更新節點
[zk: 127.0.0.1(CONNECTED) 4] set /test "test path"
  • 刪除節點
[zk: 127.0.0.1(CONNECTED) 6] delete /test [zk: 127.0.0.1(CONNECTED) 7] ls /test Node does not exist: /test #如果刪除有子目錄的節點,使用rmr指令

臨時節點不能有子節點

ookeeper四字命令

使用telnet可以連接zookeeper發送4個字符的命令。

[root@zookeeper bin]# telnet 127.0.0.1 2181 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. ruok #探測是否存活 imokConnection closed by foreign host. [root@zookeeper bin]# telnet 127.0.0.1 2181 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. stat #查看zk版本信息 Zookeeper version: 3.4.12-e5259e437540f349646870ea94dc2658c4e44b3b, built on 03/27/2018 03:55 GMT Clients:/127.0.0.1:52636[0](queued=0,recved=1,sent=0)Latency min/avg/max: 0/2/308 Received: 248 Sent: 247 Connections: 1 Outstanding: 0 Zxid: 0xc Mode: standalone Node count: 5 Connection closed by foreign host. [root@zookeeper bin]# telnet 127.0.0.1 2181 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. conf #查看節點配置信息 clientPort=2181 dataDir=/opt/zookeeper/datadir/version-2 dataLogDir=/opt/zookeeper/logdir/version-2 tickTime=2000 maxClientCnxns=60 minSessionTimeout=4000 maxSessionTimeout=40000 serverId=0 Connection closed by foreign host.

zookeeper偽集群部署

zookeeper偽集群是部署在一臺服務器上,通過創建多個工作目錄配置項等,實現多實例的運行

在上面的基礎上,再添加兩個實例

  • 將原來/data/zookeeper1目錄復制
[root@zookeeper ~]# cp -ar /data/zookeeper1/ /data/zookeeper2 [root@zookeeper ~]# cp -ar /data/zookeeper1/ /data/zookeeper3 [root@zookeeper ~]# ls /data/ zookeeper1 zookeeper2 zookeeper3
  • 修改zookeeper1配置文件
[root@zookeeper ~]# vim /data/zookeeper1/conf/zoo.cfg dataDir=/opt/zookeeper/datadir #各偽節點目錄不能相同 dataLogDir=/opt/zookeeper/logdir clientPort=2181 #各偽節點端口不能相同#下面的節點定義各偽節點要相同 server.1=192.168.214.171:2888:3888 server.2=192.168.214.171:2889:3889 server.3=192.168.214.171:2890:3890
  • 修改zookeeper2配置文件
[root@zookeeper ~]# vim /data/zookeeper2/conf/zoo.cfg dataDir=/opt/zookeeper2/datadir dataLogDir=/opt/zookeeper2/logdir clientPort=2182 server.1=192.168.214.171:2888:3888 server.2=192.168.214.171:2889:3889 server.3=192.168.214.171:2890:3890
  • 修改zookeeper3配置文件
dataDir=/opt/zookeeper3/datadir dataLogDir=/opt/zookeeper3/logdir clientPort=2183 server.1=192.168.214.171:2888:3888 server.2=192.168.214.171:2889:3889 server.3=192.168.214.171:2890:3890
  • 創建數據存放目錄
[root@zookeeper ~]# mkdir -pv /opt/zookeeper{2,3}/{datadir,logdir} mkdir: 已創建目錄 "/opt/zookeeper2" mkdir: 已創建目錄 "/opt/zookeeper2/datadir" mkdir: 已創建目錄 "/opt/zookeeper2/logdir" mkdir: 已創建目錄 "/opt/zookeeper3" mkdir: 已創建目錄 "/opt/zookeeper3/datadir" mkdir: 已創建目錄 "/opt/zookeeper3/logdir"
  • 為每個節點設置節點ID號
[root@zookeeper ~]# echo 1 > /opt/zookeeper/datadir/myid [root@zookeeper ~]# echo 2 > /opt/zookeeper2/datadir/myid [root@zookeeper ~]# echo 3 > /opt/zookeeper3/datadir/myid[root@zookeeper ~]# cat /opt/zookeeper/datadir/ myid version-2/ [root@zookeeper ~]# cat /opt/zookeeper/datadir/myid 1 [root@zookeeper ~]# cat /opt/zookeeper2/datadir/myid 2 [root@zookeeper ~]# cat /opt/zookeeper3/datadir/myid 3
  • 啟動集群
[root@zookeeper ~]# /data/zookeeper1/bin/zkServer.sh start ZooKeeper JMX enabled by default Using config: /data/zookeeper1/bin/../conf/zoo.cfg Starting zookeeper ... STARTED[root@zookeeper ~]# /data/zookeeper2/bin/zkServer.sh start ZooKeeper JMX enabled by default Using config: /data/zookeeper2/bin/../conf/zoo.cfg Starting zookeeper ... STARTED[root@zookeeper ~]# /data/zookeeper3/bin/zkServer.sh start ZooKeeper JMX enabled by default Using config: /data/zookeeper3/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
  • 查看狀態
[root@zookeeper ~]# /data/zookeeper1/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /data/zookeeper1/bin/../conf/zoo.cfg Mode: leader[root@zookeeper ~]# /data/zookeeper2/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /data/zookeeper2/bin/../conf/zoo.cfg Mode: follower[root@zookeeper ~]# /data/zookeeper3/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /data/zookeeper3/bin/../conf/zoo.cfg Mode: follower
  • 測試master切換

關閉leader節點

[root@zookeeper ~]# /data/zookeeper1/bin/zkServer.sh stop ZooKeeper JMX enabled by default Using config: /data/zookeeper1/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED#zookeeper2節點立即變成了leader[root@zookeeper ~]# /data/zookeeper2/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /data/zookeeper2/bin/../conf/zoo.cfg Mode: leader
  • 再啟動zookeeper1節點,會以follower角色工作
[root@zookeeper ~]# /data/zookeeper1/bin/zkServer.sh start ZooKeeper JMX enabled by default Using config: /data/zookeeper1/bin/../conf/zoo.cfg Starting zookeeper ... STARTED [root@zookeeper ~]# /data/zookeeper1/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /data/zookeeper1/bin/../conf/zoo.cfg Mode: follower

關于zookeeper的單機模式和偽集群就寫到這,分布式集群部署點擊閱讀

轉載于:https://www.cnblogs.com/tchroot/p/9591801.html

總結

以上是生活随笔為你收集整理的zookeeper的单实例和伪集群部署的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。