Search code examples
consul

How to Register Durable External Service in Consul


I am registering an external service in consul through Catalog API http://127.0.0.1:8500/v1/catalog/register with a payload as follows :

{
  "Datacenter": "dc1",
  "Node": "pedram",
  "Address": "www.google.com",
  "Service": {
    "ID": "google",
    "Service": "google",
    "Address": "www.google.com",
    "Port": 80
  },
  "Check": {
    "Node": "pedram",
    "CheckID": "service:google",
    "Status": "passing",
    "ServiceID": "google",
    "script": "curl www.google.com > /dev/null 2>&1",
    "interval": "10s"
  }
}

The external service registers successfully and I see it in the list of registered services, but after a while it disappears. It seems that it's got unregistered automatically.

I am running the consul in -dev mode.

What's the problem?


Solution

  • I found that I should register external services in separate node. My application's local services are getting registered in a node named

    "Node": "pedram"
    

    when I register external services in this node, they will be get removed automatically.

    But when I register my external services in a new node, all the new external services are get registered durably and ready to be used as all other local services.

    my new payload is as follows :

    {
      "Datacenter": "dc1",
      "Node": "newNode",
      "Address": "www.google.com",
      "Service": {
        "ID": "google",
        "Service": "google",
        "Address": "www.google.com",
        "Port": 80
      },
      "Check": {
        "Node": "newNode",
        "CheckID": "service:google",
        "Status": "passing",
        "ServiceID": "google"
      }
    }