[OpenSIPS-Users] Best way to synchronize location database/local cache when running multiple OpenSIPS Registrar?

Xi Liu lxvonion at gmail.com
Mon Apr 23 20:35:59 CEST 2012


Hi All,

I'm trying to setup multiple OpenSIPS servers as SIP Registrars to improve availability.

Here is my setup.

I have Server A & Server B both running opensips with same configuration, the only difference is they both using the database on server A, which mean server B will access database remotely.
Ideally any subscriber would be able to register with either Server A/B based on connection quality. Server A & B will share the location database so any one of them failed, the subscriber would be able to send call request to the other server without Re-Registration.

And here's my problem, when Client X registered with Server B, Server B updated registration info to location database and local cache, but in the meantime, server A only have the registration info in database, not local cache.
So when Client X try to send call out though Server B, it would be fine.
But when Server B fails, when Client X try to send call out though Server A, it will fail because server A can not find a matched registration in local cache. 

Based on my understanding, OpenSIPS will update the location database according to the local cache, but not in the reverse direction. Which means if I add a new AOL entry to local cache of Server A manually, it will update the location table in shared database. But if new entries inserted to the location database(because a new subscriber registered through Server B), Server A won't update its local cache.

I tried to built a perl app running on each server, which periodically read the database and updates the local cache using OpenSIP FIFO, but the performance is so poor that won't scale up(5 entries per second...).

I'm wondering what is the best way to achieve this feature?

Thanks! 
Xi


More information about the Users mailing list