1
0
mirror of https://github.com/go-micro/go-micro.git synced 2025-06-24 22:26:54 +02:00
Commit Graph

116 Commits

Author SHA1 Message Date
44b934d458 registry: rename context key "consul_register_tcp_check" to "consul_tcp_check" 2018-03-21 21:57:04 +07:00
65a90f5a21 registry.Register: use local variable to get context value 2018-03-21 18:18:48 +07:00
1eb4398b6c registry/consul: rename "RegisterTCPCheck" to "TCPCheck" 2018-03-21 18:17:56 +07:00
68ab671bd0 Use registry.options.Context to set Consul TCP check option 2018-03-19 20:34:56 +07:00
f4cdfaf27f Fix TCP address and port on service check registration 2018-03-19 20:34:12 +07:00
1599d717af Add option to enable TCP check with Consul registry
One disadvantage of using TTL based health check is the high network
traffic between Consul agent (either between servers, or between server
and client).

In order for the services considered alive by Consul, microservices must
send an update TTL to Consul every n seconds (currently 30 seconds).

Here is the explanation about TTL check from Consul documentation [1]

    Time to Live (TTL) - These checks retain their last known state for a
    given TTL. The state of the check must be updated periodically over
    the HTTP interface. If an external system fails to update the status
    within a given TTL, the check is set to the failed state. This
    mechanism, conceptually similar to a dead man's switch, relies on the
    application to directly report its health. For example, a healthy app
    can periodically PUT a status update to the HTTP endpoint; if the app
    fails, the TTL will expire and the health check enters a critical
    state. The endpoints used to update health information for a given
    check are the pass endpoint and the fail endpoint. TTL checks also
    persist their last known status to disk. This allows the Consul agent
    to restore the last known status of the check across restarts.
    Persisted check status is valid through the end of the TTL from the
    time of the last check.


Hint:

    TTL checks also persist their last known status to disk. This allows
    the Consul agent to restore the last known status of the check
    across restarts.

When microservices update the TTL, Consul will write to disk. Writing to
disk means all other slaves need to replicate it, which means master need
to inform other standby Consul to pull the new catalog. Hence, the
increased traffic.

More information about this issue can be viewed at Consul mailing list [2].

[1] https://www.consul.io/docs/agent/checks.html
[2] https://groups.google.com/forum/#!topic/consul-tool/84h7qmCCpjg
2018-03-14 19:40:59 +07:00
c9b40cb33b switch to stdlib context 2018-03-03 11:53:52 +00:00
982e6068cf support services without version 2018-03-01 17:35:13 +00:00
d0d9582b81 Merge pull request #206 from darren-west/master
Added Options() to registry interface
2018-02-19 20:52:28 +00:00
02260dcaa3 Add watch options 2018-02-19 17:12:37 +00:00
7c8d6087de add https support for consul
using enviroment variables

for example:
export CONSUL_HTTP_SSL=1
export CONSUL_HTTP_ADDR="https://example.com"
export CONSUL_CLIENT_CERT="/Users/foo/.ssh/consul/consul.cert"
export CONSUL_CLIENT_KEY="/Users/foo/.ssh/consul/consul.key"
export CONSUL_CACERT="/Users/foo/.ssh/consul/ca.cert"
2017-11-20 15:34:52 +08:00
1f03681d82 set test to use localhost 2017-11-09 14:21:26 +00:00
1c1d46e1ac Add some test logging 2017-11-09 14:16:35 +00:00
d970586a29 Added Options() to registry interface 2017-09-28 11:16:56 +01:00
db0df07fd6 Check for uninitialized *config.HttpClient 2017-08-15 10:49:24 +03:00
fd01ead575 Fixes nil pointer dereferencing for Consul TLS transport 2017-08-15 09:27:39 +03:00
9e1550db53 Update consul_watcher.go
`WatchPlan` was renamed to `Plan` in the consul `watch` package in commit d7e23857ad
2017-04-25 16:38:35 -04:00
90ed1390ee fix broken test 2017-04-17 15:31:50 +01:00
059b9d36d7 fix fmt str 2017-02-25 22:53:25 +08:00
71d717a06d strip doc.go files 2016-12-14 15:41:48 +00:00
c289f6acaa Make use of consul 0.7 deregister field. Now auto reaps dead services 2016-11-25 11:23:37 +01:00
fabdd4a704 Remove consul token helper method.
A Consul config struct can be passed using the `Config` helper making this helper redundant.
2016-11-21 16:16:24 +00:00
f9709ffa6e ensure the code does not panic 2016-11-18 07:30:50 +00:00
8a25723fe0 Set consul token via registry options.
Optionally configure a token to use with the consul client.
2016-11-18 00:07:12 +00:00
3d7187f405 Add the ability to pass consul client config via registry options.
This can be used when you need to configure the consul client to use a specific configuration (E.G to pass a Token if consul is using ACL policies)
2016-11-17 23:24:14 +00:00
e59f7a7ace ConsulRegistry: use health checks to select nodes.
Consul sees a healthcheck that is in the warning state as a "failed"
node. This means that when we ask Consul for services that are passing,
it would not return nodes that have warning healthchecks.

In the cache, we only check on critical to skip for nodes. This makes
the cache out of sync with the non-cache implementation.

This patch reworks the non-cache implementation to ask for all nodes
(even unhealthy ones) and does the same check as within the cache, skip
nodes that have critical healthchecks.

We've noticed this issue when we deployed custom healthchecks where the
cache was acting properly, but after 1 minute we saw "None Available"
errors. This is due to the TTL expiry on the cache, which is then
followed by doing a non cached request.
2016-08-26 08:36:45 +01:00
71d64f911f make a copy of services for handle method 2016-08-24 18:37:11 +01:00
0afaaeec8d make a copy of services 2016-08-24 18:27:15 +01:00
81231c0b6f ConsulWatcher: deregister if service checks fail. 2016-08-11 15:18:50 +01:00
2d6c403992 don't close next chan, instead use exit chan 2016-07-30 11:58:10 +01:00
6aac602b31 return error when zero services in mock registry 2016-06-30 20:11:04 +01:00
1254a87286 Add package comments 2016-05-24 22:22:46 +01:00
04bc20798d Don't strip decode because its good to be backwards compatible still 2016-05-22 18:43:47 +01:00
2708f9c04b No longer need to test old encoding 2016-05-22 18:41:06 +01:00
06ee80fd0a Strip old encoding 2016-05-22 18:34:47 +01:00
e541d45f38 When the TTL flips to critical we should issue a delete event 2016-05-03 18:34:57 +01:00
d3de45409f Simplify watcher test 2016-05-01 22:30:33 +01:00
7996785195 Try a different way of testing 2016-05-01 22:05:21 +01:00
3709831d8e Watch results may be unordered 2016-05-01 21:38:22 +01:00
50eb97129e Add watcher test 2016-05-01 21:30:14 +01:00
96104aa209 Add mdns test and fix the bug it revealed 2016-05-01 21:21:15 +01:00
e14f9a0380 Add watcher.... OH YEAAA 2016-05-01 19:31:03 +01:00
59f1a9a07b Use mdns-sd service 2016-04-30 00:22:31 +01:00
ae8c948202 Use our fork of mdns with all the updates 2016-04-30 00:15:00 +01:00
c26f989bbb Fix encoding so we split across txt records 2016-04-28 18:36:59 +01:00
6c108d95b2 First attempt at mdns 2016-04-27 18:21:05 +01:00
3d3044404e Don't add to defaults in func init, just add them to cmd 2016-04-26 18:49:02 +01:00
f7c57fd4f4 Mock watcher that just blocks 2016-04-26 18:32:43 +01:00
e2855c4bc2 Fix some mapping issues while we're at it 2016-04-09 22:19:03 +01:00
9d7bd3f424 God damn you nil map 2016-04-09 21:34:45 +01:00