TO ALL!!!
The link below describes three alternatives. A forth, quite recently
discussed on this list and serdev, should also be there: using
dispatcher on a stateless SER. If there are somebody who uses such a
setup, feel free to add it to the page!
Also, Nick and others: If the descriptions are a bit short, misleading,
or if something misses, feel free to add/change.
The rest is inline.
Nick Hoffman wrote:
Hi Greger. I have a few questions about the three
solutions you've proposed
in "Failover/redundancy and Scalability Overview"
(
http://www.iptel.org/drupal/failover_redundancy_and_scalability_overview).
1. Cacheless usrloc with a mysql cluster as
back-end DB combined with
implementation of the Path header (to find the registrar of a given UA).
No replication across servers
By "cacheless usrloc", do you mean db_mode(1) for the "usrloc"
module?
No, I mean the usrloc-cl module found in experimental (for 0.9.x).
Nothing is stored in memory, all queries are thrown at the db.
What do you mean by "implementation of the Path
header (to find the
registrar of a given UA)"?
Would [registration?] replication across servers not be needed because of
db_mode(1)?
Yep.
With this setup, can any UA register with any SER?
Yep, the path header will be stored in the DB and the info there would
be used for routing.
2. Multiple
SER registrars, each with a standalone, local DB and where
SIP is used to replicate registrations. By storing replications from a
peer in a location_peer1 table and then lookup using this table, you can
route INVITEs to the registrar being able to pinhole the NAT in front of
a given UA
If each SER has its own local DB, UAs have to register with a specific SER
rather than any of the available SERs, right?
No, each peer is responsible for replicating to the other peers.
I'm afraid I don't understand the last
sentence you wrote above. Would you
mind explaining it in a bit more detail please?
The UA #1 registers with SER A and call comes from UA #2 on SER B. SER
B can try to contact UA #1 directly, but if the UA is behind a symmetric
NAT, the NAT will not allow incoming messages from other ip addresses
than SER A. Thus, SER B should send the message to SER A, so that SER A
can contact UA #1 by traversing the NAT.
>> 3. Each SER is connected to a single mysql DB cluster as in #1, but
>> since usrloc also is in memory (cacheless usrloc is not used),
>> replication is done between the SER servers and save_memory() is used to
>> store the location only in memory (the registrar updates the cluster
>> with save())
>>
>
With this setup, can any UA register with any SER?
Yep.
Each of these
three can be combined with either:
a. call-id sticky front-end load balancer (commercial or modified LVS)
What is that?
What is what? LVS, you mean?
http://www.linuxvirtualserver.org/
c. Linux HA creating two and two peers
What is "two and two peers"?
Linux HA is Linux High Availability; two servers monitor each other and
if one goes down, the other will take the IP address configured on the
HA cluster. VRRP can also be used in combination or standalone.
http://www.linux-ha.org/
http://www.ietf.org/html.charters/vrrp-charter.html
http://www.keepalived.org/
The idea is that each physical server can either run virtualization
(xen/vmware) or use multiple interfaces (one for an active SER and one
for a standby SER), thus enabling each physical server to both be active
and a backup for another SER. Of course, you need to make sure that one
server can take the load of both in case one fails...
g-)