Jiri Kuthan wrote:
At 02:32 23/04/2007, Christian Schlatter wrote:
Alan,
Alan Crosswell wrote:
One option being discussed here is running mysql
replicated. This
brings up the concern that the independent proxies are not aware that
they are talking to a single database instance. Will there be issues
involved such as:
- deadlocks
- inconsistency of in-memory and in-database data structures
(e.g. usrloc, presence)
- collisions of per-proxy unique keys that are inserted into
tables
Personally, I think mysql replication violates KISS if I am trying to
have my redundant servers as independent and survivable as possible.
With mysql
master-slave replication only one proxy could write to the database, so you'd need
master-master replication which is possible but doesn't offer ACID as mysql cluster
does.
I would not constrain oneself, for example one can do symmetric two-way client-server
replication. We have done that once with SER, other testimony can be found in
http://portal.acm.org/citation.cfm?id=1227865.1228010&coll=&dl=ACM&…
(referring to a Columbia University technical report for even more details).
Agreed, but I still wouldn't call such a solution "simple and stupid".
And the paper mentions that mysql master-master replication doesn't
offer atomicity and therefor imposes the danger of inconsistent tables.
I guess if the authors would have had access to mysql 5.0 they'd used
mysql cluster instead. Don't get me wrong, I think using a DB cluster
for registration state is a valid approach, it's just more complicated
than letting the endpoints register with all proxies in parallel.
Christian
I agree that using DB replication violates KISS
as would also do the application layer state replication solutions you're describing
below.
I would say it depends on which type of data you are referring to. With SER (and I would
say this is 100% directly applicable to openser too) we have been using different
replication
strategies to different types of data (tables).
For me the best solution would be to have
endpoints registering with all redundant proxies in parallel. This would also be in-line
with SIP's redundancy in the previous hop. The newest firmware release for the Polycom
SIP phones does support that, though I haven't tested it yet. Are there other
endpoints implementing this feature?
The downside is that it does not work once you get a new SIP phone.
-jiri
--
Jiri Kuthan
http://iptel.org/~jiri/