私の目標は、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にもあります