天天看點

Docker搭建Mesos體系

準備4台伺服器

部署 harbor 安裝docker compose

curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose   # 等效上面的指令
chmod +x /usr/local/bin/docker-compose
           

安裝harbor 

wget https://github.com/goharbor/harbor/releases/download/v2.2.1/harbor-offline-installer-v2.2.1.tgz
tar -zxvf harbor-offline-installer-v2.2.1.tgz
配置harbor

cd /usr/local/harbor/    #進入到harbor目錄

cp   harbor.yml.tmpl    harbor.yml

vim harbor.yml   #編輯harbor的配置檔案

#修改以下内容

hostname = 192.168.100.204 #修改harbor的啟動ip,這裡需要依據系統ip設定

port: 80 #harbor的端口,有兩個端口,http協定(80)和https協定(443)

harbor_admin_password = harbor12345   #修改harbor的admin使用者的密碼

data_volume: /harbor/data #修改harbor存儲位置
# https related config
#如果有安全密匙自行配置 沒有就注
# https:

  # # https port for harbor, default is 443

  # port: 443

  # # The path of cert and key files for nginx

  # certificate: /your/certificate/path

  # private_key: /your/private/key/path

安裝harbor

./prepare 
./install.sh 
           

關閉防火牆

systemctl stop firewalld.service
           

設定docker

yum install -y yum-utils
sudo yum-config-manager \ --add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl restart docker
           

啟動了docker

設定docker國内鏡像 (harbor 為私有倉庫ip)

sudo mkdir -p /etc/docker
sudo vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
,        "insecure-registries": [ "harborip"]

}
sudo systemctl daemon-reload
sudo systemctl restart docker
           

安裝zookeeper(伺服器2)

docker pull zookeeper:latest
docker run --privileged=true -d --name zookeeper --publish 2181:2181 -d zookeeper:latest
           

設定mesos master鏡像(伺服器1)

docker pull mesosphere/mesos-master:1.7.1
           

mesos master配置(伺服器1)

​
docker run -d --net=host \

  --hostname= 本機ip \
  -e MESOS_PORT=5050 \
  -e MESOS_ZK=zk://zookeeperip/mesos \
  -e MESOS_QUORUM=1 \
  -e MESOS_REGISTRY=in_memory \
  -e MESOS_LOG_DIR=/var/log/mesos \
  -e MESOS_WORK_DIR=/var/tmp/mesos \
  -v "$(pwd)/mesos/log/mesos:/var/log/mesos" \
  -v "$(pwd)/mesos/tmp/mesos:/var/tmp/mesos" \
  mesosphere/mesos-master:1.7.1 --no-hostname_lookup --ip=本機ip
​
           

http://mesosmaster:5050/#/ 檢視 伺服器狀态

設定mesos slave1(伺服器3)

docker pull mesosphere/mesos-master:1.7.1
docker run -d --net=host --privileged \
  --hostname=本機ip \
  -e MESOS_PORT=5051 \
  -e MESOS_MASTER=zk://zookeeperip/mesos \
  -e MESOS_SWITCH_USER=0 \
  -e MESOS_CONTAINERIZERS=docker,mesos \
  -e MESOS_LOG_DIR=/var/log/mesos \
  -e MESOS_WORK_DIR=/var/tmp/mesos \
  -v "$(pwd)/mesos/log/mesos:/var/log/mesos" \
  -v "$(pwd)/mesos/tmp/mesos:/var/tmp/mesos" \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /sys:/sys \
  -v /usr/bin/docker:/usr/local/bin/docker \
  mesosphere/mesos-slave:1.7.1 --no-systemd_enable_support \
  --no-hostname_lookup --ip=本機ip
           

設定mesos slave2(伺服器4)

docker pull mesosphere/mesos-master:1.7.1
docker run -d --net=host --privileged \
  --hostname=本機ip \
  -e MESOS_PORT=5051 \
  -e MESOS_MASTER=zk://zookeeperip/mesos \
  -e MESOS_SWITCH_USER=0 \
  -e MESOS_CONTAINERIZERS=docker,mesos \
  -e MESOS_LOG_DIR=/var/log/mesos \
  -e MESOS_WORK_DIR=/var/tmp/mesos \
  -v "$(pwd)/mesos/log/mesos:/var/log/mesos" \
  -v "$(pwd)/mesos/tmp/mesos:/var/tmp/mesos" \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /sys:/sys \
  -v /usr/bin/docker:/usr/local/bin/docker \
  mesosphere/mesos-slave:1.7.1 --no-systemd_enable_support \
  --no-hostname_lookup --ip=本機ip
           

設定 marathon(伺服器1)

docker run -d --net=host \
  mesosphere/marathon:v1.7.230-plain-tasks   \
  --master zk://zookeeperip:2181/mesos \
  --zk zk://zookeeperip:2181/marathon
           

http://marathon:8080/  開啟應用

設定marathon-lb(伺服器2)

docker run -d -p 9090:9090 \
  -e PORTS=9090 \
  mesosphere/marathon-lb:v1.12.3 sse \
  --group external \
  --marathon http://marathonip:8080
           

方法二

{
  "id": "/marathon-lb",
  "cmd": "apt-get install curl -y && /marathon-lb/run sse --marathon http://marathonip:8080 --group external",
  "cpus": 1,
  "mem": 128,
  "disk": 0,
  "instances": 1,
  "constraints": [
    [
      "hostname",
      "LIKE",
      "指定主機ip"
    ]
  ],
  "acceptedResourceRoles": [
    "*"
  ],
  "container": {
    "type": "DOCKER",
    "docker": {
      "forcePullImage": false,
      "image": "docker.io/mesosphere/marathon-lb",
      "parameters": [],
      "privileged": true
    },
    "volumes": []
  },
  "portDefinitions": [
    {
      "port": 10001,
      "name": "default",
      "protocol": "tcp"
    }
  ]
}
           

http://marathon-lb:9090/haproxy?stats     應用分組狀态

可能出現問題marathon 部署應用bridge 網絡報錯

mesos-slave重新開機docker

其他工具性指令

1.啟動docker,指令:systemctl start docker
2.驗證docker是否啟動成功,指令:dockers version
3.重新開機docker,指令:systemctl restart docker
4.關閉docker,指令:systemctl stop docker END
安裝
yum -y install vim*
啟動所有
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
所有停止
docker stop $(docker ps -q)
删除 所有
docker rm $(docker ps -aq)

防火牆
firewall-cmd --zone=public --add-port=5050/tcp --permanent 
firewall-cmd --reload