Nomad Hashicorp 任务之间的基本网络

问题描述

我开始用 nomad 做一些测试,我可以使用一些帮助来了解将网络添加到组任务的最简单方法。基本上我的问题是:

在任务之间添加内部网络的最简单方法是什么? 和 同一组中的任务不应该相互认访问吗?还是我做错了什么?

我有这个配置:

job "job" {
    datacenters = [ "dc1" ]
    type = "service"
    group "group" {
      count = 1
        task "db" {
            kill_timeout = "120s"
            driver = "docker"
            config {
                image = "dbimage"
                port_map {
                  db = 3306
                }
            }
            env {
                MysqL_DATABASE = "db"
                MysqL_ROOT_PASSWORD = "pass"
            }
            
            service {
                name = "db"
                port = "db"
            }
            resources {
                memory = 256
                network {
                    mode = "host"
                    port "db" {}
                }
            }
        }
        task "app1" {
            driver = "docker"
            kill_timeout = "120s"
            config {
                image = "app1"
                port_map {
                  app1 = 5000
                }
            }
            service {
                name = "app1"
                port = "app1"
            }
            resources {
                memory = 128
                network {
                    mode = "host"
                    port "app1" {}
                }
            }
        }
        task "app2" {
            driver = "docker"
            kill_timeout = "120s"
            config {
                image = "app2:image"
                port_map {
                  app2 = 4000
                }
            }
            env {
                .....
            }
            service {
                name = "app2"
                port = "app2"
            }
            resources {
                memory = 256
                network {
                    mode = "host"
                    port "app2" {}
                }
            }
        }
    }
}

并且我希望我的 app1 和 app2 可以在内部相互交谈并与数据库交谈。我已经阅读了有关传递给每个容器的游牧地址变量的信息,我尝试连接,但连接被拒绝。 是使用 connect 完成此行为的唯一方法吗?或者有更简单的方法吗?感谢帮助:)

解决方法

您可以使用 NOMAD_ADDR_task_port 变量连接到作业组中的另一个任务。

例如,在 app1app2 任务中使用 $NOMAD_ADDR_db_db 环境变量来获取 db 任务的 ip:port 对。

有关详细信息,请查看https://www.nomadproject.io/docs/runtime/environment

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...