2

私の目標は、3 台の Linux (ubuntu) 物理ワークステーションのグループに docker swarm をセットアップし、その上でdaskクラスターを実行することです。

$ docker --version
Docker version 17.06.0-ce, build 02c1d87

docker swarm を初期化し、すべてのマシンを swarm に追加できます。

cordoba$ docker node ls
ID                            HOSTNAME    STATUS    AVAILABILITY MANAGER STATUS
j8k3hm87w1vxizfv7f1bu3nfg     box1        Ready     Active              
twg112y4m5tkeyi5s5vtlgrap     box2        Ready     Active              
upkr459m75au0vnq64v5k5euh *   box3        Ready     Active              Leader

docker stack deploy -c docker-compose.yml dask-cluster次に、リーダー ボックスを実行します。

ここにあるdocker-compose.yml

version: "3"

services:

  dscheduler:
    image: richardbrks/dask-cluster
    ports:
     - "8786:8786"
     - "9786:9786"
     - "8787:8787"
    command: dask-scheduler
    networks:
      - distributed
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
      placement:
        constraints: [node.role == manager]

  dworker:
    image: richardbrks/dask-cluster
    command: dask-worker dscheduler:8786
    environment:
      - "affinity:container!=dworker*"
    networks:
      - distributed
    depends_on:
      - dscheduler
    deploy:
      replicas: 3
      restart_policy:
        condition: on-failure

networks:
  distributed:

そしてここにありますrichardbrks/dask-cluster

# Official python base image
FROM python:2.7    
# update apt-repository
RUN apt-get update
# only install enough library to run dask on a cluster (with monitoring)
RUN pip install --no-cache-dir \
    psutil \
    dask[complete]==0.15.2 \
    bokeh

スウォームを展開するとdworker、同じマシン上にないノードは何がdscheduler 何でdschedulerあるかを認識しません。これらのノードの 1 つに SSH で接続し、env を調べましたdschedulerが、そこにはありませんでした。また、ping を実行しようとしたdschedulerところ、「ping: unknown host」が返されました。

docker は、サービス検出に基づいて内部 dns を提供することになっているので、呼び出すとノードdschedulerのアドレスに移動できると思いました。dschedler

コンピューターに設定されていないセットアップはありますか? または、私のファイルに何かが欠けていますか?

このコードはすべてhttps://github.com/MentalMasochist/dask-swarmにもあります

4

2 に答える 2