栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

docker 搭建zk集群/单机

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker 搭建zk集群/单机

文章目录
  • 前言
  • 目录结构
  • docker-compose.yml 如下
  • golang测试代码

前言
  1. 基于docker环境和docker-compose
  2. 当前zk 3.7.0
目录结构

zk1,2,3 组成集群
zk0 为单机
docker-compose.yml 如下
# cd zk/ 
docker compose up .
version: '3.8'
networks:
  zknet:
    name: zk-net

services:
  zk1:
    image: zookeeper:latest
    restart: always
    hostname: zk1
    container_name: zk1
    environment:
      - ZOO_MY_ID=1
      - ZOO_SERVERS=server.1=0.0.0.0:2888:3888 server.2=zk2:2888:3888 server.3=zk3:2888:3888;2181
    volumes:
      - ./zoo1/data:/data
      - ./zoo1/datalog:/datalog
    ports:
      - 2181:2181
      - 18081:8080
    networks:
      - zknet

  zk2:
    image: zookeeper:latest
    hostname: zk2
    container_name: zk2
    environment:
      - ZOO_MY_ID=2
      - ZOO_SERVERS=server.1=zk1:2888:3888 server.2=0.0.0.0:2888:3888 server.3=zk3:2888:3888;2181
    volumes:
      - ./zoo2/data:/data
      - ./zoo2/datalog:/datalog
    ports:
      - 2182:2181
      - 18082:8080
    networks:
      - zknet

  zk3:
    image: zookeeper:latest
    hostname: zk3
    container_name: zk3
    environment:
      - ZOO_MY_ID=3
      - ZOO_SERVERS=server.1=zk1:2888:3888 server.2=zk2:2888:3888 server.3=0.0.0.0:2888:3888;2181
    volumes:
      - ./zoo3/data:/data
      - ./zoo3/datalog:/datalog
    ports:
      - 2183:2181
      - 18083:8080
    networks:
      - zknet
  
  # 单机
  zk0:  
    image: zookeeper:latest
    hostname: zk0
    container_name: zk0
    volumes:
      - ./zoo0/data:/data
      - ./zoo0/datalog:/datalog
    ports:
      - 2184:2181
      - 18084:8080
    networks:
      - zknet
golang测试代码
package main

import (
	"fmt"
	"github.com/samuel/go-zookeeper/zk"
	"time"
)

func main() {
	//var hosts = []string{"localhost:2181", "localhost:2182", "localhost:2183"} //server端host
	var hosts = []string{"localhost:2184"} //server端host
	option := zk.WithEventCallback(callback)

	conn, _, err := zk.Connect(hosts, time.Second*5, option)
	defer conn.Close()
	if err != nil {
		panic(err)
	}

	flag, err := conn.Create("/TEST", []byte("123123"), zk.FlagEphemeral, zk.WorldACL(zk.PermAll))
	if err != nil {
		panic(err)
	}

	_, _, ch, err := conn.ExistsW("/TEST")
	if err != nil {
		panic(err)
	}
	go watchCreataNode(ch)

	bytes, _, err := conn.Get("/TEST")
	if err != nil {
		panic(err)
	}
	println(string(bytes))

	flag, err = conn.Create("/TEST", []byte("123123"), zk.FlagSequence, zk.WorldACL(zk.PermAll))
	if err != nil {
		panic(err)
	}
	println(string(flag))

	time.Sleep(5*time.Second)
}

func callback(event zk.Event) {
	fmt.Println("*******************")
	fmt.Println("path:", event.Path)
	fmt.Println("type:", event.Type.String())
	fmt.Println("state:", event.State.String())
	fmt.Println("-------------------")
}


func watchCreataNode(ech <-chan zk.Event){
	event:=<-ech
	fmt.Println("*******************")
	fmt.Println("path:", event.Path)
	fmt.Println("type:", event.Type.String())
	fmt.Println("state:", event.State.String())
	fmt.Println("-------------------")
}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/941269.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号