You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by GitBox <gi...@apache.org> on 2021/03/04 02:02:49 UTC

[GitHub] [apisix] simeon49 opened a new issue #3744: bug: "could not be resolved (3: Host not found)" error in docker-compose env

simeon49 opened a new issue #3744:
URL: https://github.com/apache/apisix/issues/3744


   ### Issue description
   最近在使用APISIX 的服务比较频繁的报 "{'http_status_code': 500, 'content': {'error_msg': 'etcd-node2 could not be resolved (3: Host not found)'}}" 错误, 我们的环境是通过docker-compose 启动, 注意: 这个在服务运行过程中不是一直包错, 而是比较频繁报这个错误
   
   ### Environment
   
   * apisix version (cmd: `apisix version`): apisix   2.0  (docker image)
   * OS (cmd: `uname -a`): Ubuntu 18.04
   * OpenResty / Nginx version (cmd: `nginx -V` or `openresty -V`): openresty/1.19.3.1
   * etcd version, if have (cmd: run `curl http://127.0.0.1:9090/v1/server_info` to get the info from server-info API): etcd:3.4.9
   * apisix-dashboard version, if have:
   
   ### docker-compose 配置:
   
   ```yaml
   version: '3'
   
   networks:
       default:
           external:
               name: dev-network
   
   services:
       # --- API网关 ---
       apisix:
           container_name: apisix
           image: apisix:2.0
           restart: always
           volumes:
               - ./configs/apisix/config/config.yaml:/usr/local/apisix/conf/config.yaml:ro
               - /data/apisix_log:/usr/local/apisix/logs
           depends_on:
               - etcd
           ports:
               - '8080:9080/tcp'
               - '8443:9443/tcp'
   
       # --- etcd ---
       etcd:
           container_name: etcd
           image: bitnami/etcd:3.4.9
           user: root
           restart: always
           volumes:
               - /data/etcd_data:/etcd_data
           environment:
               ETCD_DATA_DIR: /etcd_data
               ETCD_ENABLE_V2: "true"
               ALLOW_NONE_AUTHENTICATION: "yes"
               ETCD_ADVERTISE_CLIENT_URLS: "http://0.0.0.0:2379"
               ETCD_LISTEN_CLIENT_URLS: "http://0.0.0.0:2379"
           ports:
               - '2379:2379/tcp'
           networks:
               default: 
                   aliases:
                       - etcd
   
       # ...other services ....
   ```
   
   ### config.yaml 
   
   ```yaml
   apisix:
     node_listen: 9080              # APISIX listening port
     enable_heartbeat: true
     enable_admin: true
     enable_admin_cors: true         # Admin API support CORS response headers.
     enable_debug: false
     enable_dev_mode: false          # Sets nginx worker_processes to 1 if set to true
     enable_reuseport: true          # Enable nginx SO_REUSEPORT switch if set to true.
     enable_ipv6: true
     config_center: etcd             # etcd: use etcd to store the config value
                                     # yaml: fetch the config value from local yaml file `/your_path/conf/apisix.yaml`
   
     #proxy_protocol:                 # Proxy Protocol configuration
     #  listen_http_port: 9181        # The port with proxy protocol for http, it differs from node_listen and port_admin.
                                      # This port can only receive http request with proxy protocol, but node_listen & port_admin
                                      # can only receive http request. If you enable proxy protocol, you must use this port to
                                      # receive http request with proxy protocol
     #  listen_https_port: 9182       # The port with proxy protocol for https
     #  enable_tcp_pp: true           # Enable the proxy protocol for tcp proxy, it works for stream_proxy.tcp option
     #  enable_tcp_pp_to_upstream: true # Enables the proxy protocol to the upstream server
   
     proxy_cache:                     # Proxy Caching configuration
       cache_ttl: 10s                 # The default caching time if the upstream does not specify the cache time
       zones:                         # The parameters of a cache
       - name: disk_cache_one         # The name of the cache, administrator can be specify
                                      # which cache to use by name in the admin api
         memory_size: 50m             # The size of shared memory, it's used to store the cache index
         disk_size: 1G                # The size of disk, it's used to store the cache data
         disk_path: "/tmp/disk_cache_one" # The path to store the cache data
         cache_levels: "1:2"           # The hierarchy levels of a cache
     #  - name: disk_cache_two
     #    memory_size: 50m
     #    disk_size: 1G
     #    disk_path: "/tmp/disk_cache_two"
     #    cache_levels: "1:2"
   
     allow_admin:                  # http://nginx.org/en/docs/http/ngx_http_access_module.html#allow
       - 127.0.0.0/12              # If we don't set any IP list, then any IP access is allowed by default.
       - 172.17.0.0/12
       - 192.168.0.0/12
       - 10.0.0.0/8
       - "::/64"
     # port_admin: 9180              # use a separate port
   
     # Default token when use API to call for Admin API.
     # *NOTE*: Highly recommended to modify this value to protect APISIX's Admin API.
     # Disabling this configuration item means that the Admin API does not
     # require any authentication.
     admin_key:
       -
         name: "admin"
         key: frmGtg8EdhXhE0o0sYc3DU4823M2SOoW
         role: admin                 # admin: manage all configuration data
                                     # viewer: only can view configuration data
       -
         name: "viewer"
         key: w43eJbMFDbiusHsmYCdwDe4oWqj3dnsT
         role: viewer
     router:
       http: 'radixtree_uri'         # radixtree_uri: match route by uri(base on radixtree)
                                     # radixtree_host_uri: match route by host + uri(base on radixtree)
       ssl: 'radixtree_sni'          # radixtree_sni: match route by SNI(base on radixtree)
     # stream_proxy:                 # TCP/UDP proxy
     #   tcp:                        # TCP proxy port list
     #     - 9100
     #     - 9101
     #   udp:                        # UDP proxy port list
     #     - 9200
     #     - 9211
     dns_resolver:                   # default DNS resolver, with disable IPv6 and enable local DNS
       - 127.0.0.11
       - 114.114.114.114
       - 223.5.5.5
       - 1.1.1.1
       - 8.8.8.8
     dns_resolver_valid: 30          # valid time for dns result 30 seconds
     resolver_timeout: 5             # resolver timeout
     ssl:
       enable: true
       enable_http2: true
       listen_port: 9443
       ssl_protocols: "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3"
       ssl_ciphers: "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA"
   
   nginx_config:                     # config for render the template to genarate nginx.conf
     error_log: "logs/error.log"
     error_log_level: "warn"         # warn,error
     worker_rlimit_nofile: 20480     # the number of files a worker process can open, should be larger than worker_connections
     event:
       worker_connections: 10620
     http:
       access_log: "logs/access.log"
       keepalive_timeout: 60s         # timeout during which a keep-alive client connection will stay open on the server side.
       client_header_timeout: 60s     # timeout for reading client request header, then 408 (Request Time-out) error is returned to the client
       client_body_timeout: 60s       # timeout for reading client request body, then 408 (Request Time-out) error is returned to the client
       send_timeout: 10s              # timeout for transmitting a response to the client.then the connection is closed
       underscores_in_headers: "on"   # default enables the use of underscores in client request header fields
       real_ip_header: "X-Real-IP"    # http://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_header
       real_ip_from:                  # http://nginx.org/en/docs/http/ngx_http_realip_module.html#set_real_ip_from
         - 127.0.0.1
         - 'unix:'
       #lua_shared_dicts:              # add custom shared cache to nginx.conf
       #  ipc_shared_dict: 100m        # custom shared cache, format: `cache-key: cache-size`
   
   etcd:
     host:                           # it's possible to define multiple etcd hosts addresses of the same etcd cluster.
       - "http://etcd:2379"          # multiple etcd address
     prefix: "/apisix"               # apisix configurations prefix
     timeout: 3                      # 3 seconds
   
   plugins:                          # plugin list
     - example-plugin
     - limit-req
     - limit-count
     - limit-conn
     - key-auth
     - basic-auth
     - prometheus
     - node-status
     - jwt-auth
     - zipkin
     - ip-restriction
     - grpc-transcode
     - serverless-pre-function
     - serverless-post-function
     - openid-connect
     - proxy-rewrite
     - redirect
     - response-rewrite
     - fault-injection
     - udp-logger
     - wolf-rbac
     - proxy-cache
     - tcp-logger
     - proxy-mirror
     - kafka-logger
     - cors
   stream_plugins:
     - mqtt-proxy
   
   ```
   
   
   ### What's the actual result? (including assertion message & call stack if applicable)
   
   Exception: {'http_status_code': 500, 'content': {'error_msg': 'etcd could not be resolved (3: Host not found)'}}
   
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [apisix] spacewander commented on issue #3744: bug: "could not be resolved (3: Host not found)" error in docker-compose env

Posted by GitBox <gi...@apache.org>.
spacewander commented on issue #3744:
URL: https://github.com/apache/apisix/issues/3744#issuecomment-790276615


   So where you put the `etcd-node2`? It is not a domain name.
   And I can even understand which host is not found. Sometimes you say it is `etcd-node2` but sometimes you say it is `etcd`.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [apisix] spacewander commented on issue #3744: bug: "could not be resolved (3: Host not found)" error in docker-compose env

Posted by GitBox <gi...@apache.org>.
spacewander commented on issue #3744:
URL: https://github.com/apache/apisix/issues/3744#issuecomment-790251988


   Got it. APISIX doesn't support resolving etcd's domain from /etc/hosts yet.
   Maybe you can use `docker network` and configure an IP for the etcd?


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [apisix] simeon49 commented on issue #3744: bug: "could not be resolved (3: Host not found)" error in docker-compose env

Posted by GitBox <gi...@apache.org>.
simeon49 commented on issue #3744:
URL: https://github.com/apache/apisix/issues/3744#issuecomment-790246535


   > There is not `http_status_code` in APISIX. Make sure the error message is _really_ come from APISIX.
   
   this error come from an other service witch use apisix, the response of apisix is {'error_msg': 'etcd could not be resolved (3: Host not found)'} with 500 http error code


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [apisix] simeon49 commented on issue #3744: bug: "could not be resolved (3: Host not found)" error in docker-compose env

Posted by GitBox <gi...@apache.org>.
simeon49 commented on issue #3744:
URL: https://github.com/apache/apisix/issues/3744#issuecomment-790260314


   > Got it. APISIX doesn't support resolving etcd's domain from /etc/hosts yet.
   > Maybe you can use `docker network` and configure an IP for the etcd?
   
   "etcd" not in /etc/hosts, I use docker network with name "dev-network"
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [apisix] spacewander commented on issue #3744: bug: "could not be resolved (3: Host not found)" error in docker-compose env

Posted by GitBox <gi...@apache.org>.
spacewander commented on issue #3744:
URL: https://github.com/apache/apisix/issues/3744#issuecomment-790294829


   AFAIK, docker compose will inject those names into containers' /etc/hosts.
   And you can assign a static IP in docker compose.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [apisix] spacewander edited a comment on issue #3744: bug: "could not be resolved (3: Host not found)" error in docker-compose env

Posted by GitBox <gi...@apache.org>.
spacewander edited a comment on issue #3744:
URL: https://github.com/apache/apisix/issues/3744#issuecomment-790276615


   So where you put the `etcd-node2`? It is not a domain name.
   And I can't even understand which host is not found. Sometimes you say it is `etcd-node2` but sometimes you say it is `etcd`.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [apisix] spacewander commented on issue #3744: bug: "could not be resolved (3: Host not found)" error in docker-compose env

Posted by GitBox <gi...@apache.org>.
spacewander commented on issue #3744:
URL: https://github.com/apache/apisix/issues/3744#issuecomment-790240868


   There is not `http_status_code` in APISIX. Make sure the error message is *really* come from APISIX.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [apisix] spacewander commented on issue #3744: bug: "could not be resolved (3: Host not found)" error in docker-compose env

Posted by GitBox <gi...@apache.org>.
spacewander commented on issue #3744:
URL: https://github.com/apache/apisix/issues/3744#issuecomment-800741565


   Closed as lack of response.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [apisix] spacewander closed issue #3744: bug: "could not be resolved (3: Host not found)" error in docker-compose env

Posted by GitBox <gi...@apache.org>.
spacewander closed issue #3744:
URL: https://github.com/apache/apisix/issues/3744


   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org