marathon - ZK三台在一台宿主机里面

这里写图片描述

总体架构

231是我们的marathon master,采用dcos1.7,因为只需要一个agent就好了,不像1.8,还得需要public。

229是我们的唯一一台agent,奔腾双核3GHz,16GB内存。

目标

将zk防止在marathon里面

问题1 几个application的问题

如果是docker + swarm的形式,我们需要开三个,然后采用name去连接就好了。
但是这里是marathon,里面最牛逼的功能就是scale,我们的zk咋扩容来? 每一个都有每一个的目录。我们在本地挂载一个磁盘/dcos/volume1,为啥是这个来,因为貌似这个目录会自动被docs识别。然后我们新建zk zk1 zk2 zk3四个目录,后三个每个zk节点一个。
zk目录是作为共享/etc/hosts的。

问题2 /etc/hosts为啥要共享来

本来我也没用,我用的方法是采用vip的方式,zk1有一个vip地址,zk2有一个,zk3有一个,这样其实是不行的,想想也是,

这里写图片描述

在这个地方折腾了一天时间,把zk版本都换了。 后来就采用了/etc/hosts挂载到每个机器的做法,这样大家在开机的时候可以把自己的地址放进去,注意,这个只是addon追加,不能sed删除,会提示sed资源紧张,估计和一个目录挂载到三个docker容器有关系,好吧,暂时先跑着。

问题3 外部如何给别人调用来

这里写图片描述

这里写图片描述

呵呵,我们挂掉一个试试,没啥问题。

呵呵,我们再挂掉一个试试,不行喽。
这里写图片描述

zk的marathon application json文件是啥来

{
  "id": "/zk1",
  "cmd": null,
  "cpus": 0.1,
  "mem": 128,
  "disk": 0,
  "instances": 1,
  "container": {
    "type": "DOCKER",
    "volumes": [
      {
        "containerPath": "/tmp/zookeeper",
        "hostPath": "/dcos/volume1/zk1/",
        "mode": "RW"
      },
      {
        "containerPath": "/etc/hosts",
        "hostPath": "/dcos/volume1/zk/hosts",
        "mode": "RW"
      }
    ],
    "docker": {
      "image": "reg.ops.ac.cn:5000/zookeeper:v3.4.7e1",
      "network": "BRIDGE",
      "portMappings": [
        {
          "containerPort": 2181,
          "hostPort": 0,
          "servicePort": 0, # 注意,这个地方打入的时候应该是0,因为marathon会随机生成。
          "protocol": "tcp",
          "name": "2181",
          "labels": {
            "VIP_0": "10.9.9.1:2181"
          }
        }
      ],
      "privileged": false,
      "parameters": [],
      "forcePullImage": true
    }
  },
  "env": {
    "ZOO_LOG_DIR": "/tmp/zookeeper/logs/"
  },
  "uris": [
    "http://soft.ops.ac.cn/registry/docker.tar.gz"
  ]
}

zk的配置文件咋样

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
server.1=zk1:2888:3888
server.2=zk2:2888:3888
server.3=zk3:2888:3888

Dockerfile如何来

from reg.ops.ac.cn:5000/centos:v6.8e1

#add ./zoo.cfg /opt/zookeeper/conf/zoo.cfg
add ./zookeeper /usr/local/zookeeper/
add ./hostsmodify.sh /tmp/hostsmodify.sh

run yum install -y wget curl net-tools bind-utils iproute telnet

#entrypoint /opt/zookeeper/bin/zkServer.sh start-foreground
entrypoint /tmp/hostsmodify.sh;/usr/local/zookeeper/bin/zkServer.sh start-foreground
#entrypoint /bin/bas

自动化生成docker并上传到registry的脚本来

#!/bin/bash

name="zookeeper"

tag="v3.4.7e1"

repoaddr="reg.ops.ac.cn:5000"

docker build -t $name:$tag .

imageid=`docker images | grep $tag  | head -n 1 | awk '{print $3}'`

#docker tag -f $imageid $repoaddr/$name:$tag
docker tag $imageid $repoaddr/$name:$tag

docker push $repoaddr/$name:$tag

自动修改hosts成自己的ip地址来

#!/bin/bash

IP=`ifconfig eth0 | grep inet | awk '{print $2}' | head -n 1 | awk -F\: '{print $2}'`

ID=`cat /tmp/zookeeper/myid`

sed  -i "/ zk$ID/d" /etc/hosts
echo "$IP zk$ID" >> /etc/hosts
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值