envoyproxy / envoyproxy/envoy

Add support of MYSQL health check

Open
#13,551 7 comments 0 reactions 0 assignees View on GitHub
area/health_checking area/mysql enhancement help wanted
Dominant language
C++
Stars
28.9k
Forks
5.6k
Avg merge
1d 20h
Merged PRs (30d)
437

Description

*Title*: *Add MYSQL health check*

*Description*:
Currently, Envoy seems only support HTTP, TCP and REDIS (as an extension) type of health check when positively checking upstream endpoint's healthiness. In HAProxy, it has built-in [mysql-check](https://www.haproxy.com/documentation/hapee/1-9r1/traffic-management/health-checking/#check-a-mysql-service) to perform a simple auth test or mysql handshake packet as the health check approach.

The advantages of having `MYSQL` health check is to better exclude replicas during DB failover and/or overloaded scenario. TCP health check will be passed as long as the port is opened by mysql, but it won't sufficient to rule out those _unready_ or _unhealthy_ replicas. [Outlier ejection](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/outlier) seems only work for HTTP traffic and cannot help so much under this case.

Actually, there are some work/proposals of supporting mysql relevant area in the community already, see below. I wonder whether it makes sense for community to consider adding MYSQL health check support as another extension. Hopefully, it is not very controversial.

Happy to discuss more.

[optional *Relevant Links*:]
https://github.com/envoyproxy/envoy/issues/3501
https://github.com/envoyproxy/envoy/pull/3502
https://github.com/envoyproxy/envoy/pull/4975

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.