Closed wkd-woo closed 3 weeks ago
How about enabling PVC to solve this problem?
@drivebyer That's how I intend to respond to the prblem in our actual prduct operating environment. Take persistence with enabling PVC.
However, as you already know, there is a write performance degradation problem, and there is also a potential data integrity problem between master and slave due to asynchronous replication.
(And this is a personal story, it's not easy to manage to the volume level because there lots of Redis sets I manage.)
When the Redis Cluster bootstrapping by the operator, the follower statefulSet build after the leader was builded. Like this, when the update situation, how about making the follower statefulSet upgraded after the leader's upgrade has done?
When the Redis Cluster bootstrapping by the operator, the follower statefulSet build after the leader was builded. Like this, when the update situation, how about making the follower statefulSet upgraded after the leader's upgrade has done?
Maybe we could handle it by operator.
When the Redis Cluster bootstrapping by the operator, the follower statefulSet build after the leader was builded. Like this, when the update situation, how about making the follower statefulSet upgraded after the leader's upgrade has done?
Maybe we could handle it by operator.
@drivebyer May I ask if you plan to develop a new feature in the operator to solve this problem?
If it seems like it will take time to add features, I think I can contribute to the project to solve this problem.
@wkd-woo Sure
I believe the main issue lies in this code: https://github.com/OT-CONTAINER-KIT/redis-operator/blob/a207422faccca8773b705e7e69b3db545e457bfe/controllers/rediscluster_controller.go#L118-L136.
After applying the new StatefulSet spec, the code retrieves the StatefulSet immediately, but there may be delays in StatefulSet status changes. Perhaps we could more accurately verify the StatefulSet readiness. For example, by comparing the status.currentRevision and status.updateRevision.
What version of redis operator are you using?
redis-operator version: v0.16.0
Does this issue reproduce with the latest release? I don't check it yet.
What operating system and processor architecture are you using (
kubectl version
)?ubuntu22.04.4 LTS / amd64
kubectl version
OutputWhat did you do?
I deployed the redis cluster with the redis operator. And we inserted 1000 keys as test data, The upgrade of the redis engine version was performed (v7.0.12 to v7.0.15)
The upgrade was successful, but the pads of the "Leader" statefulSet and "Follower" statefulSet were upgraded to rolling at the same time, and all data was lost.
There are specific changes such as image changes, so it is necessary to preserve data when the rolling update proceeds.
helm upgrade
All the data has gone.
version upgrade was successful.
What did you expect to see? I hope the Leader, Follower PODs are not removed & updated at the same time. HA must be ensured to ensure data integrity at the shard level.