We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Today, Operator checks the health of mysql by remote connection to PODs.
There are some pain points in this solution:
Need a super user that allows remote access
When accessing the PODs through DNS, the latest podip may not be obtained in time (when the POD restarts, IP changes, DNS has cache)
When operator fails, the labels(role,healthy) of the PODs cannot be updated
Give PODs a certain autonomy: Let PODs manage their own labels
The following are non-goals for the current phase, but will be considered at a later phase.
The selection of the leader requires Operator to make judgments,guarantee that there are no multiple leader when the network partition between PODs
Move the health checking and the role checking to the PODs.
Implement a mysqlchecker, add it to the Percona image.
mysqlchecker
type MySQLChecker interface { CheckMySQLReadiness(role string) bool CheckMySQLLiveness() bool // k8s client, its used to get/update labels Client }
The CheckMySQLReadiness()'s logic is the logic of updateEnodeStatus() in the current staus controller.
Turn off readonly
SET GLOBAL read_only=off; SET GLOBAL super_read_only=off;
Implement a readiness probe of xenon, it only:
The logic of automatic rebuild can be migrated to readiness probe of the MySQL container, or keep in Operator
...
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Proposal: reconstruct the status controller
Summary
Today, Operator checks the health of mysql by remote connection to PODs.
There are some pain points in this solution:
Need a super user that allows remote access
When accessing the PODs through DNS, the latest podip may not be obtained in time (when the POD restarts, IP changes, DNS has cache)
When operator fails, the labels(role,healthy) of the PODs cannot be updated
Motivation
Goals
Give PODs a certain autonomy: Let PODs manage their own labels
Non-Goals
The following are non-goals for the current phase, but will be considered at a later phase.
The selection of the leader requires Operator to make judgments,guarantee that there are no multiple leader when the network partition between PODs
Proposal
Move the health checking and the role checking to the PODs.
Implementation
Implement a
mysqlchecker
, add it to the Percona image.The CheckMySQLReadiness()'s logic is the logic of updateEnodeStatus() in the current staus controller.
The rules of a healthy node
The addtional step for leader
Turn off readonly
Role label
Implement a readiness probe of xenon, it only:
Rebuild
The logic of automatic rebuild can be migrated to readiness probe of the MySQL container, or keep in Operator
Future
...
The text was updated successfully, but these errors were encountered: