Узлы Docker Swarm в одной оверлейной сети не видят друг друга

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

could not translate host name "dev_db" to address: Temporary failure in name resolution

Я исследовал, находятся ли они в одной сети и, согласно проверке, они находятся в одном сетевом оверлее:

docker service inspect dev_slavedb
[
    {
        "ID": "flcwn7p17lgy6f9ad89iqas0e",
        "Version": {
            "Index": 68009
        },
        "CreatedAt": "2018-01-06T00:33:22.602060695Z",
        "UpdatedAt": "2018-01-06T00:33:22.603561612Z",
        "Spec": {
            "Name": "dev_slavedb",
            "Labels": {},
            "TaskTemplate": {
                "ContainerSpec": {
                    "Image": "postgres:latest@sha256:3f4441460029e12905a5d447a3549ae2ac13323d045391b0cb0cf8b48ea17463",
                    "Env": [
                        "POSTGRES_USER=mydatabase",
                        "POSTGRES_PASSWORD=mydatabase"
                    ],
                    "Mounts": [
                        {
                            "Type": "volume",
                            "Source": "slave_postgres",
                            "Target": "/var/lib/postgresql/data"
                        }
                    ],
                    "StopGracePeriod": 10000000000,
                    "DNSConfig": {}
                },
                "Resources": {
                    "Limits": {},
                    "Reservations": {}
                },
                "RestartPolicy": {
                    "Condition": "any",
                    "Delay": 5000000000,
                    "MaxAttempts": 0
                },
                "Placement": {
                    "Constraints": [
                        "node.hostname==swarm02"
                    ],
                    "Platforms": [
                        {
                            "Architecture": "amd64",
                            "OS": "linux"
                        },
                        {
                            "OS": "linux"
                        },
                        {
                            "OS": "linux"
                        },
                        {
                            "Architecture": "arm64",
                            "OS": "linux"
                        },
                        {
                            "Architecture": "386",
                            "OS": "linux"
                        },
                        {
                            "Architecture": "ppc64le",
                            "OS": "linux"
                        },
                        {
                            "Architecture": "s390x",
                            "OS": "linux"
                        }
                    ]
                },
                "Networks": [
                    {
                        "Target": "hh8zmhc9gx0p9iwukozo31dgs"
                    }
                ],
                "ForceUpdate": 0,
                "Runtime": "container"
            },
            "Mode": {
                "Replicated": {
                    "Replicas": 1
                }
            },
            "UpdateConfig": {
                "Parallelism": 1,
                "FailureAction": "pause",
                "Monitor": 5000000000,
                "MaxFailureRatio": 0,
                "Order": "stop-first"
            },
            "RollbackConfig": {
                "Parallelism": 1,
                "FailureAction": "pause",
                "Monitor": 5000000000,
                "MaxFailureRatio": 0,
                "Order": "stop-first"
            },
            "EndpointSpec": {
                "Mode": "vip",
                "Ports": [
                    {
                        "Protocol": "tcp",
                        "TargetPort": 5432,
                        "PublishedPort": 5432,
                        "PublishMode": "host"
                    }
                ]
            }
        },
        "Endpoint": {
            "Spec": {
                "Mode": "vip",
                "Ports": [
                    {
                        "Protocol": "tcp",
                        "TargetPort": 5432,
                        "PublishedPort": 5432,
                        "PublishMode": "host"
                    }
                ]
            },
            "Ports": [
                {
                    "Protocol": "tcp",
                    "TargetPort": 5432,
                    "PublishedPort": 5432,
                    "PublishMode": "host"
                }
            ],
            "VirtualIPs": [
                {
                    "NetworkID": "hh8zmhc9gx0p9iwukozo31dgs",
                    "Addr": "10.0.0.4/24"
                }
            ]
        }
    }
]





docker service inspect dev_db
[
    {
        "ID": "jqwmzoe57lonbr0wwnp262x9i",
        "Version": {
            "Index": 68001
        },
        "CreatedAt": "2018-01-06T00:30:50.284998521Z",
        "UpdatedAt": "2018-01-06T00:30:50.285963303Z",
        "Spec": {
            "Name": "dev_db",
            "Labels": {},
            "TaskTemplate": {
                "ContainerSpec": {
                    "Image": "postgres:latest@sha256:3f4441460029e12905a5d447a3549ae2ac13323d045391b0cb0cf8b48ea17463",
                    "Env": [
                        "POSTGRES_USER=mydatabase",
                        "POSTGRES_PASSWORD=mydatabase"
                    ],
                    "Mounts": [
                        {
                            "Type": "volume",
                            "Source": "postgres",
                            "Target": "/var/lib/postgresql/data"
                        }
                    ],
                    "StopGracePeriod": 10000000000,
                    "DNSConfig": {}
                },
                "Resources": {
                    "Limits": {},
                    "Reservations": {}
                },
                "RestartPolicy": {
                    "Condition": "any",
                    "Delay": 5000000000,
                    "MaxAttempts": 0
                },
                "Placement": {
                    "Constraints": [
                        "node.hostname==swarm01"
                    ],
                    "Platforms": [
                        {
                            "Architecture": "amd64",
                            "OS": "linux"
                        },
                        {
                            "OS": "linux"
                        },
                        {
                            "OS": "linux"
                        },
                        {
                            "Architecture": "arm64",
                            "OS": "linux"
                        },
                        {
                            "Architecture": "386",
                            "OS": "linux"
                        },
                        {
                            "Architecture": "ppc64le",
                            "OS": "linux"
                        },
                        {
                            "Architecture": "s390x",
                            "OS": "linux"
                        }
                    ]
                },
                "Networks": [
                    {
                        "Target": "hh8zmhc9gx0p9iwukozo31dgs"
                    }
                ],
                "ForceUpdate": 0,
                "Runtime": "container"
            },
            "Mode": {
                "Replicated": {
                    "Replicas": 1
                }
            },
            "UpdateConfig": {
                "Parallelism": 1,
                "FailureAction": "pause",
                "Monitor": 5000000000,
                "MaxFailureRatio": 0,
                "Order": "stop-first"
            },
            "RollbackConfig": {
                "Parallelism": 1,
                "FailureAction": "pause",
                "Monitor": 5000000000,
                "MaxFailureRatio": 0,
                "Order": "stop-first"
            },
            "EndpointSpec": {
                "Mode": "vip",
                "Ports": [
                    {
                        "Protocol": "tcp",
                        "TargetPort": 5432,
                        "PublishedPort": 5432,
                        "PublishMode": "host"
                    }
                ]
            }
        },
        "Endpoint": {
            "Spec": {
                "Mode": "vip",
                "Ports": [
                    {
                        "Protocol": "tcp",
                        "TargetPort": 5432,
                        "PublishedPort": 5432,
                        "PublishMode": "host"
                    }
                ]
            },
            "Ports": [
                {
                    "Protocol": "tcp",
                    "TargetPort": 5432,
                    "PublishedPort": 5432,
                    "PublishMode": "host"
                }
            ],
            "VirtualIPs": [
                {
                    "NetworkID": "hh8zmhc9gx0p9iwukozo31dgs",
                    "Addr": "10.0.0.2/24"
                }
            ]
        }
    }
]

Даже когда я пытаюсь использовать их VIP (10.0.0.2 и 10.0.0.4), я также получаю ту же ошибку. Я не знаю, как это исправить, любые идеи приветствуются.


person VaTo    schedule 06.01.2018    source источник
comment
Можете подробнее рассказать о том, что вы создали? как лидер и сколько рабов, я знаю, что это видно, читая ваш опубликованный вопрос, но я хочу разобраться в том, что именно вы пытаетесь сделать и почему это вам не позволяет.   -  person abeltre1    schedule 06.01.2018


Ответы (2)


Убедитесь, что на каждом узле Swarm открыты правильные порты брандмауэра, чтобы позволить другим узлам, иначе такие вещи, как DNS и другие коммуникации, не произойдут:

https://www.bretfisher.com/docker-swarm-firewall-ports/ < / а>

person Bret Fisher    schedule 07.01.2018

Я предлагаю попробовать создать Overlay Network самостоятельно, чтобы убедиться, что она действительно работает. После создания оверлейной сети вы можете добавить все узлы в подсеть, если необходимо, и получить к ним доступ таким образом или через более сложный маршрут, вы можете просто создать ssh-каналы между ними, чтобы убедиться, что вы можете контролировать связь.

  1. Вот как вы создаете Overlay Network

Overlay-Network

person abeltre1    schedule 06.01.2018
comment
Оверлейная сеть была создана мной по вашей рекомендованной вами ссылке. Узлы являются частью этой оверлейной сети, как вы можете видеть в деталях внутри проверочной части, которую я показывал. - person VaTo; 07.01.2018
comment
можешь показать, как создавалась оверлейная сеть? как точный код командной строки ... - person abeltre1; 07.01.2018