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&a... (referring to a Columbia University technical report for even more details).
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/