PR #770์ ๋ ํ ์คํธํ ํ ๋ค์์ ์ฐพ์์ต๋๋ค.
์ค๋ Swarm ec2 ํด๋ฌ์คํฐ๋ฅผ ๋ค์ ์์ํ ํ ๋ณ๊ฒฝ๋ ๋ค๋ฅธ IP ๋ฌธ์ ๋ฅผ ๊ฐ์งํ์ต๋๋ค.
๋ง์คํฐ๋ ์ค์ ๋จธ์ ์ ์ด์ IP๋ฅผ ์ฌ์ฉํฉ๋๋ค.
time="2015-03-18T18:23:54Z" level=error msg="Get https://54.69.29.90:2376/v1.15/info: dial tcp 54.69.29.90:2376: i/o timeout"
time="2015-03-18T18:23:54Z" level=error msg="Get https://54.69.230.35:2376/v1.15/info: dial tcp 54.69.230.35:2376: i/o timeout"
time="2015-03-18T18:23:54Z" level=error msg="Get https://54.69.255.39:2376/v1.15/info: dial tcp 54.69.255.39:2376: i/o timeout"
time="2015-03-18T18:23:54Z" level=error msg="Get https://52.10.167.59:2376/v1.15/info: dial tcp 52.10.167.59:2376: i/o timeout"
๋๋ ๋ฌธ์ ๋ฅผ ๋ถ์ํ๋ค:
Swarm ์์ด์ ํธ๋ ์ด์ IP 52.10.167.59
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
amazonec2-03 amazonec2 Stopped
dev virtualbox Stopped
ec2-swarm-01 amazonec2 Running tcp://54.149.27.239:2376 ec2-swarm-master
ec2-swarm-02 amazonec2 Running tcp://52.10.108.31:2376 ec2-swarm-master
ec2-swarm-03 * amazonec2 Running tcp://54.148.5.178:2376 ec2-swarm-master
ec2-swarm-master amazonec2 Running tcp://52.11.98.189:2376 ec2-swarm-master (master)
$ $(docker-machine env ec2-swarm-master)
$ docker ps --no-trunc
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
13d27667155b3b1962b99b8d817c7a9865b47fe5b0d5d9c0af08735b26163efa swarm:latest "/swarm join --addr 52.10.167.59:2376 token://5a57a53a13470b1e680c6904ce5b34d1" 35 hours ago Up 11 minutes 2375/tcp swarm-agent
810f7ce04b6439c191470a2116197088ee2a3d2e5ed1cc7f4742aacef46317f9 swarm:latest "/swarm manage --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server.pem --tlskey=/etc/docker/server-key.pem -H tcp://0.0.0.0:3376 token://5a57a53a13470b1e680c6904ce5b34d1" 35 hours ago Up 11 minutes 2375/tcp, 0.0.0.0:3376->3376/tcp swarm-agent-master
$ docker-machine ip ec2-swarm-master
52.11.98.189
์ค์ ๋จธ์ ์ IP๊ฐ ๋ณ๊ฒฝ๋ ํ ๊ตฌํ์ ์ค์ ์์ด์ ํธ๋ฅผ ์ฌ๊ตฌ์ฑํ๊ณ ์ด์ ์ปจํ ์ด๋๋ฅผ ์ ๊ฑฐํ๊ณ ์ ์ปจํ ์ด๋๋ฅผ ์์ํด์ผ ํฉ๋๋ค.
์ ์ผํ ๋น ๋ฅธ ์์ ์ ํ์ฌ ๋ค์๊ณผ ๊ฐ์ ์์ ์คํฌ๋ฆฝํธ๋ก ์์ด์ ํธ๋ฅผ ๋ค์ ๋ง๋๋ ๊ฒ์ ๋๋ค.
์์ฑ-swam-agent.sh
#!/bin/bash
TOKEN=$(docker inspect -f "{{ index .Config.Cmd 3 }}" swarm-agent)
IP=$(curl http://169.254.169.254/latest/meta-data/public-ipv4)
docker stop swarm-agent
docker rm swarm-agent
docker run -d --name swarm-agent --restart=always swarm \
join --addr ${IP}:2376 \
${TOKEN}
์ฅ๊ธฐ์ ์ผ๋ก๋ ๊ตฌ์ฑ ์ ์ฅ์์ ๋ํ ์ผ์ข ์ "๋๊ธฐํ"๋ฅผ ์ง์ํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. Docker Hub ํ ํฐ ๊ฒ์ ์๋น์ค๊ฐ ํด๋ฌ์คํฐ IP ์์ ์ ์ง์ํ ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง KV ๋ฐฑ์๋๋ ๊ทธ๋ด ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค.
cc @aluzzardi @vieux @abronan ์ด ๊ฒฝ์ฐ(๊ตฐ์ง์์ IP ๋ณ๊ฒฝ)์ ๋ํ ์ํฌํ๋ก๋ฅผ ์ด๋ป๊ฒ ๊ตฌ์ํ์๊ฒ ์ต๋๊น?
@nathanleclaire K/V์ ํญ๋ชฉ์ TTL ๋ง๋ฃ ํ ์ญ์ ๋ฉ๋๋ค(๋ ธ๋๊ฐ ๊ฒ์์์ ์ ๊ฑฐ๋จ). ๋ฐ๋ผ์ IP๊ฐ ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ ์ ์ฅ์๋ ์ค์ง/์ฌ์์(์: EC2์์) ํ ํด๋ฌ์คํฐ์ ์ํ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋ฐ์ํฉ๋๋ค. ์ฌ์ ํ TTL์ด ๋ง๋ฃ๋ ๋๊น์ง ์ฝ๊ฐ์ ์๊ฐ ๋์ ์ค๋๋ ํญ๋ชฉ์ด ๋์ด๋ ๊ฒ์ผ๋ก ์์ํ ์ ์์ต๋๋ค(3๋์ ์์คํ ์ด ์๋ ๊ฒฝ์ฐ ์ด์ ํญ๋ชฉ์ด ๋น์ ์์ผ๋ก ํ์๋์ด Swarm์์ ์ฌ์ฉํ ์ ์๋๋ผ๋ ํด๋น ํญ๋ชฉ ์ค 6๊ฐ๊ฐ ๋์ด๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. )
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Machine์ด ์ธ์คํด์ค๊ฐ ๋ค์ ์์๋๊ณ ์์์ ์ธ์ํ๋ฉด ๋ค์ ์์ํ ํ ์๋ชป๋ IP๋ฅผ ๊ฐ์ง ์์คํ ์ ๋์ดํ์ง ์๋๋ก K/V์ ํญ๋ชฉ์ ์ง์ ์ญ์ ํ ์ ์์ต๋๋ค.
๋ค์์ docker swarm ๋ ธ๋์ IP ์ฃผ์๋ฅผ ๋ณ๊ฒฝํ ํ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค.
% docker-machine env docker-node
% docker-machine regenerate-certs docker-node
(I sometimes need to run multiple times when error occurs.)
% eval $(docker-machine env docker-node)
% export TOKEN=$(docker inspect -f "{{ index .Config.Cmd 3}}" swarm-agent)
% docker rm -f swarm-agent
% docker run -d --name=swarm-agent --restart=always swarm:latest join --advertise "${DOCKER_HOST##tcp://}" "${TOKEN}"
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ค์์ docker swarm ๋ ธ๋์ IP ์ฃผ์๋ฅผ ๋ณ๊ฒฝํ ํ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค.