zoukankan      html  css  js  c++  java
  • zookeeper集群搭建

    zookeeper集群搭建

    centOS操作系统
    检测集群时间是否同步
    检测防火墙是否关闭
    检测主机 ip映射有没有配置
    检测服务器间是否配置免密登陆
    检测服务器是否安装正确的jdk

    ---------------------------------------------------------------------------------------------------------------------------------------
    检测集群时间是否同步

    说明:由于大数据中,集群对时间要求很高,所以集群内主机要经常同步时间(包括时区的同步)。


    常用的手动进行时间的同步
      date -s "2017-03-03 03:03:03"
    或者网络同步:
      yum install ntpdate (安装ntpdate网络时间协议更新软件)
      ntpdate cn.pool.ntp.org (中国网络时间协议)


    也可以进行如下的设置:(时间同步协议)

    1、yum install ntp

    2、vi /etc/ntp.conf

    修改如下部分:
    server 58.220.207.226 iburst
    server 47.92.108.218 iburst
    server 202.112.29.82 iburst
    server 202.108.6.95 iburst

    其中ip为全球可用的ntp时间服务器,免费提供授时服务。

    3、配置之后,保存设置,重启服务

    service ntpd stop 时间同步协议

    service ntpd start


    4、甚至可以设置crontab来定时与互联网服务器进行同步

    ---------------------------------------------------------------------------------------------------------------------------------------

    检测防火墙是否关闭

    关闭防火墙,意味着把所有通信端口开放

    三台虚拟机同时发送命令:

    service iptables stop 关闭防火墙服务(关机恢复)

    chkconfig iptables off 永久关闭防火墙(关机有效)

    chkconfig iptables --list 查看防火墙状态

    ---------------------------------------------------------------------------------------------------------------------------------------

    检测主机 ip映射有没有配置

    修改映射 vi /etc/hosts

    查看映射 cat /etc/hosts
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

    192.168.158.151 node-1
    192.168.158.152 node-2
    192.168.158.153 node-3


    测试:ping node-1等

    ---------------------------------------------------------------------------------------------------------------------------------------

    检测服务器间是否配置免密登陆

    每台服务器都要配置三次(包括本机 (本机登陆本机的底层原理:xshell登陆node-1,node-1的ssh进程登陆node-1))

    ssh-keygen

    ssh-copy-id node-1

    免密登陆测试:ssh node-1

    退出登陆:exit

    ---------------------------------------------------------------------------------------------------------------------------------------

    安装前需要安装好jdk


    卸载服务器自带的openjdk:

    rpm -qa|grep java 查询
    rpm -e --nodeps xxxxxxxxxxxxxxxxxxx 卸载

    jdk安装路径:

    mkdir -p /export/servers 软件安装
    mkdir -p /export/software 安装包
    mkdir -p /export/data 数据存放

    jdk从一台机器配置,然后发送给其他机器

    环境变量:vi /etc/profile (大G最后一行,小o开启新一行)

    export JAVA_HOME=/export/servers/jdk1.8.0_65 (以实际安装路径为准)
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar (非必选)

    环境变量开机加载一次,source /etc/profile 命令生效,java -version验证是否成功

    发送给其他机器:
    scp -r /export/servers/jdk1.8.0_65 root@node-2:/export/servers/
    scp -r /etc/profile root@node-2:/etc/


    同时发送 source /etc/profile 使环境变量生效
    同时发送 java -version 验证是否生效

    -----------------------------------------------------------------------------------------------------------------------------
    ##下载安装包、解压

    tar -zxvf zookeeper-3.4.5.tar.gz
    mv zookeeper-3.4.5 zookeeper

    ##修改环境变量(注意:3台zookeeper都需要修改)

    vi /etc/profile
    export ZOOKEEPER_HOME=/export/servers/zookeeper
    export PATH=$PATH:$ZOOKEEPER_HOME/bin
    source /etc/profile

    ##修改Zookeeper配置文件

    cd /export/servers/zookeeper/conf
    cp zoo_sample.cfg zoo.cfg
    vi zoo.cfg

    修改内容:
    dataDir=/export/data/zkdata
    添加内容:
    server.1=node-1:2888:3888 ## (服务器名编号不重复即可,主机名,心跳端口、选举端口)
    server.2=node-2:2888:3888
    server.3=node-3:2888:3888

    ##myid
    创建并进入文件夹:
    /export/data/zkdata

    在data文件夹下新建myid文件,myid的文件内容为:
    echo 1 > myid

    ##分发安装包到其他机器
    scp -r /export/servers/zookeeper root@node-2:/export/servers/
    scp -r /export/servers/zookeeper root@node-3:/export/servers/

    ##修改其他机器的配置文件
    修改myid文件
    到node2上:
    cd /export/data/zkdata
    echo 2 > myid
    到node3上:
    cd /export/data/zkdata
    echo 3 > myid

    ##启动(每台机器)
    zkServer.sh start
    或者编写一个脚本来批量启动所有机器:
    for host in "node-1 node-2 node-3"
    do
    ssh $host "source/etc/profile;/root/apps/zookeeper/bin/zkServer.sh start"
    done

    ##查看集群状态
    jps(jdk提供的查看java进程命令)
    zkServer.sh status(查看集群状态,主从信息)


    如果启动不成功,可以观察zookeeper.out日志,查看错误信息进行排查,排查之后还有问题,请使用万能法:重启linux

    -----------------------------
    配置文件中参数说明:

    tickTime这个时间是作为zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是说每个tickTime时间就会发送一个心跳。

    initLimit这个配置项是用来配置zookeeper接受客户端(这里所说的客户端不是用户连接zookeeper服务器的客户端,而是zookeeper服务器集群中连接到leader的follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。

    当已经超过10个心跳的时间(也就是tickTime)长度后 zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20秒。

    syncLimit这个配置项标识leader与follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。

    dataDir顾名思义就是zookeeper保存数据的目录,默认情况下zookeeper将写数据的日志文件也保存在这个目录里;

    clientPort这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求;

    server.A=B:C:D中的A是一个数字,表示这个是第几号服务器,B是这个服务器的IP地址,C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口,D是在leader挂掉时专门用来进行选举leader所用的端口。


    调bug参考(感谢)

    https://blog.csdn.net/u014686180/article/details/51767863
    https://www.cnblogs.com/eggplantpro/p/7120893.html


    ----------------------------------------------------------------

    export JAVA_HOME=/root/apps/jdk1.8.0_65
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

  • 相关阅读:
    【LeetCode & 剑指offer刷题】字符串题8:Implement strStr()
    【LeetCode & 剑指offer刷题】字符串题7:String to Integer (atoi)
    项目-常用文档类型
    eclipse中一个项目引用另一个项目,运行报:java.lang.NoClassDefFoundError
    eclipse下的,maven+spring+springMVC+mabatis+mysql.创建
    eclipse +maven+ssm搭建矿建
    Android 自定义Adapter 但listview 只显示第一条数据
    树-二叉循环树
    对象排序,compareTo
    线性表-双向链表(LinkedList)
  • 原文地址:https://www.cnblogs.com/trumbull/p/10050783.html
Copyright © 2011-2022 走看看