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

    创建zk工作负载

              创建集群的工作负载不能选择Deployment 而要选择Statfulset才行  这样创建的pod名称才是带有编号的 如果是Deployment类型 那么创建出来的pod名称是随机的

             

              

                创建的pod名称有规律后,我们就可以在zoo.cfg的配置文件中进行主机名称的配置 如果是随机的pod名称,那么pod每次重启后,配置在配置文件中的主机名称就会异常

       动态生成zk配置文件

               使用sidecar模式来根据pod的顺序来动态生成配置文件内容

          

           

            1.使用边车模式的initcontainer容器实现

                  

                 

               

                

                  

            2.在主容器中挂载卷

                

                 

            3.访问主容器中的卷文件

               

                

           4.动态生成serverid的配置文件   

    #!/bin/sh
    
    ordinal=`env | grep HOSTNAME |cut -d "-" -f2`
    let serverid=$ordinal+1
    echo $serverid > /mnt/myid
    zk.sh

            

            

            

           

         zk集群异常处理

           报错信息:
             Cannot open channel to 3 at election address
             UnknownHostException: zk-2.zk-hs.default.svc.cluster.local

         解决思路:
             配置文件$ ZOOKEEPER_HOME/conf/zoo.cfg,每个机器IP设置为“0.0.0.0”,如下所示:
              server.1=0.0.0.0:2888:3888
              server.2=zk-1.zk-hs.default.svc.cluster.local:2888:3888
              server.3=zk-2.zk-hs.default.svc.cluster.local:2888:3888

        修改方法:
            修改文件内容:当是本机的时候使用0.0.0.0ip

            function print_servers() {
               for (( i=1; i<=$SERVERS; i++ ))
                  do

                 #echo "server.$i=$NAME-$((i-1)).$DOMAIN:$SERVER_PORT:$ELECTION_PORT"
                 if [ $ORD -eq $((i-1)) ]; then
                    echo "server.$i=0.0.0.0:$SERVER_PORT:$ELECTION_PORT"
                else
                   echo "server.$i=$NAME-$((i-1)).$DOMAIN:$SERVER_PORT:$ELECTION_PORT"
                fi
             done
           }

    搭建kafka集群

       1.动态修改配置文件

       

    serverid=128
    sed -i "s/broker.id=108/broker.id=$serverid/g" kafka.properties
    View Code
    #!/bin/sh
    
    mkdir -p /kafka/config2/
    ordinal=`env | grep HOSTNAME |cut -d "-" -f2`
    let serverid=$ordinal+1
    let containerport=9092+$serverid
    let listenport=39090+$serverid
    
    sed -i "s/broker.id=.*/broker.id=$serverid/g" /kafka/config2/kafka.properties
    #sed -i "s/listeners=.*/listeners=PLAINTEXT://.0.0.0:$containerport/g" /kafka/config2/kafka.properties
    sed -i "s/advertised.port=.*/advertised.port=$listenport/g" /kafka/config2/kafka.properties
    sed -i "s#advertised.listeners=.*#advertised.listeners=PLAINTEXT://192.168.30.108:$listenport#g" /kafka/config2/kafka.properties
    #sed -i "s/advertised.listeners=.*/advertised.listeners=PLAINTEXT://192.168.30.108:$listenport/g" /kafka/config2/kafka.properties
    优化

    2.设置sidecar容器

        

         

             

             

            主容器设置

               

                

     最终实现kafka集群搭建

         只用到了statfulset有序创建的特性 没有使用到sidecar模型

          

         

        

       rancher页面设置

            

          

       kafka消息通信测试

           

           

           

      kafka集群搭建成功版本

           

              

             

               

                   

            

                 

                    

                 

                  

           

  • 相关阅读:
    Java遍历Map键、值。获取Map大小的方法
    Oracle CASE WHEN 用法介绍
    JS动态改变select选择变更option的index值
    js对select动态添加和删除OPTION
    在js中使用createElement创建HTML对象和元素
    清空select标签中option选项的3种不同方式
    json-lib包笔记
    异常:javax.el.PropertyNotFoundException: Property 'id' not found on ..........
    golang struct的使用
    golang多维数组的切片
  • 原文地址:https://www.cnblogs.com/yxh168/p/14251188.html
Copyright © 2011-2022 走看看