Virtualization and ArcGIS Enterprise
When deploying ArcGIS Enterprise to a virtualized environment, it’s essential to reserve and allocate resources effectively to ensure optimal performance and stability. ArcGIS Enterprise is generally a resource-intensive system, so adequately managing all types of resources in a virtualized environment is critical. This topic contains a range of key considerations that are recommended for review during the design phase, regardless of the underlying virtualization platform.
Resource allocation
Resource allocation for ArcGIS Enterprise on virtual servers is crucial for optimizing performance, ensuring scalability, and maintaining stability. Here are some key considerations and best practices for allocating resources effectively:
CPU allocation:
- Determine the appropriate number of CPU cores to assign to each virtual machine (VM) running ArcGIS Enterprise components. The number of cores required depends on the specific workload. ArcGIS Server and other ArcGIS Enterprise components benefit from multiple CPU cores, and usage patterns can help to define the right number of cores to allocate. Licensing may also limit the cores that can be assigned to a certain software component. See the Licensing ArcGIS Enterprise Deployments in Virtualized and Cloud Environments technical paper for more information.
- Consider using multiple VMs for different components (for example, use separate VMs for ArcGIS Server, Portal for ArcGIS, and ArcGIS Data Store) to distribute the CPU load and avoid resource contention. While all components can be installed on the same machine, it is a best practice to separate the components.
- For high-performance environments, configure CPU affinity to pin specific VMs to dedicated CPU cores. This can help ensure consistent performance for critical components.
Memory (RAM) allocation:
- Allocate an appropriate amount of RAM to each VM based on the component’s requirements and workload. ArcGIS Enterprise components may have different RAM needs.
- Over-allocation of RAM can lead to performance issues, so avoid assigning more RAM than the VM requires, as it may lead to resource contention with other VMs running on the same host.
- Monitor RAM usage and adjust allocations as needed to prevent memory bottlenecks. Operating system tooling along with ArcGIS Monitor can be used to understand the usage of memory, and which programs or workflows are driving larger memory footprints.
Storage allocation:
- Use high-performance storage, such as solid-state drives (SSDs), for hosting operating systems, databases, and frequently accessed data. This can significantly improve performance due to faster or more dedicated input/output capacity.
- Allocate separate storage for different purposes, such as operating systems, application binaries, databases, and data. Segregating storage can improve resource management and performance.
- Implement storage virtualization techniques like thin provisioning and deduplication to optimize storage usage and reduce costs.
- Carefully consider storage providers that create SAN or NAS storage offerings, and understand the performance configurations and constraints of those systems before using them to host ArcGIS components.
Resource reservations:
- Use resource reservations to guarantee a minimum level of resources for critical VMs, such as ArcGIS Server. Reservations ensure these VMs receive the resources they need, even in times of contention with other VMs on the same host.
Additional virtualization recommendations are available in the ArcGIS Server documentation.
Resource pools
Create resource pools in your virtualization environment to group VMs with similar resource needs. This allows you to manage and allocate resources more efficiently. You can assign resource shares, limits, and reservations within these pools. Here are some key considerations and best practices for designing resource pools effectively:
- Grouping VMs: Create resource pools within your virtualization environment to group VMs with similar requirements. This allows for efficient resource allocation and management.
- Resource shares, limits, and reservations: Assign resource shares, limits, and reservations within resource pools to ensure that higher-priority VMs receive the necessary resources. Resource shares help allocate resources proportionally, limits impose caps on resource consumption, and reservations guarantee minimum resource levels.
- Resource pool naming: Clearly label and categorize resource pools based on ArcGIS Enterprise components or services to simplify resource management and allocation.
- High availability resource pools: Design resource pools for high availability configurations, ensuring that primary and standby VMs for critical components are grouped separately. This allows for controlled resource allocation during failover operations.
- Resource monitoring: Regularly monitor resource pool performance and utilization to determine whether resource allocations align with actual requirements. Adjust resource shares and limits as needed.
- Dynamic resource management: Consider setting up resource pools for dynamically allocated resources that can adjust based on changing workloads. This allows for elastic resource management to accommodate variations in demand.
- Resource pool sizing: Size resource pools appropriately to ensure that each pool has sufficient resources to meet the demands of the VMs within it. Over-subscription within pools can lead to resource contention.
CPU affinity
Anti-affinity rules can be valuable when deploying ArcGIS Enterprise in a virtualized environment to enhance the system’s availability and fault tolerance. These rules ensure that specific VMs or components are placed on separate physical hosts within your virtualization cluster to prevent them from running on the same host simultaneously. This can minimize the risk of downtime in case of hardware or host failures. Anti-affinity rules are applied to different components of an ArcGIS Enterprise system in component-specific ways:
- ArcGIS Server: You can apply anti-affinity rules for ArcGIS Server machines to ensure that primary and standby instances of the same service don’t run on the same host. This is particularly important when configuring high availability for services. For example, suppose you have a geoprocessing service with multiple instances. In that case, you can ensure that the primary and standby instances are on different physical hosts to maintain service availability.
- Portal for ArcGIS: When deploying Portal for ArcGIS in a highly-available configuration, use anti-affinity rules to separate the portal primary and standby machines across different hosts. This helps maintain portal functionality in case of a hardware failure or host maintenance.
- ArcGIS Data Store: In a multi-machine ArcGIS Data Store configuration, you can use anti-affinity rules to ensure that the primary and standby components (for example, primary and secondary relational data stores) are not hosted on the same physical server. This helps ensure data store availability.
- Load balancer: Consider using a load balancer to distribute incoming traffic among multiple instances of ArcGIS Server. With proper configuration, you can ensure that traffic is distributed across different hosts, adding a layer of high availability and load balancing.
- Web Adaptors: If using Web Adaptors in your ArcGIS Enterprise deployment, consider placing them on separate hosts. This can help ensure that a failure on one host doesn’t impact access to web services through the web adaptor.
Storage performance is a critical aspect of optimizing the performance and stability of ArcGIS Enterprise when it’s deployed on virtualized hardware. ArcGIS Enterprise often deals with large datasets and complex spatial data processing, so having a well-tuned storage infrastructure is essential. Here are some best practices for ensuring adequate storage performance:
- High-performance storage: Use high-performance storage solutions, such as Solid-State Drives (SSDs), to host operating systems, databases, and frequently accessed data. SSDs provide faster data retrieval and lower latency, which can significantly improve I/O performance.
- Storage redundancy: Implement redundancy in your storage infrastructure to ensure data availability and fault tolerance. Use RAID configurations to protect against disk failures and maintain data integrity.
- Dedicated storage networks: Consider using dedicated storage networks to segregate storage traffic from general network traffic. This can help reduce network contention and optimize storage performance.
- Optimized file systems: Choose file systems that are optimized for high I/O performance, such as NTFS for Windows-based systems or XFS for Linux-based systems. Configure file systems with appropriate block sizes for GIS data.
- Data segmentation: Segregate storage for different purposes, such as operating systems, application binaries, databases, and GIS data. This ensures that storage resources are allocated appropriately to meet specific requirements.
- Storage monitoring: Regularly monitor storage performance and utilization to detect potential bottlenecks or issues. Use storage monitoring tools to identify and address performance problems proactively.
- Data tiering: Implement strategies to maintain less frequently accessed data on slower, more cost-effective storage solutions while keeping frequently accessed data on high-performance storage.
- Backup and disaster recovery: Establish comprehensive backup and disaster recovery strategies for your storage infrastructure to protect against data loss and ensure business continuity.
- Scaling storage: Plan for storage scalability by selecting solutions that can accommodate data growth. Ensure that your storage architecture is flexible and can be expanded as your GIS data volume increases.
By following these best practices for storage performance in your virtualized ArcGIS Enterprise environment, you can ensure that your geospatial data processing remains efficient and reliable while handling the demands of GIS workloads. Regular monitoring and adjustments to storage configurations are essential as your data and usage patterns change over time.
Testing and benchmarking
Before deploying in a production environment using a virtualized architecture, conduct benchmark tests to understand the virtual resource requirements of your ArcGIS Enterprise deployment. Use this data to adjust resource allocations accordingly. Periodically conduct load and storage performance tests to identify bottlenecks and optimize configurations.
More information can be found in the Designing an effective test strategy.
Ensure that your virtualization infrastructure aligns with your organization’s needs and follow best practices for security, monitoring, and scalability. Regularly test and evaluate your setup to make necessary adjustments for optimal performance and reliability. Virtualization technologies continuously evolve, so staying up-to-date with the latest features and best practices is essential. By following these best practices for resource management in a virtualized environment, you can ensure that ArcGIS Enterprise operates efficiently and reliably to support your organization’s geospatial needs. To meet your specific requirements, it’s crucial to strike the right balance between resource allocation, high availability, and scalability.