zookeeper集群部署(zookeeper集群部署需要多少台机器)
本篇文章给大家谈谈zookeeper集群部署,以及zookeeper集群部署需要多少台机器对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Zookeeper为什么一般要部署奇数台服务器?
- 2、K8s部署Zookeeper集群
- 3、zookeeper集群搭建方式
- 4、zookeeper高可用集群部署
- 5、一键部署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集群部署需要多少台机器的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。