otter使用zookeeper进行调度,因此应该安装并启动zookeeper。
首先下载Zookeeper
wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
下载完成后,进入压缩包所在目录,将软件解压至期望的位置,如我将zookeeper软件统一放置在预先创建的/app目录下。
tar zxvf zookeeper-3.4.6.tar.gz -C /app
zookeeper会解包带有版本号的文件夹,如果需要改名,在zookeeper所在的上层目录下执行:
mv zookeeper-3.4.6 zookeeper
cd到zookeeper目录内,建立data文件夹,用于保存本机zookeeper的识别ID,运行日志等信息。
mkdir data
然后进入zookeeper的conf文件夹内从sample复制配置文件
cp zoo_sample.cfg zoo.cfg
编辑配置文件zoo.cfg
dataDir=/app/zookeeper/data
autopurge.purgeInterval=1
修改bin/zkEnv.sh脚本:
ZOO_LOG_DIR="."
修改为
ZOO_LOG_DIR="/app/zookeeper/data"
ZOO_LOG4J_PROP="INFO,CONSOLE"
修改为
ZOO_LOG4J_PROP="INFO,ROLLINGFILE"
修改bin/zkServer.sh脚本:
ZOOBIN="${BASH_SOURCE-$0}"
修改为
ZOOBIN=`readlink -f "${BASH_SOURCE-$0}"`
修改bin/zkCli.sh脚本:
ZOOBIN="${BASH_SOURCE-$0}"
修改为
ZOOBIN=`readlink -f "${BASH_SOURCE-$0}"`
为方便使用,为系统引入zookeeper的命令集:
ln -s /app/zookeeper/bin/zkServer.sh /usr/local/bin/zk-server
ln -s /app/zookeeper/bin/zkCli.sh /usr/local/bin/zk-cli
以后可以使用如下命令启动和停止zookeeper服务:
启动:zk-server start
关闭:zk-server stop
接下来配置Zookeeper集群
zookeeper可以以集群形式布置,也可以独立配置。根据zookeeper的机制,如果建立集群,Leader和Follower的架构应该使用奇数台服务器。
集群的建立也很简单,在集群的每台机器上,打开zookeeper下的conf/zoo.cfg文件,声明服务器集群信息。
分三种情况:
server.1 = server_1_ip:2888:3888
根据我们现有机器数量的情况,只采用了单点配置(情况2、3供参考)。也就是将国内的这台服务器配置了单点zookeeper服务,国内机器上的manager/node和国外机器的node服务均连接到该zookeeper服务上。
server.1 = server_1_ip:2888:3888
server.2 = server_2_ip:2888:3888
server.3 = server_3_ip:2888:3888
server.1 = server_1_ip:2888:3888
server.2 = server_2_ip:2888:3888
server.3 = server_3_ip:2888:3888
server.4 = server_4_ip:2888:3888:observer
并且server.4的zoo.cfg配置文件中需要额外加入
peerType=observer
来声明自己作为observer身份运行。
server.x当中的x就是每个机器的zookeeperID
以上单点或集群设置完毕后,还需要在每台zookeeper服务器的zookeeper/data/文件夹中创建名为“myid”的文件,文件内写入本机对应的zookeeperID,例如IP为server_1_ip的机器上:
echo 1 > /app/zookeeper/data/myid
如果按上述文章已经建立了zk的脚本到/usr/local/bin中,那么在集群配置好后,可以通过zk-server start启动**所有**zookeeper集群中的服务器。
启动后,可通过
zk-server status
查看该机器zookeeper服务的运行状态,对于我们的单点配置的情况,看到的应该是:
Mode: standalone
Zookeeper运行后,需进行Otter-manager和Otter-node的安装配置。