zookeeper集群安装

安装jdk

# tar fzx jjdk-8u191-linux-x64.tar.gz -C /opt/module/

# cd /opt/module && ln -sv jdk1.8.0_191/ jdk

# vim /etc/profile
export JAVA_HOME=/opt/module/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

# source /etc/profile

分发各节点

# ansible node[2..3] -m synchronize -a "src=/data/module/jdk1.8.0_201 dest=/data/module"

安装zookeeper

# tar xfz apache-zookeeper-3.5.5-bin.tar.gz -C /opt/module/
# cd /opt/module/

# ln -sv apache-zookeeper-3.5.5-bin/ zookeeper
‘zookeeper’ -> ‘apache-zookeeper-3.5.5-bin/’

# vim /etc/profile
export HADOOP_HOME=/opt/module/hadoop-2.6.0
export JAVA_HOME=/opt/module/jdk
export ZOOKEEPER_HOME=/opt/module/zookeeper
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

# source /etc/profile

配置zookeeper

  # vim zookeeper/conf/zoo.cfg
# 滴答时间,默认是2000毫秒,即2秒。它是zookeeper最小的时间单位
tickTime=2000

#表示用于在从节点与主节点之间建立初始化连接的时间上限
initLimit=10

#表示允许从节点与主节点处于不同步状态的时间上限,和initLimit一样,都是tickTime的倍数
syncLimit=5

# 事务提交日志目录
dataDir=/opt/module/apache-zookeeper-3.5.5-bin/zkTxData
# 快照日志目录
dataLogDir=/opt/module/apache-zookeeper-3.5.5-bin/zkSnapshot

# 客户端连接端口
clientPort=2181
# 限制连接到 ZooKeeper 的客户端的数量,此配置选项可以用来阻止某些类别的 Dos 攻击。
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

# 指定了需要保留的文件数目。默认是保留3个。
#autopurge.snapRetainCount=3

# 3.4.0及之后版本,ZK提供了自动清理事务日志和快照文件的功能,这个参数指定了清理频率,单位是小时,需要配置一个
1或更大的整数,默认是0,表示不开启自动清理功能。
#autopurge.purgeInterval=1

#服务器地址遵循 server.X=hostname:peerPort:leaderPort 格式,X为服务器的ID,它必须是一个整数,不过不一定要从 0 
开始,也不要求是连续的;hostname服务器的机器名或 IP 地址;peerPort用于节点间通信的 TCP 端口;leaderPort用于首>
领选举的 TCP 端口。
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888

创建日志目录

# mkdir /opt/module/apache-zookeeper-3.5.5-bin/zkTxData

# mkdir /opt/module/apache-zookeeper-3.5.5-bin/zkSnapshot

配置免密登录

# ssh-keygen -t rsa -f /root/.ssh/id_rsa -P ""

# yum install -y sshpass

# for i in node{1..3};do sshpass -p123456 ssh-copy-id -i /root/.ssh/id_rsa.pub "-o StrictHostKeyChecking=no" $i;done

分发配置

# ansible node[2..3] -m synchronize -a "src=/opt/module/apache-zookeeper-3.5.5-bin dest=/opt/module/ perms=yes rsync_opts=--exclude=myid "

创建myid文件等

# ansible node[2..3] -m file -a "src=/opt/module/apache-zookeeper-3.5.5-bin state=link dest=/opt/module/zookeeper"

# echo 1 >  /opt/module/zookeeper/zkTxData/myid

# ansible node2 -m shell -a ‘echo 2 > /opt/module/zookeeper/zkTxData/myid‘

# ansible node3 -m shell -a ‘echo 3 > /opt/module/zookeeper/zkTxData/myid‘

# ansible node[2..3] -m synchronize -a "src=/etc/profile dest=/etc"

# ansible node[2..3] -m synchronize -a "src=/etc/hosts dest=/etc"

# ansible node[2..3] -m shell -a "source /etc/profile"

编写zookeeper启动脚本

# vi /usr/local/bin/zookeeper_manager.sh 

#!/bin/bash

#判断用户是否传参
if [ $# -ne 1 ];then
    echo "无效参数,用法为: $0  {start|stop|restart|status}"
    exit
fi

#获取用户输入的命令
cmd=$1

#定义函数功能
function zookeeperManger(){
    case $cmd in
    start)
        echo "启动服务"        
        remoteExecution start
        ;;
    stop)
        echo "停止服务"
        remoteExecution stop
        ;;
    restart)
        echo "重启服务"
        remoteExecution restart
        ;;
    status)
        echo "查看状态"
        remoteExecution status
        ;;
    *)
        echo "无效参数,用法为: $0  {start|stop|restart|status}"
        ;;
    esac
}


#定义执行的命令
function remoteExecution(){
    for (( i=1 ; i<=3 ; i++ )) ; do
            tput setaf 2
            echo ========== node${i} zkServer.sh  $1 ================
            tput setaf 9
            ssh node${i} "source /etc/profile ; zkServer.sh $1"
    done
}

#调用函数
zookeeperManger 

# 添加权限
# chmod +x /usr/local/bin/zookeeper_manager.sh

启动zookeeper

# zookeeper_manager.sh start
启动服务
========== node1 zkServer.sh start ================
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
========== node2 zkServer.sh start ================
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
========== node3 zkServer.sh start ================
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

相关推荐