In small organizations, often a single server is all that is needed to serve the needs of the organization. In such cases, installing software on the server is a matter of inserting media into the server and performing a setup.
A larger organization, however, may have several servers to meet the needs of the organization. A large company may also have many specialized personnel dedicated to setting up and maintaining the computer resources controlled by the company. For example, one person may be in charge of setting up e-mail accounts, another person may be in charge of configuring routers, another person may be in charge of installing an application, and so forth.
Small and mid-size companies do not typically have such a team of specialists. Often one individual may be in charge of all the computer needs of the organization. Because the individual may not be aware of how servers may need to be configured, particularly in a multi-server setup, sub-optimal or incorrect configuration may occur.
Briefly, aspects of the subject matter described herein relate to setting up nodes. In aspects, a setup process is started to install software components to provide services to other nodes. The setup process asks for a product key and maps the product key to a product definition that indicates a number of nodes upon which the software is allowed to be installed. The product definition may also indicate what services are allowed to be installed by the setup process. The user indicates the number of nodes on which he wishes to install the software. The user may then indicate which nodes the user wishes to provide which services. This setup data is stored and may be used to determine what services to install when the setup process is executed on each of the nodes.
This Summary is provided to briefly identify some aspects of the subject matter that is further described below in the Detailed Description. This Summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
The phrase “subject matter described herein” refers to subject matter described in the Detailed Description unless the context clearly indicates otherwise. The term “aspects” should be read as “at least one aspect.” Identifying aspects of the subject matter described in the Detailed Description is not intended to identify key or essential features of the claimed subject matter.
The aspects described above and other aspects of the subject matter described herein are illustrated by way of example and not limited in the accompanying figures in which like reference numerals indicate similar elements an in which:
Aspects of the subject matter described herein are operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with aspects of the subject matter described herein include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microcontroller-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
Aspects of the subject matter described herein may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, and so forth, which perform particular tasks or implement particular abstract data types. Aspects of the subject matter described herein may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
With reference to
Computer 110 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by the computer 110 and includes both volatile and nonvolatile media, and removable and non-removable media. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the computer 110. Communication media typically embodies computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer-readable media.
The system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132. A basic input/output system 133 (BIOS), containing the basic routines that help to transfer information between elements within computer 110, such as during start-up, is typically stored in ROM 131. RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120. By way of example, and not limitation,
The computer 110 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media, discussed above and illustrated in
The computer 110 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180. The remote computer 180 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 110, although only a memory storage device 181 has been illustrated in
When used in a LAN networking environment, the computer 110 is connected to the LAN 171 through a network interface or adapter 170. When used in a WAN networking environment, the computer 110 typically includes a modem 172 or other means for establishing communications over the WAN 173, such as the Internet. The modem 172, which may be internal or external, may be connected to the system bus 121 via the user input interface 160 or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 110, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
In other embodiments, the number of servers and clients and the arrangement thereof may be changed without departing from the spirit or scope of aspects of the subject matter described herein. Clients and servers may communicate with each other and with other entities (e.g., routers, firewalls, and other entities not shown) via various networks including intra-office network 230 and the Internet 235.
Each of the servers 204-207 and the clients 210-213 may be implemented on one or more computers (e.g., computer 110 as described in conjunction with
Another exemplary service includes hosting a document repository in which documents, files, versions thereof, and the like may be stored. One exemplary document repository is SharePoint® produced by Microsoft Corporation of Redmond, Wash. although other document repositories may also be hosted without departing from the spirit or scope of aspects of the subject matter described herein.
Another exemplary service is a directory service that stores and organizes information about a network's users, shares, and resources. The directory service may allow network administrators to control access to resources available through the network. Exemplary directory services include Network Information Service (NIS), eDirectory, Red Hat directory server, Active Directory, Open Directory, Apache Directory Server, and Oracle Internet Directory to name a few.
Another exemplary service is a Dynamic Host Configuration Protocol (DHCP) process that supplies each other local node with an IP address at which the node is accessible, a subnet mask, a default gateway, an IP address for a Windows Internet Name Service (WINS) server, and an IP address for a Domain Name System (DNS) server. An organization may also wish to have a WINS and DNS server under its control to provide services to other nodes.
It may also be beneficial to have a service that replicates the directory service (and associated data) in case a master directory service becomes non-operational or corrupt. Other services that may be needed by an organization include an e-mail server, calendaring software, a message store, an anti-virus engine that examines e-mails, and the like.
Other exemplary services include providing access to resources and entities available on the Internet 235, firewall capability, spam filtering, authentication of remote users attempting to access resources connected to the network 230, anti-virus monitoring, port filtering, port forwarding, and the like.
The list of services and servers indicated above are not intended to be exhaustive list of all the services and servers that may be needed or desired by an organization. Indeed, those of ordinary skill in the art will recognize that there are many other services and servers that an organization may need or desire to be more productive, efficient, or organized. In embodiments, systems including such services and/or servers are also included within the spirit and scope of aspects of the subject matter described herein.
As used herein, each of the terms “server” and “client” may refer to one or more physical entities, one or more processes executing on one or more physical entities, and the like. Thus, a server may include an actual physical node upon which one or more processes execute, a service executing on one or more physical nodes, or a group of nodes that together provide a service. A service may include one or more processes executing on one or more physical entities.
The number of servers an organization desires may be determined by the organization's size, activities, budget, and the like. Determining which services to place on which servers to provide an optimum system and then actually installing the services may be beyond the skill set of an information technology (IT) professional tasked with providing all the IT needs of an organization.
In operation, the configuration tool 310 may interact with a system administrator via the user interface 305. Through the user interface 305, the configuration tool 310 may display the setup state of each server that is to provide services to a set of nodes. The set of servers that are to provide services to a set of nodes is sometimes referred to as a configuration set.
Starting with a first node, the system administrator may execute a setup process on each node of a configuration set (e.g., servers 204-207 of
The first node upon which the setup process executes (sometimes referred to as the “master node”) may gather information regarding the setup of services for the configuration set. For example, the configuration tool 310 may prompt the system administrator for a product key. The product key may map to a product definition that may indicate the maximum number and types of servers that may be utilized and the services that may be installed under licensing agreements associated with the product. For example, the product key may map to a product definition that indicates that certain services may be installed on no more than five servers with each server having four or fewer CPUs.
The configuration tool 310 may provide an entered product key to the product key service 330 to determine what services may be installed on what servers. The product key service 330 may use the mapping data 335 to map the product key to a product definition. The product key service 330 may then obtain the characteristics of the product (e.g., number of servers, type of servers, types of services, and the like). After determining what services may be installed, the configuration tool 310 may provide a menu to the system administrator through the user interface 305. The menu may indicate what the product key allows and may ask the system administrator to indicate how many servers the system administrator wishes to use to provide the allowed services.
After obtaining a valid product key, the configuration tool 310 may request that the system administrator provide server names and assign services to each of the servers. In one embodiment, the configuration tool 310 may indicate default or preferred assignments of services to servers based on the number of servers selected, the characteristics of the servers, and the services allowed by the product key. The system administrator may modify the assignment as desired or may clear all assignments and come up with a custom assignment of services to servers.
After the system administrator has entered the server names and assignment of services to servers, the configuration tool 310 may store this information in the setup data 320. The data that indicates the assignment of services to servers is sometimes referred to as “assignment data.” In one embodiment, the setup data 320 is stored on or accessible through the master node. In another embodiment, the setup data 320 may be replicated and available from various nodes within the configuration set. In yet another embodiment, the setup data may be stored in a central database accessible from any node connected to the network (provided the node supplies the proper credentials). After the system administrator has finished the setup process for the master node, the system administrator may go to another node and start the setup process.
After a node is setup enough to know where the master node of its configuration set is located (e.g., a through discovery protocol and/or explicit user instruction), the node may obtain configuration data from the master node. Such configuration data may include, for example, the addresses of servers (e.g., DNS servers, e-mail servers, directory service server, and the like) and which services are to be installed on the node. The node may communicate with the master node via the communication component 315. The authentication service 325 may check the credentials of the node before granting access to the setup data 320. After the node has access to the setup data 320, the node may use this data to determine what services the node may install. The node may also use the data to know where the node may request other services (e.g., directory service, WINS, DNS, etc.) provided by the configuration set and other nodes.
In another embodiment, a service, process, or the like (e.g., a setup component) executes on each node that is to be setup to provide services. A system administrator may log into any node and, via the service, may setup each node of a configuration set without logging on to each node from the node's console.
In one embodiment, the setup component may allow a system administrator to migrate services from one server to another server after initial setup has completed. The system administrator may log onto the master node, indicate a different assignment of services to servers, log onto a server upon which to install services, and have the new server download configuration data and install the services. As part of the migration, the server from which the services were migrated may cease providing the services by disabling or uninstalling them.
In another embodiment, the setup component may also be included on client nodes to assist in configuring the client nodes as to where they may access services provided by the configuration set.
At block 410, a setup process is started. For example, referring to
At block 415, a product key is requested from the user performing the setup. For example, referring to
At block 425, the number of nodes upon which the product key allows software to be installed is determined. This may be done as described previously, for example, by consulting mapping data that maps product keys to product definitions. For example, referring to
At block 430, the number of nodes upon which to install software is requested from the user. For example, referring to
At block 440, the services which the product key allows to be installed are determined. This may be done by consulting the product definition which, in addition to having the maximum number of nodes upon which the software may be installed, may also have a listing of the services allowed by the product key.
At block 445, a default assignment of services to nodes based on the number of nodes and available services is presented to the user. This default assignment may be stored in a product definition or elsewhere without departing from the spirit or scope of aspects of the subject matter described herein. For example, referring to
In one embodiment, the number of nodes upon which to install software is completely determined by the product key. In other words, the product key may indicate the number of nodes upon which to install the software. In this embodiment, the configuration tool 310 may not request a number of nodes from the user. Instead, the configuration tool 310 may obtain this number using the product key. In this embodiment, the actions associated with blocks 430 and 445 may be skipped.
At block 450, the user may modify this assignment or may clear all assignments and come up with an entirely different assignment.
At block 455, the assignment data is stored in setup data so that other servers that are setup as part of the setup process may access the setup data to determine what services they are to install.
At block 460, the actions end. The setup process may continue on other nodes of the configuration set to install services on the other nodes as appropriate.
At block 510, a request for setup data is received from a node executing a setup process. The request may be received at a master node, a node replicating setup data, or a data store as previously indicated. For example, referring to
At block 515, credentials are authenticated. This may involve comparing the name of the node requesting the setup data to the server names indicated while performing setup on the master node. It may also involve checking a username and password of a user logged onto the node.
At block 520, if the credentials are authentic, the actions continue at block 525; otherwise, the actions continue at block 540.
At block 525, a determination is made as to whether the number of nodes allowed by the product key will be exceeded if the node is allowed to install services. If so, the actions continue at block 540; otherwise the actions continue at block 530.
At block 530, assignment data corresponding to services mapped to the node are retrieved from the setup data. As described previously, this data may indicate what services are to be installed on the node.
At block 535, the assignment data together with other setup data is provided to the node. At block 540, the actions end. The actions described above may be repeated each time a node executes the setup process to install software in a multi-node environment.
At block 610, the setup process on a node begins. In one embodiment, at least one other node of the configuration set of which the node is part executed a setup process previously and stored setup data. The node upon which the setup process is currently executing may locate this node or another node upon which the setup data is replicated to obtain the setup data as described in more detail below.
At block 615, a determination as to a location at which setup data regarding installation is stored is performed. As mentioned previously, this may be done through engaging in a discovery protocol and/or may involve asking a user to identify a location (e.g., server name, data store name, node name upon which data is replicated, and the like).
At block 620, the node requests assignment data that indicates service(s) the node is assigned to provide. At block 625, the node provides credentials to access the assignment data.
At block 630, the node receives the assignment data and may also receive other setup data as described previously. At block 635, the setup process installs service(s) based on the assignment data and configures itself to operate correctly (e.g., access services at specified locations) in view of the other setup data.
At block 640, the actions end. The actions described above may be repeated for each node of a configuration set that is setup.
In one embodiment, the actions described in conjunction with
As can be seen from the foregoing detailed description, aspects have been described related to setting up services on nodes. While aspects of the subject matter described herein are susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit aspects of the claimed subject matter to the specific forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of various aspects of the subject matter described herein.