Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Distributed Scalable Server Configuration Management Masters Project Proposal by Chris Shuster University of Colorado at Colorado Springs Colorado Springs, CO [email protected] 1 Overview This section will give a brief overview of the complexities of servers and server software as well as a discussion on the necessity of configuration management for server systems. 1.1 Servers & Server Software Servers and server software are a critical and often overlooked portion of an IT system. Servers and the software that runs on them come in extremely wide and varied forms. Servers come from almost all major system manufactures and are based on many different architectures from x86 to SPARC to MIPS running a range of operating systems that are equally as diverse. Furthermore the servers and their operating systems host an almost unimaginable variety of server software that is anything from a web server to a chat server to a game server. As of an example of just how immense the variety of server software available is, a non-all inclusive list of web server software, which is also known as an HTTPD, lists upwards of 50 different products [1]. The importance and complexity of servers and sever software is only going to increase. This is due to the industry’s push towards cloud computing. Cloud computing is the result of a trend towards hosting computing resources on a cluster of servers that are usually access by a relatively dumb client, often a web browser [2]. This push stems from users’ desire to have all information available to them all of the time regardless of where they are and if they are using a desktop computer or a smart phone. Along those lines virtualization has become an extremely important and powerful tool to meeting the flexibility demands placed on modern systems. Virtualization however introduces further complexity into already complex server systems. 1.2 Configuration Management With the ever increasing complexity of server systems managing those systems becomes equally as complex. Managing servers one at a time would require a multitude of system administrators and would be slow to react to changes in an environment that varies from one minute to the next. It is for this reason it’s often critical to have a configuration management system. Configuration management systems allow for centralized management of often geographical distributed server clusters. Furthermore configuration management systems are often highly automated leaving the system administration staff able to focus on critical tasks while leaving minor administrative tasks to be handled automatically. Configuration management systems come in a wide variety that allows for anything from the server’s hardware to its operating system to the server software being ran on the server to be managed. Additionally equally diverse is how the configuration management system manages severs systems, which can be anything from simply monitoring the server to adjusting settings in real time. 2 Related Research This section will give an overview of several relevant research papers and give a discussion on the deficiencies of the proposed solutions in the papers. 2.1 Overview Very little research on server configuration management focuses on the problem as a whole. Almost all relevant research instead focuses narrowly on a specific aspect and/or problem of configuration management. The remainder of this subsection will discuss a few examples of related research. “A Smart Hill Climbing Algorithm for Application Server Configuration” [3] and “Strider: a black-box, state-based approach to change and configuration management and support” [4] both propose automated methodologies for handling configuration. Smart Hill Climbing [3] proposes a learning algorithm to handle the complex task of configuring an application server based on the demands place on it by an application, while Strider [4] proposes a state based system to simplify analysis of configuration problems. “Managing Energy and Server Resources in Hosting Centers” [5] and “System Management Framework and Tools for Beowulf Cluster” [6] both propose methodologies for managing server resources. Hosting Centers [5] focuses on automatically provisioning servers in order to reduce energy costs, whereas System Management Framework [6] proposes methodologies for managing the nodes in a Beowulf cluster. “Distributed Configuration Management via Java and the World Wide Web” [7] and “Dynamic Cluster Configuration and Management using JavaSpaces” [8] both propose configuration management systems that utilizing Java. Each proposes configuration management of different types of systems. Distributed Configuration Management [7] proposes a revision control system while Dynamic Cluster Configuration and Management [8] proposes a system to managed clustered nodes. The difference between these two and other related research already discussed is that they both utilizing Java as a platform to develop their solutions. This is because both see Java as being ideal for allowing the systems to be more flexible due to Java being platform independent. 2.2 Deficiencies The related research discussed in the previous subsection has several issues. One of the key issues is that none of the research addresses the issue of managing a server platform as a whole. They all narrowly focus on configuring specific aspects, for example Smart Hill Climbing [3] only focuses on configuring an application server. While each proposed solution may work well for configuring the specific item it does mean that multiple systems would be required to manage the configuration of an entire server platform. Furthermore, with the exception of Distributed Configuration Management [7] and Dynamic Cluster Configuration and Management [8], none of the proposed systems even suggest the use of flexible and platform independent technologies to allow the systems to address broader issues, thus making the proposed solutions fairly un-maintainable. 3 Existing Systems This section will give an overview of a few of the more well known existing configuration management systems and then detail their deficiencies. 3.1 Systems These subsections will briefly overview a few well known configuration management systems. While there is far more configuration management systems than listed here, this subsection is limited to three as the intention is to provide understanding into the capabilities of currently available configuration management systems. 3.1.1 Microsoft System Center Configuration Manager Microsoft System Center Configuration Manager is an enterprise level system configuration management system. Configuration Manager is capable of providing Windows based server and workstation configuration management. Configuration Manager is capable of both configuring system settings, such as security settings and power management settings and as well as managing software updates [9]. 3.1.2 Canonical Landscape Canonical Landscape provides centralized system management for Ubuntu Linux based servers and workstations. Landscape allows for centralized management of user accounts, package installs and system monitoring [10]. Landscape’s is web based hosted on Canonical servers with the option for large enterprises to host a local dedicated copy of Landscape [11]. 3.1.3 Webmin Webmin is a web base UNIX system administration interface [12]. Webmin is only capable of administrating the system it is directly installed on. Webmin however allows both the operating system and all install server software on the server to be managed from a central location. Webmin supports several distributions of Linux and UNIX as well as limited Windows support in recent versions. 3.2 Deficiencies of Existing Systems While the aforementioned configuration management systems are very capable they each have significant limitations. One of the major limitations of most common and well known configuration management systems is that they are proprietary, which is the case for both Microsoft System Center Configuration Manager and Canonical Landscape. Configuration Manager only supports Windows systems and then within that limitation only supports non end of life versions. Similarly, despite the inherent open nature of Linux, Landscape only supports Ubuntu distributions. The proprietary nature of most configuration management systems makes it nearly impossible to support a mixed environment with a single configuration management system. Free and open source software (FOSS) like Webmin generally don’t incur the same proprietary limitations that pay solutions have but instead are limited in other ways. For example in the case of Webmin while it does support a much wider variety of platforms it is only capable of handling the configuration of the server it is installed on. Another significant limitation of most configuration management systems is they are typically designed to either manage the server’s operating system or the installed server software but rarely both. Configuration Manager for example is primarily for managing the operating system with limited support for managing Microsoft server software. Similarly Landscape is capable of installing and updating different software packages but more exotic software that Canonical doesn’t support isn’t supported in Landscape. Again FOSS solutions like Webmin are more flexible but are limited in other ways as mentioned previously. 4 Proposed System With the previous discussion of the need for configuration management systems as well as the discussion of currently available configuration management systems and their deficiencies in mind a new configuration management system is proposed in order to address these needs and deficiencies. The following subsections will detail a high level overview of proposed solution and technologies. 4.1 Overview The proposed system is a web based scalable pluggable server configuration management system. The goal of the system is to be flexible and allow virtually any server operating system and server software to be managed. Furthermore the system will leverage currently available technologies where possible in order to simplify development and maintenance of the system. 4.2 Key Technologies The following subsections will briefly discuss key technologies to be leveraged for this system 4.2.1 Java Java is an object orientated C style programming language that is designed to allow software to be written once and run on almost any platform. Java code is not compiled to native instructions like C or C++ but instead compiles to byte codes that run in an interpreter know as a Java Virtual Machine (JVM). Java however unlike strictly interpreted languages like Perl runs at nearly native speeds. This is due to the JVM being equipped with a Just in Time (JIT) compiler that compiles the Java byte code to native instructions just before the application is executed. Beyond the flexibility of being able to run a Java application on any platform with an appropriate JVM, Java is also equipped with an extensive application programmer interface (API) that simplifies development by removing the need for the developer to implement common tasks. 4.2.1.1 Java Enterprise Edition Java Enterprise Edition (Java EE) is an extension to the standard Java API that provides advanced enterprise and web application capabilities. This includes Servlet and Java Server Page (JSP) which provide the ability to create dynamic web applications. Additionally Java Persistence Architecture (JPA) allows for direct database table to object mapping abstracting away specific details on interaction with the database. 4.2.2 Glassfish Application Server Java EE is only a specification with no accompanying implementation. Glassfish Application Server provides the implementation of the Java EE specification as well as provides a complete enterprise and web application server. While Glassfish is not the only application server that implements the Java EE specification, it is the reference implementation and as such is updated nearly in unison with the specification. 4.3 High Level Design Database Servers Cluster Workstation Running a Web Browser Glassfish Application Server Glassfish Application Server Glassfish Application Server Administrator Gateway Servers Managed Server Managed Server Managed Server Managed Server Figure 1 High Level System Design The system will consist of several key components. The first and most critical is the Glassfish application server running the custom built configuration management enterprise application. The Glassfish servers will be clustered together to provide both redundancy and scalability to the configuration management application. Glassfish has built in support for server clustering and is capable of replicating a session across multiple servers in order to provide uninterrupted service. Furthermore the individual Glassfish application servers that are part of the cluster do not have to be geographically located near each other which allow the closest server to handle requests. Each Glassfish application server will run a copy of a custom coded configuration management application. This application will handle the communication with other configuration management servers in the cluster, communication with the user and communication with the managed servers. The communication with managed servers will utilize standard Hyper Text Transfer Protocol (HTTP) to send Extensible Markup Language (XML) commands and configurations to the managed servers as well as use HTTP and Hyper Text Markup Language (HTML) to communicate with the users. The next component in the system is the servers that will be managed by the configuration management system. Each managed server will be running a custom coded client. The client is responsible for communicating with the configuration management servers and carrying out any commands and configuration changes issues to it. The client will have elevated access to the system in order to carry out any configuration changes. Additionally the client will be written in Java to allow it be platform independent. The client with communicate utilizing protocols and formats as specified earlier in this section. Both the management server and the management client running on the managed servers will support virtually any type of server operating system and server software. With one key limitation however, the platform must have a standards compliant and up-to-date Java Virtual Machine (JVM). The use of Java to implement both the client and server components of this system as discussed in an earlier section allow this system to take advantage of Java’s write once run everywhere concept. Furthermore Java is supported on almost every major platform currently available. In addition to Java utilizing open and widely supported web standards and protocols such as HTTP, SSL, XML and HTML allows for a greater degree of flexibility as well as greatly simplifying future maintenance of this system. In addition to using widely support technologies as discussed in the previous section the proposed system will support a pluggable architecture. The base proposed system will only have a limited support for different server operating systems and server software. The proposed system will instead rely on plug-ins to achieve the desired functionality. The use of plug-ins allows the system to have a greater flexibility that is well beyond attempting to build in support for every type of configuration available, which is simply not possible. Furthermore by only loading the plug-ins needed the overhead of the proposed system is greatly reduced. There are already available robust and flexible solutions for both the database and gateway servers needed to create this system. As such there is no need for a custom solution. The database and gateway servers will either be commercial of the shelf software (COTS) and/or free open source software (FOSS). Finally in order to ensure the security of both the configuration management servers and the servers they manage username and password authentication will be used. This will prevent unauthorized modification to the systems. Additionally Secure Socket Layer certificates will be used to ensure mutual authentication between the configuration management servers the servers they manage. Furthermore to mitigate the risk of internal attack role based access control will be utilized to the scope of a user’s abilities. Finally to ensure the integrity and secrecy of communications all communications will be secured using SSL/TLS. 5 Project Plan & Schedule 1. Analysis & Planning (1/18/11 – 2/26/11) 2. 3. 4. 5. Ascertain the problem. Evaluate the problem domain, including evaluations of existing research and existing systems. Evaluate possible solutions. Including technologies need to ascertain the possible solutions. Create a project proposal. Present the proposed project. Design (2/27/11 – 3/12/11) Design the high level architecture, including the communications between various components of the system. As well as the clustering of the application servers. Design the data store. Design the enterprise application to run on the management cluster. Design the thick client application to run on the managed servers. Design the web based user interface. Implementation (3/13/11 – 4/9/11) Implement the initial prototype. Create the test bed. Test (4/10/11 – 4/23/11) Perform system test on the prototype utilizing the test bed. Closure (4/24/11 – 5/14/11) Create the project report. Present the project. 6 Deliverables 1. Project Proposal The proposal document that details the need for a new solution to server configuration management over existing solutions and research as well as an overview of the proposed solution. 2. Project Report The document that details the proposed system, its design and the results of the prototype system. 3. Prototype The prototype implementation of the proposed system. 4. Prototype Test Bed A test bed with the setup necessary to test prototype of the system. This will include all components needed, as depicted in Figure 1, to functionally test the proposed system. 7 References [1] Wikipedia, the free encyclopedia. 2010. Web server software http://en.wikipedia.org/wiki/Category:Web_server_software [2] How Stuff Works. 2010. How Cloud Computing Works http://communication.howstuffworks.com/cloud-computing.htm [3] Bowei Xi, Zhen Liu, Mukund Raghavachari, Cathy H. Xia, and Li Zhang. 2004. A smart hill-climbing algorithm for application server configuration. In Proceedings of the 13th international conference on World Wide Web (WWW '04). ACM, New York, NY, USA, 287-296. DOI=10.1145/988672.988711 http://doi.acm.org/10.1145/988672.988711 [4] Yi-Min Wang, Chad Verbowski, John Dunagan, Yu Chen, Helen J. Wang, Chun Yuan, and Zheng Zhang. 2003. STRIDER: A Black-box, State-based Approach to Change and Configuration Management and Support. In Proceedings of the 17th USENIX conference on System administration (LISA '03). USENIX Association, Berkeley, CA, USA, 159-172. [5] Jeffrey S. Chase, Darrell C. Anderson, Prachi N. Thakar, Amin M. Vahdat, and Ronald P. Doyle. 2001. Managing energy and server resources in hosting centers. In Proceedings of the eighteenth ACM symposium on Operating systems principles (SOSP '01). ACM, New York, NY, USA, 103-116. DOI=10.1145/502034.502045 http://doi.acm.org/10.1145/502034.502045 [6] Putchong Uthayopas, Surachai Paisitbenchapol, Thara Angskun, and Jullawadee Maneesilp. 2000. System Management Framework and Tools for Beowulf Cluster. In Proceedings of the Fourth International Conference on High-Performance Computing in the Asia-Pacific RegionVolume 2 - Volume 2 (HPC '00), Vol. 2. IEEE Computer Society, Washington, DC, USA, 935. [7] James J. Hunt, Frank Lamers, Jürgen Reuter, and Walter F. Tichy. 1997. Distributed Configuration Management via Java and the World Wide Web. In Proceedings of the SCM-7 Workshop on System Configuration Management (ICSE '97), Reidar Conradi (Ed.). Springer-Verlag, London, UK, 161-174. [8] Hawick, K.A.; James, H.A.; , "Dynamic cluster configuration and management using JavaSpaces," Cluster Computing, 2001. Proceedings. 2001 IEEE International Conference on , vol., no., pp.145148, 2001 DOI: 10.1109/CLUSTR.2001.959966 http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=959966&isnumber=20737 [9] Microsoft Corporation. 2010. Configuration Manager: Overview http://www.microsoft.com/systemcenter/en/us/configuration-manager/cm-overview.aspx [10]Canonical. 2010. Systems Management http://www.canonical.com/enterprise-services/ubuntu-advantage/landscape/systemsmanagement [11]Canonical. 2010. Landscape Dedicated Server http://www.canonical.com/enterprise-services/ubuntu-advantage/landscape/dedicated-edition [12]Webmin. 2011. Webmin http://www.webmin.com/