Py学习  »  NGINX

nginx反向代理+ngx_upstream_resolvemk-尝试从ecs服务发现路由53自动命名解析srv

Adan Rehtla • 4 年前 • 775 次点击  

我现在有一个ECS服务发现和路由53自动命名的问题。

我已将服务注册表添加到服务中,并且所有托管区域记录都将自动填充。 但是我似乎不知道如何用nginx解析dns srv记录。+ ngx_upstream_resolveMK 是的。

# DNS RESOLVER
resolver ns-x.awsdns-xx.com valid=10s;

# UPSTREAMS
upstream kibana {
  resolveMK servicediscovery.ecs service=kibana;
}

# HOST - kibana.example.com
server {
  server_name kibana.example.com;
  listen 80;
  location / {
    proxy_pass https://kibana/;
    rewrite ^/(.*)$ /$1 break;
  }
}

错误: nginx: [emerg] host not found in upstream "servicediscovery.ecs" in /usr/local/nginx/sites-enabled/kibana.conf:3

因此,似乎缺少将“serviceDiscovery.ecs”解析到路由53专用区域所需的记录。

我需要手动添加这个吗?还是有办法动态地将其添加为一个记录?

我认为这是问题的原因,但我仍在学习,可能还很远。

更新:

我知道你也可以使用xxx.xxx.xxx.2通过aws vpc访问dns 我用一种新的分解器进行了测试,但运气不好。

# DNS RESOLVER
resolver xxx.xxx.0.2 valid=10s;
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/47635
 
775 次点击  
文章 [ 2 ]  |  最新文章 4 年前
Adan Rehtla
Reply   •   1 楼
Adan Rehtla    5 年前

我们通过交换到 HAProxy .

另一个问题是使用服务dsicovy的正确格式。

使用名称创建新的私有命名空间 _ip.xxxxxxx.ecs 并命名服务发现名称 _prometheus 是的。当您在 ecs 是的。

RobC GNOKOHEAT
Reply   •   2 楼
RobC GNOKOHEAT    4 年前

nginx在ecs中使用内部dns时遇到问题。

在使用ha代理之后我成功了。

它使用docker的“links”选项,ha代理支持使用 /etc/hosts 文件。

  1. 首先,使用docker的“links”选项并设置“environment variables”(例如。 LINK_APP 我是说, LINK_PORT )中。

  2. 其次,将这些“环境变量”填入 haproxy.cfg 是的。

另外,我建议您使用“动态端口映射”到alb。它使作品更加灵活。

taskdef.json:任务定义:

{
    "executionRoleArn": "arn:aws:iam::<AWS_ACCOUNT_ID>:role/<APP_NAME>_ecsTaskExecutionRole",
    "containerDefinitions": [
      {
        "name": "<APP_NAME>-rp",
        "image": "gnokoheat/ecs-reverse-proxy:latest",
        "essential": true,
        "memoryReservation": <MEMORY_RESV>,
        "portMappings": [
          {
            "hostPort": 0,
            "containerPort": 80,
            "protocol": "tcp"
          }
        ],
        "links": [
          "<APP_NAME>"
        ],
        "environment": [
          {
            "name": "LINK_PORT",
            "value": "<SERVICE_PORT>"
          },
          {
            "name": "LINK_APP",
            "value": "<APP_NAME>"
          }
        ]
      },
      {
        "name": "<APP_NAME>",
        "image": "<IMAGE_NAME>",
        "essential": true,
        "memoryReservation": <MEMORY_RESV>,
        "portMappings": [
          {
            "protocol": "tcp",
            "containerPort": <SERVICE_PORT>
          }
        ],
        "environment": [
          {
            "name": "PORT",
            "value": "<SERVICE_PORT>"
          },
          {
            "name": "APP_NAME",
            "value": "<APP_NAME>"
          }
        ]
      }
    ],
    "requiresCompatibilities": [
      "EC2"
    ],
    "networkMode": "bridge",
    "family": "<APP_NAME>"
  }

haproxy.cfg:


global
    daemon
    pidfile /var/run/haproxy.pid

defaults
    log global
    mode http
    retries 3
    timeout connect 5000
    timeout client 50000
    timeout server 50000

frontend http
    bind *:80

    http-request set-header X-Forwarded-Host %[req.hdr(Host)]

    compression algo gzip
    compression type text/css text/javascript text/plain application/json application/xml

    default_backend app

backend app
    server static "${LINK_APP}":"${LINK_PORT}"

见:

github: https://github.com/gnokoheat/ecs-reverse-proxy

docker镜像:gnokoheat/ecs反向代理:最新

这里有更多细节 a solution !