zookeeper集群部署(zookeeper集群部署需要多少台机器)

本篇文章给大家谈谈zookeeper集群部署,以及zookeeper集群部署需要多少台机器对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Zookeeper为什么一般要部署奇数台服务器?

Zookeeper为什么一般要部署奇数台服务器?

这个问题,猛一看有点无从下手,其实考察的就是Zookeeper的选举机制。

首先要明确一点,任意台Zookeeper服务器都能够部署且正常运转。Zookeeper官方建议部署奇数台服务器,其实是基于节约资源的角度来考虑的。

Zookeeper默认采用Quoryms组件来处理集群的念仿腔脑裂问题。Quoryms的原则就是过半存活即可用。

假如我们需要搭建一个最大允许N台服务器宕机的Zookeeper集群,那么我们最少需要部署2N+1台服务器。也就是说,对于一个有2N+1台服务器服务器的Zookeeper集群来说,最大能接受N台服务器宕机。那么,有兄弟会大敬说,我部署2N+2台服务器也可以满足你的要求。是的,2N+1只是一个最优解。Zookeeper官方建议部署奇数台服务器,就是从资源利用率的角度来说的。毕竟,服务器资源的成本是比较大的仔衫,能少部署1台,就节约1台的成本。

K8s部署Zookeeper集群

记录Kubernetes使用StatefulSet方式部署Zookeeper集群。

使用动态PVC,PVC创建过程略过

Yaml文件包含configmap、service、StatefulSet。

vim zookeeper-test.yaml

更新资源清单

查看创建的资源清单

查看zookeeper配顷或置

查看集群状态

Zookeeper 集群敏磨部署完成。雀拿伍

[img]

zookeeper集群搭建方式

本次搭建版本是:zookeeper-3.4.14.tar.gz(以下在每台服务器都需要部署一遍)

1,将zookeeper-3.4.14.tar.gz 拷贝到服务器(本次集群是3台)指定文件夹位置。

        解压 tar -zxvf zookeeper-3.4.14.tar.gz   让后修改名称 mv zookeeper-3.4.14 zookeeper

2,进入到zookeeper目录。

3,然后在/etc/profile 增加zookeeper环境变量

4,进入到conf目录下面。修改zoo_sample.cfg 文件名

    执行命令:mv zoo_sample.cfg zoo.cfg

5,编辑zoo.cfg文件

    执行命令:vim zoo.cfg 

    1》修改dataDir 为zookeeper下面的data(该文件需要自己创建)

    2》clientPort 默认是2181 (此处有端口占用,所有我这边改成2182)

    3》在文件最后面加入集群(岩唯此处三台集群为什么这样加,暂时枝哗没有研究)

    server.0=ip1:2888:3888

    server.1=ip2:2888:3888

    server.2=ip3:2888:3888

6,在5中dataDir的目录下面新建myid文件,文件内容是当前zk的节点

7,启动每台服务器的zk服务节点,在bin目录下执行(添加环境变量的话可以在任意位置执行)

    执行命令:./zkServer.sh start(./zkServer.sh stop是停止)

    启动成功后 查看是否启动起来:

        执行命令:ps aux | grep 'zookeeper' 或者 jps

8,查看三台机器主从身份(leader 主 follower从)

至此zk集群搭建成功。

kafka集群搭建方式:粗搭培

zookeeper高可用集群部署

一、Zookeeper 的搭建方式春顷吵

Zookeeper 安装方式有三种,单机模式和集群扒侍模式以及伪集群模式。

Zookeeper 通过复制来实现高可用性,只要集合体中半数以上的机器处于可用状态,它就能够保证服务继续。

为什么一定要超过半数呢? 这跟 Zookeeper 的复制策略有关:Zookeeper 确保对 znode 树的每一个修改都会被复制到集合体中超过半数的机器上。

二、配置JDK环境

三、Zookeeper 单机模式搭建

1、下载 ZooKeeper :

2、解压

3、配置环境变量

非必须操作

4、修改 Zookeeper 的配置文件 conf/zoo.cfg

5、启动 ZooKeeper

四、Zookeeper 集群模式搭建

Zookeeper 集群模式搭建方案:

1、解压

2、配置环境变量

非必须操作

3、修改 Zookeeper 的配置文件

zookeeper参数说明

A :其中 A 是一个数字,表示这个是服务器的编号;乎坦B :是这个服务器的 ip 地址;C :Leader 选举的端口;D :Zookeeper 服务器之间的通信端口。

4、添加服务器标识配置 dataDir/myid

5、将修改后的zookeeper分发到其他节点

6、启动

分别在3个节点启动zookeeper

查看状态

五、 Zookeeper 伪集群模式搭建

只需将zookeper复制3份到不同的位置,配置如下

zookeeper服务脚本

一键部署zookeeper集群

#!/bin/sh

#install

IS_REDO="NONE"

NODE_NUM=0

SERVER_IP=""

WORK_DIR=$(dirname "$0")

cd ${WORK_DIR}

if [ "X"${WORK_DIR} = "X" ] ; then

WORK_DIR="."

fi

while :

do

IS_REDO="NONE"

NODE_NUM=0

SERVER_IP=""

echo -n "请输入需要安装DataOS的服务器IP地址(单机格式:IP,集群格式灶禅知:IP1,IP2,IP3) = "

read INSTALL_NODES_IPS

if [ "X"${INSTALL_NODES_IPS} = "X" ] ; then

echo -e "输入IP[33[31m"${i}"e[0m]信息无效,重新输入"

continue

fi

for i in `echo ${INSTALL_NODES_IPS} | sed 's/,/ /g'`

do

if ! echo ${i} | grep '[1-9][0-9]{0,2}.[0-9]{1,3}.[0-9]{1,3}.[1-9][0-9]{0,2}' ; then

echo -e "输入IP[33[31m"${i}"e[0m]信息无效"

IS_REDO="REDO"

break

fi

SERVER_IP=$(echo $i | awk -F'.' '{if((!($1 ~ /^0/) !($4 ~ /^0/)) ((length($2)1 !($2 ~ /^0/)) || length($2)==1) ((length($3)1 !($3 ~ /^0/)) || length($3)==1)) printf "%d.%d.%d.%d",$1,$2,$3,$4}' | awk -F'.' '{if(($10 $1=0 $2=0 $30 $4255)) printf "%d.%d.%d.%d",$1,$2,$3,$4}')

if [ "X"${SERVER_IP} = "X" ] ; then

echo -e "输入IP[33[31m"${i}"e[0m]信息无效"

IS_REDO="REDO"

break

fi

NODE_NUM=$((${NODE_NUM}+1))

done

if [ "X"${IS_REDO} = "XNONE" ] ; then

if [ ${NODE_NUM} -ne 3 -a ${NODE_NUM} -ne 1 ] ; then

echo -e "输入IP信息校验通过,但不满足[33[31m3个节点e[0m]的DataOS集群初始化要求"

continue

fi

echo -e "输入IP信息校验通过,将初始隐消化[33[32m"${NODE_NUM}"个节点e[0m]的DataOS集群"

rm -rf ${WORK_DIR}/../nodes/*

for i in `echo ${INSTALL_NODES_IPS} | sed 's/,/ /g'`

do

mkdir -p ${WORK_DIR}"/../nodes/"${i}

done

break

else

continue

fi

done

#################检查DataOS集群各节点的软件环境,安装zookeeper服务

IDX=0

SERVER_IP=""

for SERVER_IP in `ls ${WORK_DIR}"/../nodes/"`

do

let IDX=${IDX}+1 touch ${WORK_DIR}/../nodes/${SERVER_IP}/id=${IDX}

done

echo "请输入需要安装zookeeper服务的路径(例如:/data01) ="

read zkPath

ZOOKEEPER_DATA_DIR=$zkPath/袭丛zookeeper/data

ZOOKEEPER_LOG_DIR=$zkPath/zookeeper/logs

tar -zxf ${WORK_DIR}/../software/zookeeper.tar.gz -C /tmp

if [[ -n $(cat /tmp/zookeeper/conf/zoo.cfg |grep dataDir) ]] ;then

sed -i "s/^dataDir=.*/dataDir=${ZOOKEEPER_DATA_DIR/////}/g" /tmp/zookeeper/conf/zoo.cfg

else

echo "dataDir=${ZOOKEEPER_DATA_DIR}" /tmp/zookeeper/conf/zoo.cfg

fi

if [[ -n $(cat /tmp/zookeeper/conf/zoo.cfg |grep dataLogDir) ]] ;then

sed -i "s/^dataLogDir=.*/dataLogDir=${ZOOKEEPER_LOG_DIR/////}/g" /tmp/zookeeper/conf/zoo.cfg

else

echo "dataLogDir=${ZOOKEEPER_LOG_DIR}" /tmp/zookeeper/conf/zoo.cfg

fi

IDX=0

SERVER_IP=""

NodeIP1=""

NodeIP2=""

NodeIP3=""

for SERVER_IP in `ls ${WORK_DIR}/../nodes/*/id=* | sed 's/// /g' | sed 's/=/ /g' | awk '{printf "%s %s ",$(NF-2),$NF}' | sort -nk 2 | awk '{print $1}'`

do

let IDX=${IDX}+1

source ${WORK_DIR}"/../scripts/initCluster" ${SERVER_IP} || exit 255

if [ ${IDX} -eq 1 ] ; then

NodeIP1=$SERVER_IP

elif [ ${IDX} -eq 2 ]; then

NodeIP2=$SERVER_IP

else

NodeIP3=$SERVER_IP

fi

done

echo "server1.serverid=${NodeIP1}:2888:3888" /tmp/zookeeper/conf/zoo.cfg

echo "server2.serverid=${NodeIP2}:2888:3888" /tmp/zookeeper/conf/zoo.cfg

echo "server3.serverid=${NodeIP3}:2888:3888" /tmp/zookeeper/conf/zoo.cfg

IDX=0

SERVER_IP=""

for SERVER_IP in `ls ${WORK_DIR}/../nodes/*/id=* | sed 's/// /g' | sed 's/=/ /g' | awk '{printf "%s %s ",$(NF-2),$NF}' | sort -nk 2 | awk '{print $1}'`

do

let IDX=${IDX}+1

if [ ${IDX} -eq 1 ] ; then

echo 1 /tmp/zookeeper/data/myid

sshpass -p "${SYSUSER_PASSWORD}" scp -o StrictHostKeyChecking=no -P ${SSH_PORT} /tmp/zookeeper ${SYSUSER_NAME}@${NodeIP1}:$zkPath

elif [ ${IDX} -eq 2 ]; then

echo 2 /tmp/zookeeper/data/myid

sshpass -p "${SYSUSER_PASSWORD}" scp -o StrictHostKeyChecking=no -P ${SSH_PORT} /tmp/zookeeper ${SYSUSER_NAME}@${NodeIP2}:$zkPath

else

echo 3 /tmp/zookeeper/data/myid

sshpass -p "${SYSUSER_PASSWORD}" scp -r -o StrictHostKeyChecking=no -P ${SSH_PORT} /tmp/zookeeper ${SYSUSER_NAME}@${NodeIP3}:$zkPath

fi

done

以上便是zookeeper集群的一键部署shell脚本,其中引用的initCluster脚本,将在后续更新。

关于zookeeper集群部署和zookeeper集群部署需要多少台机器的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表