首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker群堆栈mysql/mysql-集群不解析服务名称

Docker群堆栈mysql/mysql-集群不解析服务名称
EN

Stack Overflow用户
提问于 2021-10-07 00:21:46
回答 1查看 282关注 0票数 1

我试着在码头群设置上安装mysql集群。考虑到我们有3个节点(1个管理器,2个工作人员),我们试图在manager节点上安装它。

这是my.cnf文件(正确读取)

代码语言:javascript
复制
[mysqld]
ndbcluster
ndb-connectstring=management1
user=mysql
skip_name_resolve

[mysql_cluster]
ndb-connectstring=management1

这是mysql-cluster.cnf文件(正确读取)

代码语言:javascript
复制
[ndbd default]
NoOfReplicas=2
DataMemory=80M

[ndb_mgmd]
HostName=management1
DataDir=/var/lib/mysql-cluster

[ndbd]
HostName=ndb1
DataDir=/var/lib/mysql-cluster

[ndbd]
HostName=ndb2
DataDir=/var/lib/mysql-cluster

[mysqld]
HostName=mysql1

Docker组合文件(通过portainer从git存储库部署)执行ex: docker堆栈部署-复合文件停靠器-Compose.yml vossibility

代码语言:javascript
复制
version: '3.3'
services:
  management1:
    image: mysql/mysql-cluster
    command: ndb_mgmd
    networks:
      - "meroex-network"
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
  ndb1:
    image: mysql/mysql-cluster
    command: ndbd
    networks:
      - "meroex-network"
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager

  ndb2:
    image: mysql/mysql-cluster
    command: ndbd
    networks:
      - "meroex-network"    
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager   

  mysql1:
    image: mysql/mysql-cluster
    ports:
      - "3306:3306"
    restart: always
    command: mysqld
    depends_on:
      - "management1"
      - "ndb1"
      - "ndb2"
    networks:
      - "meroex-network"
    deploy:
      placement:
        constraints:
          - node.role == manager

networks:
  meroex-network:
    external: true

该网络是一个带有子网/24的覆盖网络。

代码语言:javascript
复制
[
    {
        "Name": "meroex-network",
        "Id": "vs7lmefftygiqkzfxf9u4dqxi",
        "Created": "2021-10-07T06:29:10.608882532+08:00",
        "Scope": "swarm",
        "Driver": "overlay",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "10.0.3.0/24",
                    "Gateway": "10.0.3.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            ...
            "lb-meroex-network": {
                "Name": "meroex-network-endpoint",
                "EndpointID": "a82dd38ffeb66e3a365140b51d8614fdf08ca0f0ffb01c8262a16bde49c891ad",
                "MacAddress": "02:42:0a:00:03:34",
                "IPv4Address": "10.0.3.52/24",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.driver.overlay.vxlanid_list": "4099"
        },
        "Labels": {},
        "Peers": [
            ...
        ]
    }
]

在部署堆栈时,我们在de management1服务中收到以下错误:

代码语言:javascript
复制
2021-10-07 00:03:34 [MgmtSrvr] ERROR    -- at line 33: Could not resolve hostname [node 1]: management1
2021-10-07 00:03:34 [MgmtSrvr] ERROR    -- Could not load configuration from '/etc/mysql-cluster.cnf'

在这种情况下,我一直在问为什么服务名称不被解析。我有许多其他的春季引导应用程序,可以共享他们的服务名称来交流。

EN

回答 1

Stack Overflow用户

发布于 2022-09-07 16:01:01

可能是某些主机名的名称查找出现在名称服务器分配和发布任何地址之前。

默认情况下,管理服务器将验证配置中出现的所有主机名,如果某些查找失败,管理服务器将无法启动。

由于MySQL集群8.0.22有一个配置参数,允许管理服务器在未成功验证所有主机名的情况下启动,适合于按需出现的环境,每次可能出现新的ip地址。

尝试将以下内容添加到mysql-cluster.cnf

代码语言:javascript
复制
[tcp default]
AllowUnresolvedHostnames=1

见手册:https://dev.mysql.com/doc/refman/8.0/en/mysql-cluster-tcp-definition.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69474030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档