Hi,
We are going to deploy an ArcGIS Enterprise v11.4 in high availability with a total of eight machines:-
1. Two portal machines
2. Two hosting server machines
3. Two datastores (relational + object) machines
4. Two webadaptor machines
I have doubts about deploying an object datastore in a high availability configuration, which consists of two machines. Which mode do I need to select, SingleInstance or cluster? As per the documentation, I am pretty clear that the mode can't be the SingleInstance for cluster mode; the documentation says that -
For SingleInstance mode only one machine is required and for cluster mode at least three machines are required but if we have only two machines for object datastore then which mode I need to select.
Or
It is not possible to configure an object datastore with two machines.
Any response will be highly appreciated!
Thanks
Ayush
Unregistered the Data Stores. Side note WebUI 2443/arcgis/datastore throws: "Error: Cannot invoke "com.esri.arcgis.discovery.json.JSONArray.length()" because "" is null.
I also got (on one machine)
Error encountered: Machine "https://localhost:2443/arcgis/datastoreadmin" returned an error. "Attempt to configure data store failed. Caused by: Failed to register object store. Caused by: Cannot invoke "String.hashCode( )" because "<local5>" is null
Strange...
Cluster still not finalized.
describedatastore only lists the respective (one) machine under Registered machines instead of all three
Do I really have to remove the data store folder?
I have another Data Store on the same machine...
So which folders from within the datastore folder/files do I delete to being able to fully reconfigure the Object Store only?
Note: It may be possible that it has something todo with ports, so I will check the Ports used by ArcGIS Data Store—ArcGIS Enterprise | Documentation for ArcGIS Enterprise and report back.
Object Store lessons learned:
- On Linux, Object Store cannot be installed/configured on the same machine as an existing Data Store.
This is only possible on Windows. It is possible from a technical point of view to install multiple roles including Object Store on the same machine, but this is not generally recommended for performance reasons.
- There is only singleInstance and Cluster mode.
-- For High Availability, Cluster mode is required
-- Cluster Mode requires 3* machines at minimum (*odd numbers only)! (opposed to the Tile Cache which only required 2 machines for HA)
-- making sure the port configuration is correct is important
- When choosing Cluster mode, do not run configuredatastore simultaneously on all 3* machines. This will result in an undesired state.
All 3* Object Stores will be listed individually in the Server Manager->Site->Data Stores and when accessing the Data Store :2443/arcgis/datastore endpoint, it will show "You have successfully configured 1 of the 3 minimum required machines...". describedatastore will return Is cluster finalized........false. If you did this by accident, the steps outlined below are required.
- If you configured the Object Store by accident as SingleInstance or configured multiple machines at once as described before, there are a few things to consider.
-- Scale the ArcGIS Data Store Object Store for procedures where you need to migrate data or want to change to cluster
Danger Area: here may be dragons🔥 🐉
Before doing anything read everything described below carefully, best do a machine snapshot and backups using ArcGIS tools.
-- If you configured the object store by cluster accidentally for 3 machines at once on machines where no other data stores are installed and configured, it is easy to fix. (If that is not the case, stop here and go to the next paragraph.) Unregister the Object stores as outlined here or using the server/admin endpoint: go to /server/admin/data/items/cloudStores and copy the folder names (something like /cloudStores/AGSDataStore_objectstore_oz_1a2b3n4m) and deregister the item using the server/admin/data/unregisterItem Endpoint. Repeat. Stop the ArcGIS Data Store Service. Warning! The following step should only be done if you did a backup of all of your data and no other Data Stores are installed/configured on the same machine! -> 🔥Delete the ArcGIS Data Store data(content)-directory (not the installation directory!). Start the ArcGIS Data Store Service. Now use configuredatastore utility to configure the first object store machine. Follow up with the 2nd, then the 3rd machine. There should now be only one entry under /server/admin/data/items/cloudStores, when you look into that, check that your machines are listed. The describedatastore tool should now show that the cluster was successfully built.
--If you did install the Object Store on machines with other Data Store Roles (or installed and configured multiple Datastores on same machines in the initial installation), the process described before will work, however there are important things to consider: 🐉you will also need to unregister your other Data Store roles (Relational Data Stores for example are to be found here /server/admin/data/items/enterpriseDatabases). You need to do a backup of all your Data Stores affected (example here)! 🔥Deleting the ArcGIS Data Store data(content)-directory will delete the data of all your Data Stores on this machine!
Side note for the technically curious::
- The "Error: Cannot invoke "com.esri.arcgis.discovery.json.JSONArray.length()" because "" is null. will be shown at the :2443/arcgis/datastore endpoint, if you unregister a data store role using the REST.
- if your Data Store was in an unintended state as described above, it will not help to just run the registerdatastore utility. It will just add the data store again with the same state. To "reset" the Data Store, the data(content)-directory needs to be cleared (read above). This will also generate new Data Store "IDs" (at the end of: AGSDataStore_objectstore_oz_1a2b3n4m for example).