Machine: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдИрдкреА рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдЭреБрдВрдб рдПрдЬреЗрдВрдЯ рдХреЛ рдЬреЙрдЗрди рдПрдбреНрд░ рдХреЛ рднреА рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 18 рдорд╛рд░реНрдЪ 2015  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: docker/machine

рдЕрдзрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдкреАрдЖрд░ #770 рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рдпрд╣ рдкрд╛рдпрд╛:

рдореИрдВ рдЖрдЬ рдЕрдкрдиреЗ рдЭреБрдВрдб ec2 рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рдФрд░ рдмрджрд▓реА рд╣реБрдИ рдЖрдИрдкреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реВрдВред

рдорд╛рд╕реНрдЯрд░ рдЭреБрдВрдб рдорд╢реАрдиреЛрдВ рд╕реЗ рдкреБрд░рд╛рдиреЗ рдЖрдИрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ

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" 

рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реВрдВ:

рдЭреБрдВрдб рдПрдЬреЗрдВрдЯ рдкреБрд░рд╛рдиреЗ рдЖрдИрдкреА 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

рдЭреБрдВрдб рдорд╢реАрди рд╕реЗ рдЖрдИрдкреА рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЭреБрдВрдб рдПрдЬреЗрдВрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдкреБрд░рд╛рдиреЗ рдХрдВрдЯреЗрдирд░ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдПрдХ рдирдпрд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдбреЙрдХрд░ рдЭреБрдВрдб рдиреЛрдб рдХрд╛ рдЖрдИрдкреА рдкрддрд╛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдореЗрд░рд╛ рдХрд╛рдордХрд╛рдЬ рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

% 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}"

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдПрдХрдорд╛рддреНрд░ рддреНрд╡рд░рд┐рдд рд╕реБрдзрд╛рд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕ рдЫреЛрдЯреА рд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдПрдЬреЗрдВрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рд╣реИ:

create-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}

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╣рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реНрдЯреЛрд░ рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ "рд╕рд┐рдВрдХ" рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдбреЙрдХрд░ рд╣рдм рдЯреЛрдХрди рдбрд┐рд╕реНрдХрд╡рд░реА рд╕реЗрд╡рд╛ рдХреНрд▓рд╕реНрдЯрд░ рдЖрдИрдкреА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧреА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдХреЗрд╡реА рдмреИрдХрдПрдВрдб рд╣реЛрдЧрд╛ред

cc @aluzzardi @vieux @abronan рдЖрдк рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреА рдХрд▓реНрдкрдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ (рдЭреБрдВрдб рдореЗрдВ рдЖрдИрдкреА рдмрджрд▓рдирд╛)?

@nathanleclaire K/V рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ TTL рдХреА рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рдмрд╛рдж рд╣рдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИрдВ (рдиреЛрдбреНрд╕ рдХреЛ рдЦреЛрдЬ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдИрдкреА рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕реНрдЯреЛрд░ рд╕реНрдЯреЙрдк/рд░реАрд╕реНрдЯрд╛рд░реНрдЯ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдИрд╕реА 2 рдкрд░) рдХреЗ рдмрд╛рдж рдХреНрд▓рд╕реНрдЯрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░реЗрдЧрд╛ред рдлрд┐рд░ рднреА рдЖрдк рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреБрд░рд╛рдиреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдЙрдирдХреЗ рдЯреАрдЯреАрдПрд▓ рдХреА рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рддрдХ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ 3 рдорд╢реАрдиреЗрдВ рд╣реИрдВ, рддреЛ рдЙрдирдореЗрдВ рд╕реЗ 6 рд╕реВрдЪреАрдмрджреНрдз рд╣реЛрдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░реЗрдВ, рднрд▓реЗ рд╣реА рдкреБрд░рд╛рдиреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрд╕реНрд╡рд╕реНрде рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЭреБрдВрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ )

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ, рдпрджрд┐ рдорд╢реАрди рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкреБрдирд░рд╛рд░рдВрдн рд╣реЛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдпрд╣ K/V рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рд╕реАрдзреЗ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкреБрдирд░рд╛рд░рдВрдн рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЧрд▓рдд 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}"
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

moander picture moander  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

duynguyenvan picture duynguyenvan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

masaeedu picture masaeedu  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

oobles picture oobles  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jrz picture jrz  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ