美文网首页
Zookeeper① | Centos6搭建Zookeeper伪

Zookeeper① | Centos6搭建Zookeeper伪

作者: Gawain_Knowknow | 来源:发表于2019-11-04 20:25 被阅读0次

    一、软件环境

    三台虚拟机作为服务器,虚拟机装的是CentOS6.1 64位:

    编号 地址
    Zookeeper-01 192.168.112.129
    Zookeeper-02 192.168.112.130
    Zookeeper-03 192.168.112.131

    1、Linux服务器。使用数量为一台,三台,五台,(2*n+1)。zookeeper集群的工作是超过半数才能对外提供服务,三台中超过两台超过半数,允许一台挂掉。最好不要使用偶数台。

    例如:如果有4台,那么挂掉一台还剩下三台,如果再挂掉一台就不能行了,因为是要超过半数。

    2、ZooKeeper是用Java编写的,运行在Java环境上,因此,在部署zk的机器上需要安装Java运行环境。为了正常运行zk,我们需要JRE1.6或者以上的版本。(此处为jkd 1.8)

    3、zookeeper 版本 3.4.6

    二、配置与安装Zookeeper

    2.1安装Java环境
    2.2下载zookeeper

    首先要注意的是在生产环境中目录结构要定义好,防止在项目过多的时候找不到所需的项目。 我把目录统一放在/opt下面,该目录一般存放主机额外安装的软件。

    // 首先创建zookeeper项目目录
    mkdir zookeeper // 项目目录
    cd zookeeper // 进入项目目录
    mkdir zkdata // 存放快照日志
    mkdir zkdatalog // 存放事物日志

    从官网下载最新的稳定版zookeeper后,通过xshell的文件传输工具传送到虚拟机中。我就放在了/opt/zookeeper项目文件下。

    cd /opt/zookeeper // 进入下载目录
    tar -zxvf zookeeper- 3.4.6.tar.gz // 解压文件

    2.3修改配置文件

    进入到解压好的zookeeper的conf目录中,查看:

    //进入conf目录
    cd /opt/zookeeper/zookeeper-3.4.6/conf

    zoo_sample.cfg这个文件是官方给我们的zookeeper的样板文件。我们需要复制一份名为zoo.cfg的文件,zoo.cfg是zookeeper官方指定的文件命名规则。我们以在第一台虚拟机上的操作为例(上面的操作都是在第一台虚拟机上,你需要在每台虚拟机上都执行上述以及本次操作):

    // 复制zoo.cfg文件
    cp zoo_sample.cfg zoo.cfg
    // 打开zoo.cfg文件,然后按后面的配置信息进行配置
    vim zoo.zfg

    在zoo.cfg配置文件需要填入的信息。

    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/opt/zookeeper/zkdata
    dataLogDir=/opt/zookeeper/zkdatalog
    clientPort=12181

    // 此处的IP就是你所操作的三台虚拟机的IP地址,每台虚拟机的zoo.cfg中都需要填入这三个地址。第一个端口是master和slave之间的通信端口,默认是2888,第二个端口是leader选举的端口,集群刚启动的时候选举或者leader挂掉之后进行新的选举的端口默认是3888

    server.1=192.168.112.129:12888:13888
    server.2=192.168.112.130:12888:13888
    server.3=192.168.112.131:12888:13888

    // server.1 这个1是服务器的标识也可以是其他的数字, 表示这个是第几号服务器,用来标识服务器,这个标识要写到快照目录下面myid文件里

    创建myid文件。以现在所在的第一台虚拟机192.168.112.129为例,对应server.1,通过上边的配置信息可以查到。创建myid文件的目的是为了让zookeeper知道自己在哪台服务器上,例如现在所在的虚拟机是192.168.112.129,它对应的id是1,那么就在myid文件中写入1.

    echo "1" > /opt/zookeeper/zkdata/myid

    另外两台虚拟机上也需要创建myid文件并写入相应的id,id根据zoo.cfg文件中的IP地址查询。

    echo "2" > /opt/zookeeper/zkdata/myid
    echo "3" > /opt/zookeeper/zkdata/myid

    2.4启动zookeeper

    进入到zookeeper的bin目录下

    cd /opt/zookeeper/zookeeper-3.4.6/bin/
    // 启动服务 (注意!三台虚拟机都要进行该操作)
    ./zkServer.sh start
    // 检查服务器状态
    ./zkServer.sh status
    // 显示如下
    JMX enabled by default
    Using config: /opt/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg
    Mode: follower #他是主节点leader还是从节点follower

    三、遇到的一些问题

    3.1端口占用问题
    • 查看端口占用
      netstat -lnp|grep 端口号
      kill -9 端口号
    3.2防火墙关闭问题
    • 永久性生效,重启后不会复原
      开启: chkconfig iptables on
      关闭: chkconfig iptables off
    • 即时生效,重启后复原
      开启: service iptables start
      关闭: service iptables stop
    • 查询TCP连接情况:
    3.3克隆虚拟机,网络无法连接的问题

    vSphere Client克隆虚拟机后,发现无法使用xShell进行连接
    输入ifconfig,只显示出了本地环回口,如下图:

    本地环回口.png

    重启网卡service network restart
    重启网络服务时报错,错误现象如下图:

    eth0.png
    解决步骤:
    • 打开/etc/udev/rules.d/70-persistent-net.rules,内容如下: 70-persistent-net.rules.png
    • 接下来,打开/etc/sysconfig/network-scripts/ifcfg-eth0

    • vi /etc/sysconfig/network-scripts/ifcfg-eth0


      ifcfg-eth0.png
    • 将DEVICE和HWADDR地址进行替换,重启网络即可

    地址替换.png
    • 重启网卡service network restart
    3.4节点无法运行问题

    在用./zkServer.sh start命令运行zookeeper后,zookeeper节点显示正常启动,但是用zkServer.sh status命令查看zookeeper节点的状态时,发现并没有正常运行,出现:

    Error contacting service. It is probably not running.

    我试着重新./zkServer.sh start,却无法启动,显示:

    already running as process 11854

    复盘:

    相关文章

      网友评论

          本文标题:Zookeeper① | Centos6搭建Zookeeper伪

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