ProbeD is a transparent health checker service which sits beside a loadbalancer and dynamically remove the upstream services for which health checks fails, Probed is scalable and check health checks asynchronously.
- It currently supports Kong but can be easily extend to any other loadbalancer like haproxy and nginx.
- It support both http and tcp checks.
Kong prior to .12 does not have health checks and there is no way to remove the faulty upstream servers, which can result in failure of requests while deploying or during maintenance mode.
Probed can be run as side car or co process with Kong and supplement it for the auto removal of the unavailable upstream servers and can help in implementing rolling deployments.
go get -u github.com/gojektech/probed
ProbeD can be deployed as co process/sidecar with the load balancer (Kong) like following diagram, where it automatically fetch the upstream servers and remove those if health check fails.
Probed can be configure using following flags
./probed --help
Usage of ./build/probed:
-health-check-interval string
health check interval in ms (default "2000")
-health-check-path string
path to check for active health check (default "/ping")
-health-check-type string
supports http or tcp checks (default "tcp")
-kong string
kong host
-kong-admin-port string
kong admin port (default "8001")
-targets-queue-length int
length of the queue for storing targets (default 100)
-worker-count int
no of workers which participate in healthcheck of targets (default 100)
Probed support fluent interface for the Client and can be easily extented to support any Loadbalancer. Please check kongClient for more detail.
Copyright 2018, GO-JEK Farm <http://gojek.farm>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.