Sorry for the delayed reply.
. how LB must be tuned up among them (for cases where servers have
different CPU powers and/or access link bandwidths)
This can be done in either case. Some server process still needs to order
the records dynamically based on some logic we have that orders the records
based on load.
. which hosts may be used for backup, and if used with which LB
frequencies.
I am not sure BU needs to be handled as a special case, all records/hosts
can potentially be BU hosts if the first record does not reply. We just
walk the list in order or walk the list in order of priority in the case or
srv records.
Using just short TTLs one would still miss differentiation between normal
host that are intended forLB and BU one.
Differentiated LB frequencies would also be missed.
Not sure it matters. The goal is to find a server that is up. The current
priority is handled by record ordering. You still have to order the records
(either srv or a ) somehow. Lets look at how we might implement both
assuming no caching and direct queries to auth dns server (for simplisity):
Using A Records:
------------------
- Client makes A record query for
www.mydomain.com.
- Server builds and sends reply from auth data. It dynamically orders the
records based on LB input from various hosts using some external process.
- Client gets list. Implicit order is first record is highest priority and
so on. Client tries first record and gets no reply. Client then tries
second record and so on until a connection is made.
Using SRV Records:
---------------------
- Client makes SRV record query for
www.mydomain.com.
- Server builds and sends reply from auth data. Priority and Weight values
are dynamically set with another process that receives statistics
notifications from the hosts. Records are ordered based on Priority and
then Weight.
- Client gets list. Explicit order is defined by lowest Priority value and
if multiple records with same Priority, then use record with highest Weight.
The list is walked in this manner until a connection is made.
In both cases, you still need some server based logic that either orders A
records or changes the priority and weight values for given SRV RRs. In the
case of a downed host, we probably want to remove the record in both cases
and not just put it at the bottom of the list as not client could ever
connect to it anyway, so no need to list it. One is explicit, the other is
implicit based on order (I guess that could be explicit order also depending
on how you think about it.) In both cases, the client really just wants an
IP address to connect to. If that fails, it walks the list to get next one
in respective order. As far a LB goes, I still don't see the advantage to
srv records. You do have the notion of explicit priority and weight which
could remove any ambiguity and would not rely on intermediate dns servers
keeping the List in exact order in the case of A records in first example -
so I see some value there. Not sure it has enough marginal value to warrant
a change to all client resolvers - but ya never know. I guess the point is,
we can get the same effect using A records if that is what you are after.