美文网首页谈技术
Zookeeper 安装与部署

Zookeeper 安装与部署

作者: 懒癌正患者 | 来源:发表于2018-03-28 20:22 被阅读41次

    Zookeeper安装方式有三种,单机模式集群模式以及伪集群模式

    ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境;

    ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例;

    ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble)

    单机模式

    下载 ZooKeeper,解压,将 conf 目录下的 zoo_sample.cfg 复制一份重命名为 zoo.cfg

    cp zoo_sample.cfg zoo.cfg

    然后直接启动 ZooKeeper 就行了

    bin/zkServer.sh start

    启动 ZooKeeper

    查看 ZooKeeper 运行状态

    查看 ZooKeeper 运行状态

    可以看到 ZooKeeper 的 Mode 是单机模式的(standalone)

    使用客户端连接  ZK

    本地连接

    bin/zkCli.sh

    本地连接 ZK

    远程连接 ZK

    bin/zkCli.sh -server ip:port

    远程连接 ZK

    停止 ZooKeeper

    bin/zkServer.sh stop

    停止 ZK

    伪集群模式

    Zookeeper不但可以在单机上运行单机模式Zookeeper,而且可以在单机模拟集群模式 Zookeeper的运行,也就是将不同节点运行在同一台机器。我们在实验的时候,可以先使用少量数据在集群伪分布模式下进行测试。当测试可行的时候,再将数据移植到集群模式进行真实的数据实验。这样不但保证了它的可行性,同时大大提高了实验的效率。这种搭建方式,比较简便,成本比较低,适合测试和学习,如果你的手头机器不足,就可以在一台机器上部署了 3个server。

    注意事项

    在一台机器上部署了3个server,需要注意的是:在伪分布式模式下我们使用的每个配置文件模拟一台机器,也就是说单台机器上运行多个Zookeeper实例。但是,必须保证每个配置文档的各个端口号不能冲突,除了clientPort不同之外,dataDir也不同。另外,还要在dataDir所对应的目录中创建myid文件来指定对应的Zookeeper服务器实例。

    ■ clientPort端口:如果在1台机器上部署多个server,那么每台机器都要不同的 clientPort,比如 server1是2181,server2是2182,server3是2183

    ■ dataDir和dataLogDir:dataDir和dataLogDir也需要区分下,将数据文件和日志文件分开存放,同时每个server的这两变量所对应的路径都是不同的

    ■ server.X和myid: server.X 这个数字就是对应,data/myid中的数字。在3个server的myid文件中分别写入了1,2,3,那么每个server中的zoo.cfg都配 server.1 server.2,server.3就行了。因为在同一台机器上,后面连着的2个端口,3个server都不要一样,否则端口冲突。

    同样将 conf 目录下的 zoo_sample.cfg 复制三份,分别重命名为 zoo1.cfg,zoo2.cfg,zoo3.cfg。

    cp zoo_sample.cfg zoo1.cfg

    cp zoo_sample.cfg zoo2.cfg

    cp zoo_sample.cfg zoo3.cfg

    然后分别修改每个配置文件,我的配置如下:

    zoo1.cfg zoo2.cfg zoo3.cfg

    创建 zoox.cfg 配置文件中 dataDir 和 dataLogDir 的路径,

    # 创建数据目录

    mkdir -p /var/elvis/zookeeper/data/server1

    mkdir -p /var/elvis/zookeeper/data/server2

    mkdir -p /var/elvis/zookeeper/data/server3

    # 创建日志文件目录

    mkdir -p /var/elvis/zookeeper/logs/server1

    mkdir -p /var/elvis/zookeeper/logs/server1

    mkdir -p /var/elvis/zookeeper/logs/server1

    在每个 dataDir 目录下常见一个 myid 文件并在其中写入 server 对应的序号,比如在 /var/elvis/zookeeper/data/server1 目录下创建一个 myid 文件,并在 myid 中写入 1,其他目录同理。

    dataDir 目录 dataLogDir 目录 每个 myid 中写入对应的 Server 序列号

    然后使用每个配置文件启动3个 ZooKeeper 实例:

    bin/zkServer.sh stop conf/zoo1.cfg

    bin/zkServer.sh stop conf/zoo2.cfg

    bin/zkServer.sh stop conf/zoo3.cfg

    启动3个 ZK 实例

    可以使用 jps 来查看是否启动成功

    jps -ml

    jps 查看 zk 是否启动

    查看 zk 的运行状态

    bin/zkServer.sh status conf/zoo1.cfg

    bin/zkServer.sh status conf/zoo2.cfg

    bin/zkServer.sh status conf/zoo3.cfg

    查看 ZK 运行状态

    可以看到 ZK 的 Mode 不再是 standalone 了,而且 server2 作为 leader,其他2台server 作为 follower。

    客户端连接 zk 集群

    本地连接/远程连接

    bin/zkCli.sh -server ip:2181

    bin/zkCli.sh -server ip:2182

    bin/zkCli.sh -server ip:2183

    连接 2181 端口 连接 2182 端口 连接 2183 端口

    可以看见,我们远程连接任何一个端口都能够连接上。

    上面我们知道 server2 是 leader,所以我们使用客户端连接到 server2上,然后创建一些节点。

    bin/zkCli.sh -server 39.106.111.160:2182

    create /zktest 123

    连接 server2 并创建一个节点

    现在我们在本地连接到 server1 看能不能看到刚才我们创建的节点。

    bin/zkCli.sh -server localhost:2181

    ls /

    get /zktest

    连接 server1 获取数据

    可以看到我们在 server1 上也获取到了刚才我们通过远程连接在 server2 上创建的 /zktest 数据。

    现在我们尝试将 server2 这个leader 给停掉。

    bin/zkServer.sh stop conf/zoo2.cfg

    停掉 server2 这个 leader

    然后查看 server1和 server3 的运行状态

    查看 server1 和 server3 状态

    现在可以看到 ZooKeeper 通过选举,将 server3选举成了新的 leader。

    这个时候我们刚才远程连接到 server2 的客户端开始报错了,zkCli.sh 客户端并没有实现连接断后,自动连接其他节点的功能。

    zkCli.sh 连接到 server2 不断的报错

    这时我们再重启 server2

    bin/zkServer.sh start conf/zoo2.cfg

    然后再来查看各个 server 的运行状态

    server 的运行状态

    可以看到 server2 再次加入组织,不过 server2已经不再是 leader 了。

    这个时候连接 sever2 的客户端也从报错中恢复过来。

    集群模式

    集群模式和伪分布式部署基本相同,唯一的区别就是 zoo.cfg 中,ip 配置不在是127.0.0.1 或 localhost 了,而是真正的机器 ip。

    server.2= ip:2288:3388

    欢迎关注我的微信公众号:java初学者的日常

    java初学者的日常

    相关文章

      网友评论

      • IT人故事会:贵在坚持,么么哒!我也是个爱写文章的人
        IT人故事会:@懒癌正患者 习惯是好的,这东西就是需要积累。互相关注一波期待新的文章
        懒癌正患者:原来也不爱写文章,但是周围好多人都有这个习惯,我也要跟上啊!

      本文标题:Zookeeper 安装与部署

      本文链接:https://www.haomeiwen.com/subject/kfpccftx.html