-
Notifications
You must be signed in to change notification settings - Fork 6
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
Active Cluster: Volumes must be connected to hosts on both arrays #42
Comments
Already mention this here: PR 30 Unfortunately, I currently do not have the ability to implement an active/active or active/passive setup, so more information is needed. From my understanding, the current proposal would only work with an active/active setup. Open Questions: PS: For management(API), a quick fix would be adding an RR record in DNS. If this solution is sufficient, then my proposal could be a viable option.”** |
I can only answer for active-active (Active Cluster)
I don't #39 covers the same issue, the thing is, you need to log in to both arrays and issue the API command(s) to connect the volume to the host. The API token will differ on the two arrays. For the same reasons, DNS trickery does not work. In multipath it looks like this: Volumes created from the GUI and presented from both arrays:
Volume create by pve-purestorage-plugin (and only presented from the array configured in storage.cfg):
|
In Case of ActiveCluster volumes would have the same serial number and other parameters on clustered arrays. It is up to the end-user to decide which array(s) they want to be connected to. For redundancy they would want to be connected to both local and remote arrays, but if the main concern is about the data (not services) loss, it is not even required. We would only need to worry about multipath configuration if we start using target names (e.g. in |
I can submit a patches to support ActiveCluster. |
@amulet1 you are right we need some fail over policy. in case if pve connected to both arrays there can be a split brain. |
I assume API login tokens would be different in case of 2 arrays. |
I do not think we should worry about the split brain situations - ActiveCluster relies on Pure1 Cloud Mediator. |
Correct, it is not possible to decide the token during creation, so it will always be different. |
I guess I will then introduce |
* ActiveCluster is enabled by providing a second array plugin parameters "address2" and "token2" * retry non-API errors on a second array * connect/disconnect volumes to host on both arrays * related code refactoring and improvements
* ActiveCluster is enabled by providing a second array plugin parameters "address2" and "token2" * retry non-API errors on a second array * connect/disconnect volumes to host on both arrays * related code refactoring and improvements
Please try this file. Initial ActiveCluster support:
Testing is needed. I do not have ActiveCluster set up, and I could not test/address the scenario when one of the arrays (e.g. primary) is operational but there is a failover to the secondary array (e.g. due to loss of connectivity between arrays). I need to know if there are specific API errors in this case. |
Awesome, I will test when I get the chance. /a |
First couple of tests look good. Disks are mapped on both arrays as expected. /a |
Coma separated notation is a defacto standard for most clusters. (rmq, es, mongo...). Even PVE, all multi hosts variants are coma separated (rbd mon host, nodes, etc) |
Then we would have to also put 2 tokens (and eventually/maybe 2 targets ans something else) on one line, and it would not look great as these can be long. Of course it is easy to change to one-liners if preferred. |
Many would also say that creating a parameter for each new array (connection) is just as ineffective. I guess just separating in the same parameter would be much more flexible. |
* ActiveCluster is enabled by providing comma-separated cluster arrays parameters in "address" and "token" * retry non-API errors on a second array * connect/disconnect volumes to host on both arrays * related code refactoring and improvements
The file to test is here. |
The updated |
@ajoergensen plz try PR if ok i'll merge |
There are still TODO things left in #50. At the very least we need to update |
@ajoergensen @amulet1, reopened because of readme missing. |
* ActiveCluster is enabled by providing comma-separated cluster arrays parameters in "address" and "token" * retry non-API errors on a second array * connect/disconnect volumes to host on both arrays * related code refactoring and improvements
When running arrays in Active Cluster configuration, one must (manually) connect volumes and hosts in a given pod on both arrays.
If a volume is only connected to the host on one array, the host will lose connectivity to all volumes in case of an array failure - and under normal circumstances it will cause suboptimal connectivity for hosts which has the other array as its preferred array.
Currently, a new volume/disk is only connected to its active Proxmox host on the array configured in
storage.cfg
, the fix would be to define the "secondary" array as well and do host connect/disconnect API calls on this array as well./Allan
The text was updated successfully, but these errors were encountered: