Chapter 17. Planning for High Availability

The enterprise depends on highly available, scalable, and manageable systems. High availability refers to the ability of the system to withstand hardware, application, or service outages while maintaining system availability. High scalability refers to the ability of the system to expand processor and memory capacity, as business needs demand. High manageability refers to the ability of the system to be managed locally and remotely and the ease with which components, services, and applications can be administered.

Planning for high availability is critical to the success of using Microsoft Windows Server 2003, Enterprise Edition, and Microsoft Windows Server 2003, Datacenter Edition, and you need a solid understanding of the recommendations and operating principles for deploying and maintaining high-availability servers before you deploy servers running these editions. You should also understand the types of hardware, software, and support facilities needed for enterprise computing. These concepts are all covered in this chapter.

Planning for Software Needs

Software should be chosen for its ability to support the high-availability needs of the business system. Not all software is compatible with clustering or load balancing. Not all software must be compatible, either. Instead of making an arbitrary decision, you should let the uptime needs of the application determine the level of availability required.

An availability goal of 99 percent uptime is usual for most noncritical business systems. If an application must have 99 percent uptime, the application might not need to support clustering or load balancing. To achieve 99 percent uptime means that the application can have about 88 hours of downtime in an entire year, or 100 minutes of downtime a week.

To have 99.9 percent uptime is the availability goal for highly available business systems. If an application must have 99.9 percent uptime, the application must support clustering or load balancing. To achieve 99.9 percent uptime means that the application has less than 9 hours of downtime in an entire year, or, put another way, less than 10 minutes of downtime a week.

To evaluate the real-world environment prior to deployment, you should perform integration testing on applications that will be used together. The purpose of integration testing is to ensure that disparate applications interact as expected and to uncover problem areas if they don't. During integration testing, testers should look at system performance and overall system utilization, as well as compatibility. Testing should be repeated prior to releasing system or application changes to a production environment.

You should standardize the software components needed to provide system services. The goal of standardization is to set guidelines for software components and technologies that will be used in the enterprise. Standardization accomplishes the following:

  • Reduces the total cost of maintaining and updating software

  • Reduces the amount of integration and compatibility testing needed for upgrades

  • Improves recovery time because problems are easier to troubleshoot

  • Reduces the amount of training needed for administration support

Software standardization isn't meant to limit the organization to a single specification. Over the life of the datacenter, new application versions, software components, and technologies will be introduced, and the organization can implement new standards and specifications as necessary. The key to success lies in ensuring there is a standard process for deploying software updates and new technologies. The standard process must include the following:

  • Software compatibility and integration testing

  • Software support training for personnel

  • Predeployment planning

  • Step-by-step software deployment checklists

  • Postdeployment monitoring and maintenance

The following checklist summarizes the recommendations for designing and planning software for high availability:

  • Choose software that meets the availability needs of the solution or service.

  • Choose software that supports online backups.

  • Test software for compatibility with other applications.

  • Test software integration with other applications.

  • Repeat testing prior to releasing updates.

  • Create and enforce software standards.

  • Define a standard process for deploying software updates.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset