1. A method for load balancing, comprising: receiving resource availability profiles including: a first resource availability profile comprising a first plurality of parameters for a first resource associated with a first server, and a second resource availability profile comprising a second plurality of parameters for a second resource associated with a second server; wherein the first server is not the second server; storing a plurality of policies including a policy comprising a comparison of: one or more parameters in the first resource availability profile for the first resource, and one or more parameters in the second resource availability profile for the second resource; assigning a first weight for the first resource and a second weight for the second resource, wherein the assigning is based at least in part on the policy, one or more values for the one or more parameters from the first resource availability profile and one or more values for the one or more parameters from the second resource availability profile; determining that the policy of the plurality of policies, but not other policies of the plurality of policies, corresponds to a particular context associated with a particular connection request; wherein the particular context associated with the particular connection request comprises a requirement for the particular connection request; and selecting the first server for the particular connection request based at least in part on the first weight and the second weight; wherein the plurality of policies includes different policies that compare different parameters, and the different policies are applied for different connection requests based on different contexts comprising different requirements for the different connection requests; wherein the steps of receiving, storing, assigning, determining, and selecting are performed by one or more processors.