说明:提供服务的机器数量2*n + 1 奇数台
至少要超过半数,zookeeper才可以提供服务,因为Zookeeper只允许半数宕机。
操作步骤:
-
下载Zookeeper安装包
这里我用到的是zookeeper-3.4.8
下载地址:http://mirror.bit.edu.cn/apache/zookeeper/
-
解压到指定目录
准备三台linux服务器,每台服务器都放zookeeper压缩文件。解压zookeeper-3.4.8.tar.gz到一个目录下,比如解压到根目录下/zookeeper 文件夹
解压命令:
tar zxvf zookeeper-3.4.8.tar.gz
- 修改hosts文件
ZooKeeper建议使用hostname,而非ip。这需要对主机的/etc/hostname和/etc/hosts做host绑定。
ZooKeeper以Fast Paxos算法为基础,用于完成leader的选举工作,所以至少需要3个节点。
为此,我准备了以下3个节点:
172.16.101.83 ubuntu-zookeeper-01
172.16.101.91 ubuntu-zookeeper-02
172.16.101.94 ubuntu-zookeeper-03
修改命令:
sudo vim /etc/hosts
修改如下:
达到如下效果则配置成功:
-
修改配置文件
打开解压后的Zookeeper文件目录下conf目录的zoo_sample.xml文件
ubuntu-zookeeper-01:代表zookeeper的主机名
12888端口:代表访问Zookeeper的端口
13888端口:代表重新选举leader的端口
-
linux不同机器之间无法访问,端口没有开通处理办法
开放端口命令:
iptables -A INPUT -p tcp --dport 12888-j ACCEPT
或者编辑 /etc/sysconfig/iptables 增加:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 12888 -j ACCEPT
查看端口是否已经开放
/etc/init.d/iptables status
查看端口占用,来检验下是不是已经打开了某某端口
netstat -an | grep 端口号
修改之后,重启iptables
service iptables restart
- 新建dataDir目录
在根目录下新建/tmp/zookeeper,不过不建议新建tmp目录,这个是临时目录,最好自己新建其他名字的目录。三台服务器都需要新建目录。
linux系统新建文件夹命令:
mkdir zookeeper
- 创建myid文件
在三台主机下,分别在刚才新建的dataDir目录下新建名称为myid,内容分别为1,2,3的文件
命令如下:
echo "1" > myid
echo "2" > myid
echo "3" > myid
打开myid文件查看内容:
cat myid
- 修改权限
修改bin目录下文件权限为可执行:
原来bin目录下文件权限为:
-rw-r--r--
修改bin目录下文件夹权限为可执行权限:
-rwxr-xr-x
给bin目录下所有用户添加x–可执行权限
chomd -R a+x bin/
- 启动Zookeeper
启动Zookeeper命令:
./zkServer.sh start
查看集群的状态:
./zkServer.sh status