Docker Swarm - сервис, не обслуживающий запросы, назначенные пирам VirtualBox - PullRequest
0 голосов
/ 26 ноября 2018

В настоящее время я пытаюсь выполнить учебное пособие по началу работы с Docker, часть 4 (https://docs.docker.com/get-started/part4/). Я развертываю службу на рое из 2 компьютеров (один менеджер - локальный сервер, один рабочий - машина виртуальной коробки созданас командой "docker-machine"), с 5 репликами, следующим образом:

docker service create --mode=replicated --publish published=4000,target=80  --replicas=5 --name=pyserv dcormar/get-started:part2

Служба развернута на двух машинах:

docker service ps pyserv
ID                  NAME                IMAGE                       NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
m3txdzj96t6z        pyserv.1            dcormar/get-started:part2   machine1            Running             Running 15 minutes ago                       
dtxozv8m7yfa        pyserv.2            dcormar/get-started:part2   dcormar-1           Running             Running 15 minutes ago                       
1m38f2hef4wf        pyserv.3            dcormar/get-started:part2   machine1            Running             Running 15 minutes ago                       
dcnimcrlh1pb        pyserv.4            dcormar/get-started:part2   dcormar-1           Running             Running 15 minutes ago                       
4t78torxwlns        pyserv.5            dcormar/get-started:part2   machine1            Running             Running 15 minutes ago     

И запросы, независимо откакой сервер я им отправляю, обслуживаются только тогда, когда они перенаправляются в контейнер, размещенный менеджером (локальный сервер):

user@dcormar-1:~$ curl http://192.168.99.1:4000
<h3>Hello World!</h3><b>Hostname:</b> b57821504adb<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>user@dcormar-1:~$ curl http://192.168.99.1:4000
<h3>Hello World!</h3><b>Hostname:</b> b7654fd27e39<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>user@dcormar-1:~$ curl http://192.168.99.1:4000
curl: (7) Failed to connect to 192.168.99.1 port 4000: Connection refused
user@dcormar-1:~$ curl http://192.168.99.1:4000
curl: (7) Failed to connect to 192.168.99.1 port 4000: Connection refused
user@dcormar-1:~$ curl http://192.168.99.1:4000
curl: (7) Failed to connect to 192.168.99.1 port 4000: Connection refused
user@dcormar-1:~$ curl http://192.168.99.1:4000
<h3>Hello World!</h3><b>Hostname:</b> b57821504adb<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>user@dcormar-1:~$ curl http://192.168.99.1:4000
<h3>Hello World!</h3><b>Hostname:</b> b7654fd27e39<br/><b>Visits:</b> <i>cannot connect to Redis, counter disabled</i>user@dcormar-1:~$ curl http://192.168.99.1:4000
curl: (7) Failed to connect to 192.168.99.1 port 4000: Connection refused 

При выполнении команды "curl" для 192.168.99.100 все запросы не обслуживаются.

Похоже, что порты открыты на обеих машинах, поэтому у меня заканчиваются идеи для решения этой проблемы.

user@dcormar-1:~$ sudo nmap -sU -p 7946,4789 192.168.99.100

Starting Nmap 7.60 ( https://nmap.org ) at 2018-11-26 13:49 CET
Nmap scan report for 192.168.99.100
Host is up (0.00017s latency).

PORT     STATE         SERVICE
4789/udp open|filtered unknown
7946/udp open|filtered unknown
MAC Address: 08:00:27:0A:0C:D9 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 14.58 seconds
user@dcormar-1:~$ sudo nmap -sU -p 7946,4789 192.168.99.1

Starting Nmap 7.60 ( https://nmap.org ) at 2018-11-26 13:49 CET
Nmap scan report for dcormar-1 (192.168.99.1)
Host is up.

PORT     STATE         SERVICE
4789/udp open|filtered unknown
7946/udp open|filtered unknown

Nmap done: 1 IP address (1 host up) scanned in 3.35 seconds

user@dcormar-1:~$ sudo nmap -sT -p 2376,7946,80,2377,4000 192.168.99.100

Starting Nmap 7.60 ( https://nmap.org ) at 2018-11-26 13:50 CET
Nmap scan report for 192.168.99.100
Host is up (0.00058s latency).

PORT     STATE  SERVICE
80/tcp   closed http
2376/tcp open   docker
2377/tcp closed swarm
4000/tcp closed remoteanything
7946/tcp open   unknown
MAC Address: 08:00:27:0A:0C:D9 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 13.31 seconds
user@dcormar-1:~$ sudo nmap -sT -p 2376,7946,80,2377,4000 192.168.99.1

Starting Nmap 7.60 ( https://nmap.org ) at 2018-11-26 13:50 CET
Nmap scan report for dcormar-1 (192.168.99.1)
Host is up (0.00045s latency).

PORT     STATE  SERVICE
80/tcp   closed http
2376/tcp closed docker
2377/tcp open   swarm
4000/tcp closed remoteanything
7946/tcp open   unknown

Nmap done: 1 IP address (1 host up) scanned in 0.22 seconds

Версия докера: 18.09

Примечание: если я попытаюсь, как в учебном пособии, создать рой с 2-мя машинами, обе из которых являются «виртуальными машинами», то ни один из запросов не будет обработан.

1 Ответ

0 голосов
/ 28 ноября 2018

Решено!проблема была с Boot2Docker версии 18.09.После того, как я удалил эти виртуальные машины и создал заново с помощью Boot2Docker 18.06 (команда ниже), он начал работать, как и ожидалось.

docker-machine create --driver=virtualbox --virtualbox-boot2docker-url=boot2docker.iso vboxm2

Вывод ниже:

docker-machine ssh vboxm1

docker-machine ssh vboxm2

(соединение docker swarm join)на обеих виртуальных машинах vbox1: менеджер, vbox2: работник)

    docker service create --publish published=4025,target=80  --replicas 4 --name nginx1 nginx
se9qjuwbumpergh7nvg92vvcm
overall progress: 4 out of 4 tasks 
1/4: running   
2/4: running   
3/4: running   
4/4: running   
verify: Service converged

curl 192.168.99.100:4025
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
(...)
...