zoukankan      html  css  js  c++  java
  • zookeeper_0_搭建集群模式以及遇到的问题


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


    搭建步骤

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

    二.搭建zookeeper集群模式

    1.环境准备

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

    192.168.70.130  node1
    
    192.168.70.131 node2
    
    192.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/datalog
    server.1=192.168.70.130:2888:3888
    server.2=192.168.70.131:2888:3888
    server.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 start
    sh zkServer.sh status
    sh 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
    
    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();
    
  • 相关阅读:
    [国家集训队] Crash 的文明世界
    [国家集训队] middle
    [正睿集训2021] 构造专练
    [正睿集训2021] LIS
    CF482E ELCA
    UVA
    UVA
    UVA
    UVA
    UVA
  • 原文地址:https://www.cnblogs.com/tojian/p/9929916.html
Copyright © 2011-2022 走看看