1. A computer-implemented method performed by one or more computing devices, the method comprising: receiving a plurality of requests from a plurality of client devices sent to a public internet protocol address; for each received request, processing the request to determine an internal Internet protocol address to associate with the request; routing each request to the internal Internet protocol address of a plurality of internal Internet protocol addresses associated with the request, wherein each internal Internet Protocol address is assigned to a respective compute node of a plurality of compute nodes, and wherein the one or more compute nodes process the routed requests; determining a particular compute node is offline, wherein the particular compute node is assigned one or more internal Internet protocol addresses; and in response to the determination that the particular compute node is offline, reassigning the one or more internal Internet protocol addresses corresponding to the particular compute node to one or more different compute nodes, wherein requests communicated to the reassigned internal Internet protocol addresses are communicated to the one or more different compute nodes for processing, wherein each internal Internet protocol address is reassigned according to a failover order for the internal Internet protocol address with respect to each of the other compute nodes of the plurality of compute nodes, and wherein the failover order for each internal Internet protocol address is based on historical computing workload data for each internal Internet protocol address of the particular compute node, a number of requests sent to each internal Internet Protocol address, a complexity of the requests sent to each internal Internet Protocol address, and historic computing workload data of each of the other compute nodes.