zoukankan      html  css  js  c++  java
  • Linux下安装Zookeeper并配置单机、集群使用

    Linux下安装Zookeeper

    Zookeeper简介

    • 中间件,提供协调服务
    • 作用于分布式系统,发挥其优势,可以为大数据服务
    • 支持java,提供了java和c语言的客户端API

    zookeeper,中文意思就是动物园管理员,通过zookeeper(群)来管理协调各个集群的分布式组件。
    官网:https://zookeeper.apache.org/

    Zookeeper特性

    一致性:数据一致性,数据按照顺序分批入库
    原子性:事务要么成功要么失败,不会局部化
    单一视图:客户端连接集群中的任一zk节点,数据都是一致的
    可靠性:每次对zk的操作状态都会保存在服务端
    实时性:客户端可以读取到zk服务端的最新数据

    安装步骤:

    1:  首先确保已经安装好了jdk,因为zookeeper是需要依赖java来进行编译的。

    下载zookeeper:

    进入官网,点击导航菜单Project-->Releases,可以选择指定版本进行下载。

     也可以使用命令直接下载:

    # 直接使用命令下载
    wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz
    # 解压缩
    tar -zxvf zookeeper-3.4.11.tar.gz

    环境变量配置:

    编辑环境变量配置文件:vi /etc/profile  i 进入编辑

    在文件末尾位置添加如下内容
    export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.11
    export PATH=$PATH:$ZOOKEEPER_HOME/bin
    Ctrl + c 然后通过vim的 ":wq" 命令进行保存退出
    使配置生效:source /etc/profile


    zoo.cfg配置

    首先需要进入conf文件夹下将复制zoo_simple.cfg改名为zoo.cfg:cp zoo_sample.cfg zoo.cfg
    这样zookeeper就能读取到该配置文件,其主要配置项如下

     修改配置:

    vi zoo.cfg
    # 修改配置项
    dataDir=/usr/local/zookeeper-3.4.11/dataDir
    # 添加配置项
    dataLogDir=/usr/local/zookeeper-3.4.11/dataLogDir
    # 保存退出后,创建目录
    mkdir dataDir
    mkdir dataLogDir

    启动、停止zookeeper

    启动命令: cd /usr/local/zookeeper-3.4.11/bin 
    
    ./zkServer.sh start
    ./zkServer.sh  stop 

    查看zookeeper状态

    命令: cd /usr/local/zookeeper-3.4.11/bin
    
    ./zkServer.sh status

    开放2181端口

    因为zookeeper默认的是2181端口号,为了能对外正常访问zookeeper,需要开放2181端口号,或者关闭防火墙;

    1对外开放2181端口

    命令:

    firewall-cmd --zone=public --add-port=2181/tcp --permanent

    • –zone:作用域
    • –add-port=2181/tcp:添加端口,格式为:端口/通讯协议
    • –permanent:永久生效,没有此参数重启后失效

    2 重启防火墙

    命令: firewall-cmd --reload

    3 查看已经开放的端口

    命令: firewall-cmd --list-ports

    4 停止防火墙

    命令: systemctl stop firewalld.service

    5 禁止防火墙开机启动,以防虚拟机重启的时候zookeeper被拦截

    命令: systemctl disable firewalld.service

     配置zookeeper开机启动:

    vim /etc/init.d/zookeeper

    2:把如下脚本复制进去(根据自己的zookeeper、jdk安装路径修改一下路径):

    #!/bin/bash
    #chkconfig:2345 20 90
    #description:zookeeper
    #processname:zookeeper
    ZK_PATH=/opt/zookeeper/zookeeper-3.4.11/
    export JAVA_HOME=/opt/java/jdk1.8.0_221/
    case $1 in
             start) sh  $ZK_PATH/bin/zkServer.sh start;;
             stop)  sh  $ZK_PATH/bin/zkServer.sh stop;;
             status) sh  $ZK_PATH/bin/zkServer.sh status;;
             restart) sh $ZK_PATH/bin/zkServer.sh restart;;
             *)  echo "require start|stop|status|restart"  ;;
    esac

    然后把脚本注册为Service

    chkconfig --add zookeeper

    增加权限

    chmod +x /etc/init.d/zookeeper

    然后启动zookeeper

    service zookeeper start

     连接到zookeeper客户端:

    进入zookeeper的bin目录:

    ./zkCli.sh

    查看有哪些zookeeper节点; ls /

    查看注册到zookeeper的服务: 

    ls /services

     

     配置zookeeper多机器集群:

          Zookeeper内部是有投票选举机制来区分主/从的概念,所以机器数需要为奇数台

     例如下列三台机器:

    192.168.174.226         

    192.168.174.227         

    192.168.174.228

     1:编辑zoo.cfg文件加入如下配置:

    server.1=192.168.174.226:2888:3888
    
    server.2=192.168.174.227:2888:3888
    
    server.3=192.168.174.228:2888:3888

    说明:

    #server.A=B:C:D 其中

    A 是一个数字,表示这个是第几号服务器(zookeeper实例的id编号)
    B 是这个服务器的 ip 地址
    C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口
    D表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

    2:写入一个Zookeeper的ID(即上面的server.1 | .2 | .3)号到myid(创建这个文件,并写入1)文件,这个文件不存在,使用下面的命令会自动创建并写入

    echo 1 > /usr/local/zookeeper-3.4.11/tmp/myid

    第一台机器就算配置完成了,后面两台机器和第一台前面的配置都一样,只是后面的标识ID需要写入不同的,安照上面的配置

    第二台机器 echo 2 > /usr/local/zookeeper-3.4.11/tmp/myid

    第三台机器 echo 3 > /usr/local/zookeeper-3.4.11/tmp/myid

     3:然后重启zookeeper,你会发现因为Zookeeper内部的选举机制,你会发现一个Leader,两个Follower

     

     springBoot项目中整合Zookeeper

     pom依赖:

    <!-- SpringBoot整合zookeeper客户端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <!--如果项目启动失败,可能存在jar包冲突,先排除自带的3.5.3-->
            <!--<exclusions>-->
                <!--<exclusion>-->
                    <!--<groupId>org.apache.zookeeper</groupId>-->
                    <!--<artifactId>zookeeper</artifactId>-->
                <!--</exclusion>-->
            <!--</exclusions>-->
        </dependency>
    
        <!-- 添加与服务器安装的一样版本的zookeeper -->
        <!--<dependency>-->
            <!--<groupId>org.apache.zookeeper</groupId>-->
            <!--<artifactId>zookeeper</artifactId>-->
            <!--<version>3.4.9</version>-->
        <!--</dependency>-->

    yml:

    #8004 表示注册到zookeeper服务器的支付服务端口号
    server:
      port: 8004
    
    
    #服务别名----注册zookeeper到注册中心名称
    spring:
      application:
        name: cloud-provider-payment
      cloud:
        zookeeper:
          connect-string: 192.168.0.108:2181

    启动类添加@EnableDiscoveryClient注解

     

  • 相关阅读:
    gridview 数据绑定函数
    GridView详述
    gridview 数据绑定函数
    GridView详述
    c# windows服务
    "System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。
    启动网站时,IIS发生意外错误0x8ffe2740
    访问 IIS 元数据库失败
    vs2010运行时提示:无法启动程序:http://......
    realplayer、wmp 网页内嵌代码
  • 原文地址:https://www.cnblogs.com/dw3306/p/12599986.html
Copyright © 2011-2022 走看看