nginxでドッカークラスタークラスターを正常にセットアップしました。私のec2インスタンスで。このチュートリアルにdocker swarmにアプリケーションをデプロイして、そのIPアドレスをAレコードに公開する方法
https://botleg.com/stories/load-balancing-with-docker-swarm/
を使用して、私はサービスの発見のためにレジでコンソルを使用しています。この
マネージャー1
ノード1
ノード2
のように使用しています。
領事機で ドッキングウィンドウの実行--restart =でない限り、停止-d -p 8500:-bootstrap
スウォームマネージャー ドッキングウィンドウの実行--restart = -server 8500 -h領事のprogrium /領事が停止しない限り、 -d -p 3375:2375 swarm manage --replication --advertise = mangerip:3375 consul:// consulip:8500/
ドッカー実行--restart = unless-stopped -d --name = registrator -h = host --volume =/var/run/docker.sock:/tmp/docker.sock gliderlabs /登録者:最新領事://領事館:8500
ノード1 ドッカーが実行されています - restart = not-stopped -d swarm join --advertise = node1ip:2375 consul:// consulip:8500/
ドッカーが実行されています--restart = unless-stopped -d --name = registrator - h = host --volume =/var/run/docker.sock:/tmp/docker.sock gliderlabs /登録者:最新領事:// consulip:8500
ノード2 ドッカー実行--restart = d-スワーム参加--advertise = node2:2375 consul:// consulip:8500/
ドッカー実行 - restart = unless-stopped -d --name =登録者-h = host --volume =/var/run /docker.sock:/tmp/docker.sock gliderlabs /登録者:最新領事://領事館:8500
私Dockerfile
FROM nginx:latest
RUN apt-get update \
&& apt-get install -y unzip
ADD files/start.sh /bin/start.sh
RUN chmod +x /bin/start.sh
ADD files/default.ctmpl /templates/default.ctmpl
ADD https://releases.hashicorp.com/consul-template/0.12.2/consul-template_0.12.2_linux_amd64.zip /usr/bin/
RUN unzip /usr/bin/consul-template_0.12.2_linux_amd64.zip -d /usr/local/bin
EXPOSE 80
ENTRYPOINT ["/bin/start.sh"]
start.sh
#!/bin/bash
service nginx start
consul-template -consul=$CONSUL_URL -template="/templates/default.ctmpl:/etc/nginx/conf.d/default.conf:service nginx reload"
default.ctmpl
{{$app := env "APP_NAME"}}
upstream {{printf $app}} {
least_conn;
{{range service $app}}
server {{.Address}}:{{.Port}} max_fails=3 fail_timeout=60 weight=1;{{end}}
}
server {
listen 80 default;
location/{
proxy_pass http://{{printf $app}};
}
}
ドッキングウィンドウ-compose.yml
version: '2'
services:
lb:
build: .
container_name: lb
ports:
- "80:80"
environment:
- APP_NAME=tutum-nodejs-redis
- CONSUL_URL=${KV_IP}:8500
depends_on:
- web
networks:
- front-tier
web:
image: hanzel/tutum-nodejs-redis
ports:
- "4000"
environment:
- APP_PORT=4000
- REDIS_IP=redis
- REDIS_PORT=6379
depends_on:
- redis
networks:
- front-tier
- back-tier
redis:
image: redis
container_name: redis
command: redis-server --appendonly yes
volumes:
- redis-data:/data
networks:
- back-tier
volumes:
redis-data:
driver: local
networks:
front-tier:
driver: overlay
back-tier:
driver: overlay
問題これで、どのIPアドレス私はAレコードを指し示す必要があります。ドッカーがノードを自動的にピックするので。
私が初めてこれを実行しているときに、最初のノードを取得する可能性があります。場合は、私はこれを削除し、別のノードと別のIPを選ぶだろうその時間をもう一度やり直す。私のAレコードを変更する必要があるように。この問題を解決するには、
私はそれを見つけ、waglを見つけました。それは私にDNSベースのサービスの危機管理を提供します。しかし、それは非常に基本的だったと思う、私はそれが生産準備ができているかどうかを知らない。
AからZへのフロー、つまり展開からIPアドレスをAレコードに設定する方法まで、教えてください。またはちょうど私にいくつかのリンクを指します。
はいこれも私が行ったことです。ありがとうございました。 –