
UNSOLVED
Single Access Profile, Multiple Pools
Hi,
My dev guys are having a problem with a new app they're developing, and I'm hoping someone else has already solved this particular issue.
We have an new app that is writting images to a Centera cluster, and that cluster is replicated to a second Centera. The app will also read legacy data written by an old application into the Default Pool, and the Default Pool is replicated bi-directionally. We need to make sure we are able to write new images even in the event that the primary Centera is not available. To achieve this, my understanding is that we need to create two separate virtual pools.
Pool1 will be replicated from Primary to Secondary, and will be the home pool for AppProfile1 on the Primary Centera.
Pool2 will be replicated from Secondary to Primary, and will be the home pool for AppProfile1 on the Secondary Centera.
AppProfile1 will be given read privileges to Poo2 on the Primary Centera
AppProfile1 will be given read privileges to Pool1 on the Secondary Centera
During normal operations, all writes will hit Pool1. If the Primary Centera is offline, we change the connection string for the app to point it to the Secondary Centera, and now all writes hit Pool2. Once the Primary becomes available again, Pool2 replicates the changes back to the Primary, and we change the connection string to point to the Primary once more.
EMC Support tell me that this should work, and is the recommended configuration. So far, so good, although if anyone has any other suggestions, please feel free to share them.
Now the problem. In our Dev environment, we are using the community edition of ECS to emulate the Centera (as we don't have a spare Centera for Test/Dev purposes). We can read & write just fine to the home pool (default bucket) on the ECS using the CAS API/Centera SDK, but we can't seem to access C-Clips that reside in a pool other than the home pool of the Access Profile. If I change the home pool of the Access Profile, we are able to read & write C-Clips written to the new pool, but are then unable to access C-Clips we had previously written to the original home pool.
We’re using the .NET wrapper for the Centera SDK and are reading content with the following code (abbreviated for simplicity).
var pool = new FPPool("10.x.x.3?dev.pea");
var clipRef = GetCenteraContentClipRef(pool, contentAddress, FPMisc.OPEN_ASTREE)
If the content is in the same pool that we are writing to (ie the home pool / default bucket) it can be retrieved without issue. If the content is in a different pool we get a Clip not found error, even if our profile specified in the PEA file has read access to that pool. We have also tried prefixing the contentAddress with the Pool name in the / format as mentioned here ( https://www.emc.com/techpubs/ecs/ecs_create_bucket-1.htm) but we get a fp_parameter_error.
From what I have read, the application should not need to know which pool a clip has been written to, as that would imply some need for the application to manage the storage. The whole point of Content Addressing is that the appilcation doesn't know or care where the object actually is, right? I would also assume that the ECS implementation of the CAS API will behave in the same way as the actual Centera, as otherwise we would have a whole bunch of applications needing to be re-written. If this assumption is wrong, please let me know.
So, has anyone had any success in accessing multiple pools from a single access profile? If yes, how?
FYI, we're using CentraStar 4.2.0 on the Centeras, ECS 2.1 Community Edition for the Dev CAS, and version 3.3.718 of the Centera SDK on Windows 2012 R2.
Cheers,
Ben
Responses (0)
Solutions (0)
