Machine: بعد تغيير عنوان IP ، يجب على عامل السرب أيضًا تغيير عنوان الانضمام.

تم إنشاؤها على ١٨ مارس ٢٠١٥  ·  4تعليقات  ·  مصدر: docker/machine

بعد المزيد من الاختبارات PR # 770 وجدت هذا:

اكتشفت مشكلة IP أخرى تم تغييرها ، بعد أن أعدت تشغيل مجموعة swarm ec2 الخاصة بي اليوم.

السيد يستخدم 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" 

أحلل المشكلة:

ينضم عميل السرب إلى عنوان 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 من آلة السرب ، يجب أن يعيد التنفيذ تكوين عامل السرب ، وإزالة الحاوية القديمة وبدء واحدة جديدة.

areswarm driveec2

التعليق الأكثر فائدة

هذا هو الحل بعد تغيير عنوان IP لعقدة docker swarm:

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

أعتقد أنه سيتعين علينا على المدى الطويل دعم نوع من "المزامنة" لمتجر التكوين ، لا أعرف ما إذا كانت خدمة اكتشاف رمز Docker Hub ستدعم تعديل عناوين IP للكتلة ، لكنني متأكد من أن الخلفيات الخلفية لـ KV ستدعم ذلك.

سم مكعبaluzzardivieuxabronan كيف تصور سير العمل لهذه الحالة (آي بي إس في سرب تغيير)؟

nathanleclaire يتم حذف إدخالات K / V بعد انتهاء صلاحية TTL (تتم إزالة العقد من الاكتشاف). لذلك إذا تم تغيير عناوين IP ، فسيعكس المتجر حالة المجموعة بشكل صحيح بعد التوقف / إعادة التشغيل (في EC2 على سبيل المثال). ما زلت تتوقع أن يتم سرد الإدخالات القديمة لبعض الوقت حتى تنتهي مدة TTL الخاصة بهم (إذا كان لديك 3 أجهزة ، فتوقع أن يكون لديك 6 من تلك الإدخالات المدرجة على الرغم من أنه سيتم وضع علامة على الإدخالات القديمة على أنها غير صحية ولا يمكن استخدامها في Swarm )

كحل بديل ، إذا كان الجهاز على دراية بإعادة تشغيل مثيل ، فيمكنه حذف الإدخال في K / V مباشرةً لعدم إدراج الأجهزة ذات عناوين IP الخاطئة بعد إعادة التشغيل.

هذا هو الحل بعد تغيير عنوان IP لعقدة docker swarm:

% 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 التقييمات