New issue
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
Upgrade scylla major version #51
Comments
What do you think @tzach should we put this on 1.0? Right now there is coded logic preventing an upgrade. Removing it requires some care and validation to allow for a consistent upgrade. |
I do not think this is very urgent. |
I think perhaps middle ground would be safe and fairly easy. That would be to allow upgrade within a major version. We can perhaps handle major upgrades later although that is also a matter of verification that the user knows what they are doing. |
This has potentially a sizeable amount of work what with snapshots being needed between major versions and some procedure for restoring to an older version. Let's postpone it as we discussed. |
Perhaps a scheme suggested by @penberg can work. We allow a user to upgrade to the latest minor version and only then do we allow them to upgrade How do we check this? We use docker hub REST API https://docs.docker.com/registry/spec/api/ |
I know that upgrades sound simple but they are not. I would avoid major upgrades on the operator until this is handled by scylla-manager itself. There are a lot of requirements. |
After my discussion with @penberg the other day it got much clearer. Is the above strategy not correct? More or less. Waiting for Manager to do upgrades is a long way to go and also an orthogonal feature that I am not sure we want in Manager at all. At least not initially. |
I am not sure I understand why requiring an upgrade to the last minor makes things simpler for the operator. I can understand why it might be a good thing for scylla overall (less combinations for QA), but as long as we support upgrading the major version, knowing that we have the latest minor doesn't make things simpler as far as I can tell. We also only support backups with the scylla manager, no? How would we handle upgrades without the scylla manager? Do we implement backups directly first? Is this really a noob task? |
Current patch version upgrade procedure is ran when cluster is being upgraded to next patch version. New major upgrade procedure handles all others upgrades. Procedure: * Check if the cluster has schema agreement (using API call) * Take `system` and `system_schema` tables snapshot on all nodes in parallel. For each node: * Drain node * Backup the data - snapshot of all data keyspaces * Update Scylla image by restarting Pod * Validate if node is up and version is updated via API call ** Node is UN ** Native transport port is UP (GET /storage_service/native_transport) ** Version of pod is updaded to desired one * Clear data snapshot After last node: *Delete `system` and `system_schema` table snapshots on all nodes in parallel Fixes #51
Current patch version upgrade procedure is ran when cluster is being upgraded to next patch version. New major upgrade procedure handles all others upgrades. Procedure: * Check if the cluster has schema agreement (using API call) * Take `system` and `system_schema` tables snapshot on all nodes in parallel. For each node: * Drain node * Backup the data - snapshot of all data keyspaces * Update Scylla image by restarting Pod * Validate if node is up and version is updated via API call * Clear data snapshot After last node: * Delete `system` and `system_schema` table snapshots on all nodes in parallel Fixes #51
Current patch version upgrade procedure is ran when cluster is being upgraded to next patch version. New major upgrade procedure handles all others upgrades. Procedure: * Check if the cluster has schema agreement (using API call) * Take `system` and `system_schema` tables snapshot on all nodes in parallel. For each node: * Drain node * Backup the data - snapshot of all data keyspaces * Update Scylla image by restarting Pod * Validate if node is up and version is updated via API call * Clear data snapshot After last node: * Delete `system` and `system_schema` table snapshots on all nodes in parallel Fixes #51
Current patch version upgrade procedure is ran when cluster is being upgraded to next patch version. New major upgrade procedure handles all others upgrades. Procedure: * Check if the cluster has schema agreement (using API call) * Take `system` and `system_schema` tables snapshot on all nodes in parallel. For each node: * Drain node * Backup the data - snapshot of all data keyspaces * Update Scylla image by restarting Pod * Validate if node is up and version is updated via API call * Clear data snapshot After last node: * Delete `system` and `system_schema` table snapshots on all nodes in parallel Fixes #51
Current patch version upgrade procedure is ran when cluster is being upgraded to next patch version. New major upgrade procedure handles all others upgrades. Procedure: * Check if the cluster has schema agreement (using API call) * Take `system` and `system_schema` tables snapshot on all nodes in parallel. For each node: * Drain node * Backup the data - snapshot of all data keyspaces * Update Scylla image by restarting Pod * Validate if node is up and version is updated via API call * Clear data snapshot After last node: * Delete `system` and `system_schema` table snapshots on all nodes in parallel Fixes #51
Current patch version upgrade procedure is ran when cluster is being upgraded to next patch version. New major upgrade procedure handles all others upgrades. Procedure: * Check if the cluster has schema agreement (using API call) * Take `system` and `system_schema` tables snapshot on all nodes in parallel. For each node: * Drain node * Backup the data - snapshot of all data keyspaces * Update Scylla image by restarting Pod * Validate if node is up and version is updated via API call * Clear data snapshot After last node: * Delete `system` and `system_schema` table snapshots on all nodes in parallel Fixes #51
Current patch version upgrade procedure is ran when cluster is being upgraded to next patch version. New major upgrade procedure handles all others upgrades. Procedure: * Check if the cluster has schema agreement (using API call) * Take `system` and `system_schema` tables snapshot on all nodes in parallel. For each node: * Drain node * Backup the data - snapshot of all data keyspaces * Update Scylla image by restarting Pod * Validate if node is up and version is updated via API call * Clear data snapshot After last node: * Delete `system` and `system_schema` table snapshots on all nodes in parallel Fixes #51
Current patch version upgrade procedure is ran when cluster is being upgraded to next patch version. New major upgrade procedure handles all others upgrades. Procedure: * Check if the cluster has schema agreement (using API call) * Take `system` and `system_schema` tables snapshot on all nodes in parallel. For each node: * Drain node * Backup the data - snapshot of all data keyspaces * Update Scylla image by restarting Pod * Validate if node is up and version is updated via API call * Clear data snapshot After last node: * Delete `system` and `system_schema` table snapshots on all nodes in parallel Fixes #51
Current patch version upgrade procedure is ran when cluster is being upgraded to next patch version. New major upgrade procedure handles all others upgrades. Procedure: * Check if the cluster has schema agreement (using API call) * Take `system` and `system_schema` tables snapshot on all nodes in parallel. For each node: * Drain node * Backup the data - snapshot of all data keyspaces * Update Scylla image by restarting Pod * Validate if node is up and version is updated via API call * Clear data snapshot After last node: * Delete `system` and `system_schema` table snapshots on all nodes in parallel Fixes #51
Current patch version upgrade procedure is ran when cluster is being upgraded to next patch version. New major upgrade procedure handles all others upgrades. Procedure: * Check if the cluster has schema agreement (using API call) * Take `system` and `system_schema` tables snapshot on all nodes in parallel. For each node: * Drain node * Backup the data - snapshot of all data keyspaces * Update Scylla image by restarting Pod * Validate if node is up and version is updated via API call * Clear data snapshot After last node: * Delete `system` and `system_schema` table snapshots on all nodes in parallel Fixes #51
Current patch version upgrade procedure is ran when cluster is being upgraded to next patch version. New major upgrade procedure handles all others upgrades. Procedure: * Check if the cluster has schema agreement (using API call) * Take `system` and `system_schema` tables snapshot on all nodes in parallel. For each node: * Drain node * Backup the data - snapshot of all data keyspaces * Update Scylla image by restarting Pod * Validate if node is up and version is updated via API call * Clear data snapshot After last node: * Delete `system` and `system_schema` table snapshots on all nodes in parallel Fixes #51
Current patch version upgrade procedure is ran when cluster is being upgraded to next patch version. New major upgrade procedure handles all others upgrades. Procedure: * Check if the cluster has schema agreement (using API call) * Take `system` and `system_schema` tables snapshot on all nodes in parallel. For each node: * Drain node * Backup the data - snapshot of all data keyspaces * Update Scylla image by restarting Pod * Validate if node is up and version is updated via API call * Clear data snapshot After last node: * Delete `system` and `system_schema` table snapshots on all nodes in parallel Fixes #51
Currently we employ a check that the scylla version of the target state is the same as the previous.
This prohibits an upgrade and we need to device a way to allow the user to upgrade.
The text was updated successfully, but these errors were encountered: