ZooKeeper 节点镜像制作

  • 安装 agent
    下载青云提供的 app agent Linux 版本, Windows 版本,解压后运行 ./install.sh (Windows 下双击 install.bat)

  • 安装 ZooKeepr
    下载 ZooKeeper,解压安装至 /opt/zookeeper。安装 Java (以 Ubuntu 为例)

    apt-get install openjdk-7-jre-headless
    
  • 创建 toml 文件

    • 创建 /etc/confd/conf.d/zoo.cfg.toml

        [template]
        src = "zoo.cfg.tmpl"
        dest = "/opt/zookeeper/conf/zoo.cfg"
        keys = [
            "/",
        ]
        reload_cmd = "/opt/zookeeper/bin/restart-server.sh"
      
    • 创建 /etc/confd/conf.d/myid.toml

        [template]
        src = "myid.tmpl"
        dest = "/data/zookeeper/myid"
        keys = [
            "/",
        ]
      
  • 创建 tmpl 文件

    • 创建 /etc/confd/templates/zoo.cfg.tmpl

        {% raw %}
            tickTime=2000
            initLimit=10
            syncLimit=5
            dataDir=/data/zookeeper
            {{if exists "/cluster/endpoints/client/port"}}{{$port := getv "/cluster/endpoints/client/port"}}
            clientPort={{$port}}{{else}}clientPort=2181{{end}}
            maxClientCnxns=1000
            {{range $dir := lsdir "/hosts"}}{{$sid := printf "/hosts/%s/sid" $dir}}
            {{$ip := printf "/hosts/%s/ip" $dir}}server.{{getv $sid}}={{getv $ip}}:2888:3888{{end}}
        {% endraw %}
      
    • 创建 /etc/confd/templates/myid.tmpl

      {% raw %}
            {{getv "/host/sid"}}
      {% endraw %}
      
  • ZooKeeper 相关改动

    • 补充脚本,创建 /opt/zookeeper/bin/restart-server.sh

      #! /bin/bash
      
      # Restart zk server
      /opt/zookeeper/bin/zkServer.sh restart
      
      sleep 3
      
      i=0
      
      while [ $i -lt 10 ]
      do
        /opt/zookeeper/bin/zkServer.sh status
        if [ $? -eq 0 ]; then
            echo "Restart zk server successful" > /var/log/zookeeper.log 2>&1
            exit 0
        else
            echo "zk server is not running" > /var/log/zookeeper.log 2>&1
            /opt/zookeeper/bin/zkServer.sh restart
        fi
      
        sleep 3
        i=$[$i+1]
      done
      
      echo "Failed to restart zk server" > /var/log/zookeeper.log 2>&1
      exit 1
      
    • 补充环境变量,创建 /opt/zookeeper/conf/java.env

      #!/usr/bin/env bash
      free=`grep MemFree /proc/meminfo | awk '{print $2}'`
      buffer=`grep Buffers /proc/meminfo | awk '{print $2}'`
      cache=`grep ^Cached /proc/meminfo | awk '{print $2}'`
      freemem=`expr $free + $buffer + $cache`
      total_free=`expr $freemem / 1024 - 90`
      if [ $total_free -le 0 ]
      then
      total_free=20
      fi
      
      export JVMFLAGS="-Xmx${total_free}m"
      
    • 更新日志路径,修改文件 /opt/zookeeper/bin/zkEnv.sh,把默认路径修改成如下路径:

      ZOO_LOG_DIR="/data/zookeeper/logs"
      

results matching ""

    No results matching ""