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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

原创:centos7.1下 ZooKeeper 集群安装配置+Python实战范例

發布時間:2025/3/20 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 原创:centos7.1下 ZooKeeper 集群安装配置+Python实战范例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
centos7.1下 ZooKeeper 集群安裝配置+Python實戰范例

下載:http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

解壓: tar zxvf zookeeper-3.4.9.tar.gz -C /opt/

改名:cd /opt/ && mv zookeeper-3.4.9 zookeeper && cd zookeeper?

建立 data目錄?
mkdir data

分布式模式配置
ZooKeeper集群一般被稱為ZooKeeper ensemble,或者 quorum.

2.1 準備5臺機器
假設有五臺機器,hostname和ip對應關系是:?
192.168.48.13 hzmaster1
192.168.48.17 hzmaster2
192.168.48.16 hzslave1
192.168.48.5 hzslave2
192.168.48.12 hzslave3

ZooKeeper不存在明顯的master/slave關系,各個節點都是服務器,leader掛了,會立馬從follower中選舉一個出來作為leader.
由于沒有主從關系,也不用配置SSH無密碼登錄了,各個zk服務器是自己啟動的,互相之間通過TCP端口來交換數據。

2.2 修改配置文件/opt/zookeeper/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/data
clientPort=2181
server.0=192.168.48.13:2888:3888
server.1=192.168.48.17:2888:3888
server.2=192.168.48.16:2888:3888
server.3=192.168.48.5:2888:3888
server.4=192.168.48.12:2888:3888

我一般把服務器程序,即需要啟動daemon進程的程序,放在單獨的用戶里安裝;且用戶的數據,放在local/var下面,所以我的dataDir是/home/zookeeper/local/var/zookeeper。

2.3 myid文件
要在每臺機器的dataDir下,新建一個myid文件,里面存放一個數字,用來標識當前主機。
hzmaster1:$ echo "0" >>/opt/zookeeper/data/myid
hzmaster2:$ echo "1" >>/opt/zookeeper/data/myid
hzslave1:$ echo "2" >>/opt/zookeeper/data/myid
hzslave2:$ echo "3" >>/opt/zookeeper/data/myid
hzslave3:$ echo "4" >>/opt/zookeeper/data/myid

2.4 啟動每臺機器
hzmaster1:$ /opt/zookeeper/bin/zkServer.sh start
hzmaster2:$ /opt/zookeeper/bin/zkServer.sh start
hzslave1:$ /opt/zookeeper/bin/zkServer.sh start
hzslave2:$ /opt/zookeeper/bin/zkServer.sh start
hzslave3:$ /opt/zookeeper/bin/zkServer.sh start
啟動順序無關

2.5 查看狀態
$ /opt/zookeeper/bin/zkServer.sh status
3 使用java客戶端連接ZooKeeper集群
找一臺機器,解壓zookeeper壓縮包,不用配置,就可以使用Java客戶端連接ZooKeeper集群中的任意一臺服務器了。

$ /opt/zookeeper/bin/zkCli.sh -server hzmaster2

常用命令:
1. 啟動ZK服務: ? ? ? sh bin/zkServer.sh start
2. 查看ZK服務狀態: sh bin/zkServer.sh status
3. 停止ZK服務: ? ? ? sh bin/zkServer.sh stop
4. 重啟ZK服務: ? ? ? sh bin/zkServer.sh restart

客戶端工具
./zkCli.sh
ZooKeeper命令行工具類似于Linux的shell環境,不過功能肯定不及shell啦,但是使用它我們可以簡單的對ZooKeeper進行訪問,數據創建,數據修改等操作. ?使用 zkCli.sh -server 127.0.0.1:2181 連接到 ZooKeeper 服務,連接成功后,系統會輸出 ZooKeeper 的相關環境以及配置信息。
命令行工具的一些簡單操作如下:
1. 顯示根目錄下、文件: ls / 使用 ls 命令來查看當前 ZooKeeper 中所包含的內容
2. 顯示根目錄下、文件: ls2 / 查看當前節點數據并能看到更新次數等數據
3. 創建文件,并設置初始內容: create /zk "test" 創建一個新的 znode節點“ zk ”以及與它關聯的字符串
4. 獲取文件內容: get /zk 確認 znode 是否包含我們所創建的字符串
5. 修改文件內容: set /zk "zkbak" 對 zk 所關聯的字符串進行設置
6. 刪除文件: delete /zk 將剛才創建的 znode 刪除
7. 退出客戶端: quit
8. 幫助命令: help

刪除要逐層刪除才可以,子節點下如果還有內容就不能刪除!

一段python代碼:
#coding=utf-8
__author__ = 'huangzhi'

import kazoo
import logging
from time import sleep
from kazoo.client import KazooClient
import time
import logging
logging.basicConfig()


zk = KazooClient(hosts='192.168.51.19:2181,192.168.51.85:2181,192.168.51.196:2181,192.168.51.225:2181,192.168.51.227:2181')
# zk = KazooClient(hosts='192.168.51.19:2181')
zk.start(timeout=2)
print (zk.state)

def myWatch(handler):
? ? # 保證可以被重復監聽,值發生變化后會立即觸發
? ? value = zk.get('/test', myWatch)
? ? print(value[0].decode())

print(zk.hosts)
"""An ephemeral node will be automatically removed by ZooKeeper
? ? ? ? when the session associated with the creation of the node
? ? ? ? expires.
"""
# zk.create("/test", value=b"a test value", ephemeral=True) #退出后自動刪除
# zk.create("/test", value=b"a test value", ephemeral=False) #退出后不自動刪除
# zk.set('test', b"hello I'm")

value = zk.get('/test', myWatch)
print(value[0].decode())
for v in value:
? ? print(v)
# print (zk.state) #CONNECTED

# print (zk.randomize_hosts)
# Ensure a path, create if necessary

# zk.ensure_path("/test/failure_detection")
#
# # Create a node with data
# zk.create("/test/failure_detection/worker", value=b"a test value", ephemeral=True)

while True:
? ? # print ("I am alive!")
? ? time.sleep(1)

zk.stop()

python3.6下運行完美,收工!任何疑問請聯系我本人 QQ:99923309

轉載于:https://www.cnblogs.com/bdccloudy/p/7665262.html

總結

以上是生活随笔為你收集整理的原创:centos7.1下 ZooKeeper 集群安装配置+Python实战范例的全部內容,希望文章能夠幫你解決所遇到的問題。

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