为了账号安全,请及时绑定邮箱和手机立即绑定

zookeeper_0_搭建集群模式以及遇到的问题

标签:
深度学习

title: zookeeper搭建集群模式以及遇到的问题
tags: zookeeper
author: 辰砂


搭建步骤

一. 安装jdk(我准备的是1.8版本)

二.搭建zookeeper集群模式

1.环境准备

本地虚拟机准备三台虚拟机准备搭建

192.168.70.130  node1192.168.70.131 node2192.168.70.132 node3

在官网上下载zookeeper 的包并拷贝到三个节点上

scp zookeeper-3.5.0-alpha.tar.gz root@192.168.70.132:/home/taojian/software/zookeeper

更改文件,由于zookeeper会用到zoo.cfg,所以需要找到位置并修改

路径/home/taojian/software/zookeeper/zookeeper-3.5.0-alpha/conf 下面的
zoo_sample.cfg 文件需要改名
命令: mv zoo_sample.cfg zoo.cfg

更改zoo.cfg文件内容

initLimit=5
syncLimit=2
clientPort=2181
tickTime=2000
dataDir=/home/taojian/software/zookeeper/data
dataLogDir=/home/taojian/software/zookeeper/datalogserver.1=192.168.70.130:2888:3888server.2=192.168.70.131:2888:3888server.3=192.168.70.132:2888:3888

注意:

dataDir 和dataLogDir 里面的路径文件一定需要存在,同时需要在dataDir路径下面创建文件myid,表明当前的id。假如 192.168.70.130 这个节点,在zoo.cfg 的配置文件上是server.1在里面配置1就可以了

zoo.cfg 这个文件是三台机器上面都需要存在的,统一文件即可

验证服务

在不同的节点上面启动zookeeper服务

sh zkServer.sh startsh zkServer.sh statussh zkServer.sh stop

查看状态后出现了每一个zookeeper的身份说明运行成功

问题总结

1.在启动zookeeper服务的时候出现 UnkownHostException :未知的服务 这种情况的时候,可以查看你的防火墙的问题

  firewall-cmd --state # 查看防火墙是否running  systemctl stop firewalld.service  # 关闭防火墙
  systemctl disable firewalld.service # 开机防止启动防火墙
  firewall-cmd --state

2.集群搭建完成后发现ip变动,vmfusion上面固定IP

1.在你本地终端查看
 sudo vim /Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf\n
2.修改
subnet 192.168.70.0 netmask 255.255.255.0 {# range是ip范围
        range 192.168.70.128 192.168.70.254;
        option broadcast-address 192.168.70.255;
        option domain-name-servers 192.168.70.2;
        option domain-name localdomain;
        default-lease-time 1800;

host CentOS7_node1 {# CentOS7_node1 你的虚拟机名字
        hardware ethernet 00:50:56:27:40:E2;  
# 你的虚拟机节点的mac地址
        fixed-address 192.168.70.130;#固定ip ,当然这个固定ip需要在上面的ip范围内}

3.java如何连接zookeeper(原生的zookeeper的API,zkClient和Curator)

演示:原生的zookeeper

public class ZookeeperBase {    /** zookeeper地址 */
    static final String CONNECT_ADDR = "192.168.70.130:2181,192.168.70.131:2181,192.168.70.132:2181";    /** session超时时间 */
    static final int SESSION_OUTTIME = 2000;//ms 
    /** 信号量,阻塞程序执行,用于等待zookeeper连接成功,发送成功信号 */
    static final CountDownLatch connectedSemaphore = new CountDownLatch(1);
    
    public static void main(String[] args) throws Exception{
        
        ZooKeeper zk = new ZooKeeper(CONNECT_ADDR, SESSION_OUTTIME, new Watcher(){            @Override
            public void process(WatchedEvent event) {                //获取事件的状态
                KeeperState keeperState = event.getState();
                EventType eventType = event.getType();                //如果是建立连接
                if(KeeperState.SyncConnected == keeperState){                    if(EventType.None == eventType){                        //如果建立连接成功,则发送信号量,让后续阻塞程序向下执行
                        connectedSemaphore.countDown();
                        System.out.println("zk 建立连接");
                    }
                }
            }
        });        //进行阻塞
        connectedSemaphore.await();

原文出处:https://www.cnblogs.com/tojian/p/9929916.html  

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消