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集群搭建成功版本

       

          

         

           

               

        

             

                

             

              

       

原文地址:https://www.cnblogs.com/yxh168/p/14251188.html