RHEL自动安装Zookeeper的shell脚本

A:本脚本运行的机器,Linux RHEL6

B,C,D,…:待安装zookeeper cluster的机器, Linux RHEL6

首先在脚本运行的机器A上确定可以ssh无密码登录到待安装zk的机器B,C,D,…上,然后就可以在A上运行本脚本:

$ ./install_zookeeper

前提:

B, C, D机器必须配置好repo,本脚本使用的是cdh5的repo, 下面的内容保存到:/etc/yum.repos.d/cloudera-cdh5.repo:

[cloudera-cdh5]# Packages for Cloudera’s Distribution for Hadoop, Version 5, on RedHator CentOS 6 x86_64name=Cloudera’s Distribution for Hadoop, Version 5baseurl=http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/5/gpgkey = gpgcheck = 1enabled = 1

自动安装脚本将自动在B,C,D机器上安装好zookeeper, 配置好相关配置文件。但没有启动它们。支持1,3,5,7个服务器。

#!/bin/bash## @file# install_zookeeper.sh## @date# 2014-12-21## @author# cheungmine@hgdb.net## @version# 0.0.1pre## @usage# ./install_zookeeper.sh################################################################################

#***********************************************************# split_to_array# split string into array#***********************************************************function split_to_array() { OLD_IFS=”$IFS” IFS=”$2″ array=($1) IFS=”$OLD_IFS”}

#***********************************************************# install_zookeeper# install zookeeper on 1, 3 or 5 servers## Parameters:# clientPort – the port at which the clients will connect to# servers – varying arguments: 1, 3, 5, up to 7# “zkServer:serverPort:appPort”# zkServer – ipaddr of zookeeper server# serverPort – communication port for zookeeper servers# appPort – communication port between zookeeper with other applications## Example:# 1) install_zookeeper 2181 zk1 zk2 zk3# 2) install_zookeeper 2181 192.168.122.201 192.168.122.202 192.168.122.203# 3) install_zookeeper “2181” “192.168.122.201:2888:3888” “192.168.122.202:2888:3888” “192.168.122.203:2888:3888″# 4) install_zookeeper “2181:/var/lib/zookeeper” “192.168.122.201:2888:3888” “192.168.122.202:2888:3888” “192.168.122.203:2888:3888″#***********************************************************ERR_INVALID_ZK_SERVERS=1001

function install_zookeeper() { echo -e “<INFO> install zookeeper on cluster …” #chk_root

local ret clientPort dataDir len i ZOO_CFG server serverPort appPort destip destlogin

serverPort=2888 appPort=3888

# parse the first argument split_to_array $1 “:”

# the port at which the clients will connect clientPort=${array[0]}

# the directory where the snapshot is stored dataDir=”/var/lib/zookeeper” if [ ${#array[*]} -eq 2 ]; then dataDir=${array[1]} fi

echo -e “<INFO> clientPort: $clientPort” echo -e “<INFO> dataDir: $dataDir”

# zookeeper configure file ZOO_CFG=”/usr/lib/zookeeper/conf/zoo.cfg”

# get list of servers: args shift local argc=$#

if [ $argc -eq 1 -o $argc -eq 3 -o $argc -eq 5 -o $argc -eq 7 ]; then echo -e “<INFO> zookeeper servers in cluster: [$argc]” else echo -e “<ERROR> invalid zookeeper servers: [$argc]” exit $ERR_INVALID_ZK_SERVERS; fi

local argv=”$@”

OLD_IFS=”$IFS” IFS=” ” local args=($argv) IFS=”$OLD_IFS”

# array variable local ipaddrs=() local servers=()

local sid=0 for a in ${args[@]} do let sid++

# check if server format is either of: # serverIP # or: # serverIP:serverPort:appPort split_to_array $a “:” serverIP=${array[0]}

if [ ${#array[*]} -ne 3 ]; then a=”$serverIP:$serverPort:$appPort”; fi

local server=”server.$sid=$a” servers[sid-1]=$server echo $server

ipaddrs[sid-1]=$serverIP done

带上心灵去旅行,以平和的心态看待一切,

RHEL自动安装Zookeeper的shell脚本

相关文章:

你感兴趣的文章:

标签云: