Docker部署Zookeeper集群

簡介

ZooKeeper 是一個開源的分布式協調服務,由 Apache 軟件基金會開發和維護。它主要用于管理和協調分布式系統中的多個節點,以解決分布式環境下的常見問題,如配置管理、服務發現、分布式鎖等。ZooKeeper 提供了一種可靠的機制,使得分布式系統中的節點可以高效地協作,確保數據的一致性和服務的高可用性。

核心功能

  • 命名服務

    • 為分布式系統中的節點提供唯一的名稱,方便節點之間的識別和訪問。這類似于 DNS 在互聯網中的作用,但更專注于分布式系統內部的節點命名。

  • 分布式鎖

    • 實現分布式環境下的鎖機制,確保在多節點訪問共享資源時,資源的一致性和完整性。ZooKeeper 通過其內部的順序節點創建和監聽機制,可以有效地實現分布式鎖。

  • 配置管理

    • 集中管理分布式系統中的配置信息。當配置信息發生變化時,ZooKeeper 可以及時通知各節點,確保所有節點使用最新的配置。

  • 服務發現

    • 動態發現系統中的可用服務實例。服務啟動后可在 ZooKeeper 中注冊,其他服務可通過 ZooKeeper 查詢可用的服務實例列表。

  • 隊列管理

    • 實現分布式隊列,包括普通隊列(FIFO)和優先隊列,用于任務調度和消息傳遞等場景。

搭建步驟

部署Docker

部署docker-compose

單實例部署(簡單)

docker run --name some-zookeeper --restart always -d zookeeper

單實例部署(使用自定義配置文件)

1、創建zookeeper管理用戶和工作目錄

useradd zookeeper
su - zookeeper
mkdir -p zookeeper/{data,conf,logs}

2、自定義配置文件zoo.cfg(舉例)

cat > zookeeper/conf/zoo.cfg <<EOF
dataDir=/data
clientPort=2181
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=true
server.1=localhost:2888:3888;2181
EOF

3、啟動zookeeper單實例

docker run --name some-zookeeper --restart always \-e ZOO_LOG4J_PROP="INFO,ROLLINGFILE" \--user $(id -u):$(id -g) \-v $(pwd)/zookeeper/data:/data ?\-v $(pwd)/zookeeper/conf:/conf \-v $(pwd)/zookeeper/logs:/datalog ?\-d zookeeper

驗證Zookeeper狀態

docker exec -it some-zookeeper /bin/bash zkServer.sh status

ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone

進入控制臺

docker run -it --rm --link some-zookeeper:zookeeper zookeeper zkCli.sh -server zookeeper

創建結點

使用以下命令創建持久結點:
create /test '測試'

查看結點

查看結點存儲的值及其狀態:
get /test

查看結點狀態:
stat /test

修改結點

修改結點數據:
set /test '新數據'

刪除結點

刪除結點:
delete /test

遞歸刪除結點及其所有子結點:
deleteall /test

使用docker-compose部署集群

啟動集群前

1、最好創建zookeeper用戶。

2、需要提前準備的配置提前準備好,通過掛載卷的方式掛載給容器。

3、也可以通過環境變量的方式修改zookeeper啟動項

(注:如上操作均需要定義到docker-compose.yaml中,下面僅僅是舉例,只能在測試開發環境下使用。)

1、定義docker-compose.yaml(舉例)

注:如果docker-compose啟動集群時,無法自動創建network,或者就要使用已有的network,注意下面的紅色部分。

services:
? zoo1:
? ? image: zookeeper
? ? restart: always
? ? hostname: zoo1
? ? ports:
? ? ? - 2181:2181
? ? environment:
? ? ? ZOO_MY_ID: 1
? ? ? ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
? ? networks:
? ? ? - zookeeper-net

? zoo2:
? ? image: zookeeper
? ? restart: always
? ? hostname: zoo2
? ? ports:
? ? ? - 2182:2181
? ? environment:
? ? ? ZOO_MY_ID: 2
? ? ? ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
? ? networks:
? ? ? - zookeeper-net

? zoo3:
? ? image: zookeeper
? ? restart: always
? ? hostname: zoo3
? ? ports:
? ? ? - 2183:2181
? ? environment:
? ? ? ZOO_MY_ID: 3
? ? ? ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
? ? networks:
? ? ? - zookeeper-net

networks:
? zookeeper-net:
? ? external: true

2、啟動zookeeper集群

docker-compose up -d

3、查看zookeeper集群狀態

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/81942.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81942.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/81942.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【學習筆記】Sophus (Python) 使用文檔

以下是一份針對 Sophus 庫的 Python 使用文檔&#xff0c;涵蓋基礎概念、安裝方法、核心功能及代碼示例。內容圍繞 SO3&#xff08;3D旋轉群&#xff09;和 SE3&#xff08;3D剛體變換群&#xff09;展開&#xff0c;適合機器人學、SLAM、三維幾何等領域。 Sophus (Python) 使用…

計算機圖形學:(三)MVP變換擴展

Three.js WebGL允許把JavaScript和OpenGL 結合在一起運用&#xff0c;但使用WebGL原生的API來寫3D程序非常的復雜&#xff0c;同時需要相對較多的數學知識&#xff0c;對于前端開發者來說學習成本非常高。 Three.js是基于webGL的封裝的一個易于使用且輕量級的3D庫&#xff0c;T…

MySQL數據庫操作合集

一、SQL通用語法 ①SQL語句可以單行或多行書寫&#xff0c;以分號結尾。 ②SQL語句可以使用空格/縮進來增強語句可讀性。 ③MySQL數據庫的SQL語句不區分大小寫&#xff0c;關鍵字建議使用大寫。 ④注釋&#xff1a; 單行注釋&#xff1a; -- 注釋內容 或 # 注釋內容&#…

傳統工程項目管理與業財一體化管理的區別?

在工程項目管理領域&#xff0c;傳統管理模式與新興的業財一體化管理模式正在形成鮮明對比。隨著數字化轉型的加速&#xff0c;工程行業對高效、透明、協同的管理需求日益迫切。傳統工程項目管理依賴人工操作、分散系統和分模塊管理&#xff0c;難以應對復雜項目的全生命周期需…

敦煌網測評從環境搭建到風控應對,精細化運營打造安全測評體系

自養號測評&#xff0c;搶占流量為快速提升產品權重和銷量&#xff0c;很多賣家常采用自己養號補單測評的方式&#xff0c;技術搭建需要很多要素 一、硬件參數的關聯性 在我們使用設備進行注冊或操作賬號的過程中&#xff0c;系統會記錄下大量的系統與網絡參數&#xff0c;其中…

redis Pub/Sub 簡介 -16 (PUBLISH、SUBSCRIBE、PSUBSCRIBE)

Redis Pub/Sub 簡介&#xff1a;PUBLISH、SUBSCRIBE、PSUBSCRIBE Redis Pub/Sub 是一種強大的消息傳遞范例&#xff0c;可在應用程序的不同部分之間實現實時通信。它是構建可擴展和響應式系統的基石&#xff0c;允許組件在沒有直接依賴的情況下進行交互。本章將全面介紹 Redis…

JavaSE核心知識點03高級特性03-01(集合框架)

&#x1f91f;致敬讀者 &#x1f7e9;感謝閱讀&#x1f7e6;笑口常開&#x1f7ea;生日快樂?早點睡覺 &#x1f4d8;博主相關 &#x1f7e7;博主信息&#x1f7e8;博客首頁&#x1f7eb;專欄推薦&#x1f7e5;活動信息 文章目錄 JavaSE核心知識點03高級特性03-01&#xff0…

日志分析-IIS日志分析

環境準備 https://xj.edisec.net/challenges/115 題目要求 windows系統中才有的IIS服務 既然是windows平臺&#xff0c;當然需要rdp登錄&#xff0c;在ssh登錄失敗 解題過程 phpstudy--2018站點日志.(.log文件)所在路徑&#xff0c;提供絕對路徑 Windows服務的日志一般有固定…

一、web安全基礎入門

1、Windows命令 文件和目錄操作 dir&#xff1a;列出當前目錄下的文件和子目錄。cd&#xff1a;切換目錄&#xff0c;例如 cd C:\Users 切換到C盤的Users目錄。md 或 mkdir&#xff1a;創建新目錄&#xff0c;如 md testdir。rd 或 rmdir&#xff1a;刪除空目錄&#xff0c;例…

動態規劃應用場景 + 代表題目清單(模板加上套路加上題單)

1. 序列型DP&#xff08;Sequence DP&#xff09; ? 應用場景 單個或多個序列&#xff08;數組/字符串&#xff09;&#xff0c;求最優子結構。 常見問題&#xff1a;最長遞增子序列、最長公共子序列、回文子序列。 &#x1f9e0; 套路總結 單序列&#xff1a;dp[i] max(…

Linux iSCSI存儲共享實驗指南

實驗介紹 1、在Linux平臺上通過iSCSI協議實現IP-SAN存儲共享 2、掌握存儲導出(export)和存儲導入(import)的配置方法 3、學習iSCSI存儲的發現、連接、斷開和管理操作 1、實驗環境 兩臺同網段的Linux虛擬機&#xff08;無需物理交換機&#xff09; 操作系統&#xff1a;Lin…

從 Docker 到 runC

從 Docker 到 runC:容器底層原理詳解 目錄 1. Docker 與 runC 的關系 2. Docker 的核心組件 3. runC 的核心功能 4. 實戰示例:從 Docker 到 runC 4.1 示例場景:運行一個簡單容器 4.2 Docker 底層調用 runC 的流程 4.3 查看 runC 的調用 4.4 直接調用 runC 創建容器 …

使用Python在PowerPoint中插入形狀(Shape)

在進行演示文稿設計時&#xff0c;形狀&#xff08;Shape&#xff09;不僅可以增強視覺效果&#xff0c;還可以用于展示流程圖、標注、數據圖示等。借助Python&#xff0c;我們可以通過代碼快速批量地在PPT中添加各種形狀&#xff0c;提升設計效率。本文將介紹如何使用Python向…

Windows系統下MySQL 8.4.5壓縮包安裝詳細教程

一、MySQL 8.4.5新特性概覽 相較于舊版本&#xff0c;MySQL 8.4.5在性能與功能上實現了顯著提升&#xff1a; 性能優化&#xff1a;官方測試顯示&#xff0c;在高并發場景下&#xff0c;其讀寫性能較5.7版本提升近2倍&#xff0c;尤其在處理熱點數據競爭問題時表現更為出色。…

深度解析Vue項目Webpack打包分包策略 從基礎配置到高級優化,全面掌握性能優化核心技巧

深度解析Vue項目Webpack打包分包策略 從基礎配置到高級優化&#xff0c;全面掌握性能優化核心技巧 一、分包核心價值與基本原理 1.1 為什么需要分包 首屏加載優化&#xff1a;減少主包體積&#xff0c;提升TTI&#xff08;Time to Interactive&#xff09;緩存利用率提升&am…

【昇騰開發者訓練營:Dify大模型部署實戰】MindIE + Dify + DeepSeek + Embedding模型 + Rerank模型

文章目錄 部署 Dify1. Dify 適配 ARM2. 安裝 docker3. 啟動 Dify MindIEDify 實操手冊1. 基礎環境搭建1.1 環境檢查1.2 下載模型權重1.3 獲取MindIE鏡像 2. 啟動容器3. 純模型推理測試3.1 純模型對話測試3.2 性能測試 4. 服務化部署4.1 MindIE 配置4.2 MindIE 服務化4.3 發起測…

塔能高溫冰蓄冷技術:工廠能耗精準節能的創新之路

在工廠的能耗構成中&#xff0c;制冷系統是重要的耗能環節。傳統的水蓄冷和冰蓄冷技術在實際應用中存在一些局限性&#xff0c;難以滿足工廠對節能和成本控制的更高要求。塔能科技的高溫冰蓄冷技術&#xff0c;憑借其獨特的優勢&#xff0c;為工廠能耗精準節能提供了創新的解決…

通過現代數學語言重構《道德經》核心概念體系,形成一個兼具形式化與啟發性的理論框架

以下是對《道德經》的數學轉述嘗試&#xff0c;通過現代數學語言重構其核心概念&#xff0c;形成一個兼具形式化與啟發性的理論框架&#xff1a; 0. 基礎公理體系 定義&#xff1a; 《道德經》是一個動態宇宙模型 U(D,V,Φ)&#xff0c;其中&#xff1a; D 為“道”的無限維…

SQLMesh Typed Macros:讓SQL宏更強大、更安全、更易維護

在SQL開發中&#xff0c;宏&#xff08;Macros&#xff09;是一種強大的工具&#xff0c;可以封裝重復邏輯&#xff0c;提高代碼復用性。然而&#xff0c;傳統的SQL宏往往缺乏類型安全&#xff0c;容易導致運行時錯誤&#xff0c;且難以維護。SQLMesh 引入了 Typed Macros&…

5月23日day34打卡

GPU訓練及類的call方法 知識點回歸&#xff1a; CPU性能的查看&#xff1a;看架構代際、核心數、線程數GPU性能的查看&#xff1a;看顯存、看級別、看架構代際GPU訓練的方法&#xff1a;數據和模型移動到GPU device上類的call方法&#xff1a;為什么定義前向傳播時可以直接寫作…