Management of network-based services and servers within a server cluster
Techniques are described to manage network-based services and servers within a server cluster. In an implementation, a plurality of sub-groups is formed of servers included in a server cluster. Network-based services are assigned to each of the sub-groups such that at least two of the sub-groups have matching deployments of the network-based services.
1 . A method comprising:
forming a plurality of sub-groups of servers included in a server cluster; and
assigning network-based services to each of the sub-groups such that at least two of the sub-groups have matching deployments of the network-based services.
2 . A method as described in claim 1 , wherein:
at least two of the sub-groups have matching deployments, one to another, according to replication values for respective said network-based services; and
the replication values are used to determine a respective number of the servers in the server cluster that are to include a respective said network-based service.
3 . A method as described in claim 1 , wherein the network-based services are assigned by:
determining a number of deployments of network-based services in the service cluster for each of the network-based services using respective replication values, wherein the replication values are used to determine a respective number of the servers in the server cluster that are to include a respective said network-based service;
creating a randomized array that references each of the determined deployments of the network-based services;
generating an ordered list of the servers based on respective load, one to another; and
iteratively assigning the network-based services to the server using the randomized array and the ordered list.
4 . A method as described in claim 3 , wherein the network-based services are iteratively assigned by generating the ordered list of the servers before each said assignment of the network-based services.
5 . A method as described in claim 1 , wherein the network-based services are assigned such that the servers are not assigned a plurality of deployments of a particular said network-based service.
6 . A method as described in claim 1 , further comprising when an adjustment is to be made to network-based services provided by the server cluster, reassigning one or more of the network-based services in each of the sub-groups according to a respective replication value.
7 . A method as described in claim 1 , further comprising when an adjustment is to be made to a number of servers in the server cluster, reassigning one or more of the network-based services in each of the sub-groups according to a respective replication value.
8 . A method as described in claim 1 , further comprising:
monitoring use of the network-based services; and
adjusting at least one replication value based on the monitoring.
9 . A method as described in claim 1 , wherein at least one said network-based service is configured to stream content over a network to one or more clients.
10 . A method as described in claim 1 , wherein one or more said network-based services are selected from the group consisting of:
a television program service;
a streamed audio service;
a streamed radio service;
a streamed video service;
a video-on-demand (VOD) service;
a pay-per-view (PPV) service;
a network digital video recorder (NDVR) service;
an enhanced television programming service;
an enhanced streamed video service; and
an enhanced streamed audio service;
11 . A method comprising:
determining a number of adjustments to be made to deployments of a plurality of network-based services in a server cluster;
randomizing the adjustments; and
iteratively making the randomized adjustments to servers in the server cluster based on respective loads of the servers.
12 . A method as described in claim 11 , wherein:
the number of adjustments are made in response to a change to a replication value of at least one of the network-based services; and
the replication value is used to determine a number of the servers in the server cluster that are to include the at least one network-based service.
13 . A method as described in claim 11 , wherein the adjustments are made iteratively such that the respective loads of the servers are computed before each said adjustment is made.
14 . A method as described in claim 13 , wherein when two or more said servers having matching said loads, the adjustments are iteratively made to the two or more said servers randomly.
15 . A method as described in claim 11 , wherein when the number of adjustments is made to add one or more deployments of network-based services to the server cluster, the adjustments are made to the servers in order of respective said loads, from low to high.
16 . A method as described in claim 11 , wherein when the number of adjustments is made to remove one or more deployments of network-based services from the server cluster, the adjustments are made to the servers in order of respective said loads, from high to low.
17 . One or more computer-readable media comprising computer executable instructions that are executable to direct a computer to:
determine a number of adjustments to be made to deployments of network-based services by a server cluster based on replication values of the respective network-based services when a number of servers included in the server cluster is changed; and
perform the adjustments to one or more of the servers according to respective loads.
18 . One or more computer-readable media as described in claim 17 , wherein the number of adjustments is performed iteratively such that the respective loads are computed before each said adjustment is performed.
19 . One or more computer-readable media as described in claim 17 , wherein the replication values are used to determine a number of said servers that are to include a respective said network-based service.
20 . One or more computer-readable media as described in claim 17 , wherein the adjustments include iteratively removing network-based services from one or more of the servers in the server cluster and iteratively adding network-based services to one or more of the servers in the server cluster.