zookeeper集群安装
建立安装目录mkdir -p /local/software/zookeeper/cd /local/software/zookeeper/1.2) 下载压缩包 curl -O http://apache.oss.eznetsols.org/hadoop/zookeeper/zookeeper-3.3.1/zookeeper-3.3.1.tar.gz 1.3) 解压缩文件 tar xzf zookeeper-3.3.1.tar.gz cd /local/software/zookeeper/
2. Config我们把提供相同应用的服务器组称之为一个quorum,quorum中的所有机器都有相同的配置文件。在这里我们以3个机器组成的quorum为例,具体配置如下。
2.1) 建立数据目录 mkdir -p /local/software/zookeeper/zookeeper-3.3.1/data
2.2) 编辑配置文件 /local/software/zookeeper/zookeeper-3.3.1/conf/zoo.cfg
dataDir=/local/software/zookeeper/zookeeper-3.3.1/dataclientPort=2181 initLimit=10 syncLimit=5 tickTime=2000 server.1=175.41.131.28:2888:3888 server.2=175.41.131.114:2888:3888 server.3=175.41.132.171:2888:3888
其中server.X代表组成整个服务的机器,当服务启动时,会在数据目录下查找这个文件myid,这个文件中存有服务器的号码。下面会讲myid文件的配置。
2.3) 创建dataDir参数指定的目录(这里指的是"/local/software/zookeeper/zookeeper-3.3.1/data"),并在目录下创建文件,命名为“myid”, 编辑该“myid”文件,并在对应的IP的机器上输入对应的编号。如在175.41.131.114 上,“myid”文件内容就是2,在175.41.132.171上,内容就是 3
2.4)注意打开防火墙的端口(1)如果是用iptable的话,在/etc/sysconfig/iptables中加入: -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2181 j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2888 j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3888 j ACCEPT
执行命令:
service iptables stop
service iptables start
(2)EC2上的请打开相应的防火墙端口
3. 启动服务 三台先後下zkServer start 指令,限定先後,但三台行此指令的隔不宜久(因有定timeout) bin/zkServer.sh start 没有出错信息,则成功启动
4. 执行测试4.1)在一台机器如server.2上进行一个写操作:$bin/zkCli.sh -server 127.0.0.1:2181[zk: 127.0.0.1:2181(CONNECTED) 1] create /mytest test[zk: 127.0.0.1:2181(CONNECTED) 3] ls /[mytest, zookeeper][zk: 127.0.0.1:2181(CONNECTED) 5] get /mytesttestcZxid = 0x100000002ctime = Mon Jul 19 03:30:20 EDT 2010mZxid = 0x100000002mtime = Mon Jul 19 03:30:20 EDT 2010pZxid = 0x100000002cversion = 0dataVersion = 0aclVersion = 0ephemeralOwner = 0x0dataLength = 4numChildren = 0
4.2)在其他机器上查询:(如ssh://root@175.41.131.28:22)[zk: 127.0.0.1:2181(CONNECTED) 1] ls /[mytest, zookeeper][zk: 127.0.0.1:2181(CONNECTED) 2] ls /mytest[][zk: 127.0.0.1:2181(CONNECTED) 3] get /mytesttestcZxid = 0x100000002ctime = Mon Jul 19 03:30:20 EDT 2010mZxid = 0x100000002mtime = Mon Jul 19 03:30:20 EDT 2010pZxid = 0x100000002cversion = 0dataVersion = 0aclVersion = 0ephemeralOwner = 0x0dataLength = 4numChildren = 0
$bin/zkServer.sh statusJMX enabled by defaultUsing config: /local/software/zookeeper/zookeeper-3.3.1/bin/../conf/zoo.cfg2010-07-19 04:09:49,862 - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn$Factory@250] - Accepted socket connection from /127.0.0.1:422342010-07-19 04:09:49,864 - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1236] - Processing stat command from /127.0.0.1:422342010-07-19 04:09:49,866 - INFO [Thread-20:NIOServerCnxn$StatCommand@1152] - Stat command output2010-07-19 04:09:49,866 - INFO [Thread-20:NIOServerCnxn@1434] - Closed socket connection for client /127.0.0.1:42234 (no session established for client)Mode: follower
5. 注意事项 通过shell脚本在每个机器上启动zookeeper的时候,可能会显示错误信息“Cannot open channel to X at election address”。这是由于zoo.cfg文件中指定的其他zookeeper服务找不到所导致。所有机器的zookeeper服务启动之后该错误提示将会消失。