Scalability of enterprise unix/linux servers
Opens source software provides advantageous alternative when considering deploying a an enterprise network. Whether it is a BSD or Linux, the open source operating system is very reliable and scales very well when properly designed. It is important to plan cautiously when designing linux and unix servers for enterprise networks; Scalability, performance and security are three vital elements that do not accept compromises. In this article, we focus on the scalability of enterprise servers to understand what is scalability, why is it important and how it can be achieved.
Scalability to higher loads
The immediate understanding of the concept of scalability is the capacity of the server to adapt to larger loads. Scalability in this case is tied to performance, and the design of a new server must take it in consideration. The scalability to higher loads allows the server to be easily adapted to provide acceptable performance while accommodating the new and higher loads. If scalability planning is not performed. Fewer alternatives will be available when the server becomes incapable to perform adequately due to higher load. In such cases, this generally mean migrating to a faster hardware. But this is not a scalable approach.
To achieve scalability, the administrator must be able to answer the following questions :
- How do I know when the server needs to adapt to higher loads ?
- What can be done to serve higher loads without interrupting the services and while keeping upgrade costs minimal ?
Predicting performance enhancement needs
To answer the first question, the administrator must define and monitor a set of metrics that reflect performance of each service independently and the overall server performance. The easy way is to deploy ready to use software to monitor server performance. The monitoring software should allow the administrator to observe load history over time and response time for each service. These two metrics allow the administrator to judge whether the service needs to adapt in order to ensure adequate performance levels.
The open source world provides a limited number of ready to use service level performance monitoring tools. The available alternatives are :
- Wireshark (www.wireshark.org)
- MRTG (Multi-Router Traffic Grapher - www.mrtg.org)
- nTop (www.ntop.org)
The other alternative, consist in implementing monitoring solutions using open source tools such as tshark, gnuplot, etc… In a previous series or articles, I provided an example of how to monitor performance of RADIUS servers using these basic open source tools.
Taking action
To answer the second question “What can be done to serve higher loads without interrupting the services and while keeping upgrade costs minimal ?”, the designer should investigate each service apart for scalability features. Services that provide application level load balancing and scalability features should be preferred.
Besides the migration of services to other servers, techniques such as DNS load balancing and clustering can be used. Services that are friendly with regards to these techniques should be preferred during the initial design of the server.
This is a list of resources on load balancing :
Scalability to accommodate new services
Apart from load and performance, there is another facet of the server requires scalability. This consists in the capacity of the server to easily accommodate new applications/services without requiring migrations and radical changes. When designing a server, providing enough flexibility and scalability to cope with future needs involves the choice of adequate open source softwares/solutions. Software that is not flexible enough or does not scale well should be avoided. As an example, consider that you want to deploy a Kerberos realm in an enterprise network where all services are Kerberized. When installing Kerberos, you generally have the choice between using a database or an LDAP server to store Kerberos accounts. Since LDAP is a more standard interface, several trusted applications may use the LDAP server for different purposes (e.g. phone directory). Hence, in case of Kerberos, using a database would not be a flexible/extensible choice.
Conclusion
Scalability is an important requirement for servers in enterprise networks. Scalability ensures that there is a defined method to ensure that services can cope with higher loads. On the other hand, as new services and applications are deployed, scalability also means that the server must be able to accommodate new application requirements and facilitate interfacing between different services.
The key to ensure scalability is to perform wise choice of the software that will be deployed to provide the initial services. Since several software/solutions exist. The designer should always pick the ones that scale better. Also, when deploying services, it is important to think about future extensions and interfacing with new/future services, and rely on technologies that will make these extensions and interfacing go smoothly.
Monitoring tools are essential to detect when services need to be scaled up. Such tools would ideally provide service load and response time history.
| Labels: unix, howto |
|

Comment