On Mar 29, 2023, at 12:42 PM, calvine@gmail.com wrote:
It's been my understanding that Kamailio clustering would solve life behind a load balancer? This is the part where I'm hesitant to follow guidance from ten year old blog posts and YouTube videos and need to grok the current state of clustering. I'm working with the presumption that call state can be stored externally, i.e. Redis, and any node could handle any messages from any dialog. Similarly for rtpengine. "Is this the real life? / Is this just fantasy?"
No, this contains vastly far more fantasy than reality.
Some parts are true, but not because of any clustering, but just by the very nature of how proxies operate. For instance, Kamailio can indeed handle any in-dialog message, but not because it stores call state somewhere; call state is just not necessary to route an in-dialog request.
On the other hand, you can’t send a CANCEL message to any proxy, because that’s a “hop-by-hop” request that requires transaction state (not to be confused with dialog state/call state) to deal with, and that kind of state _cannot_ be replicated.
RTPEngine is reasonably clusterable, using Redis as an intermediary.
But no, on the whole, the idea that you can just replicate all necessary state and send anything anywhere any time is rather fantastical. It works in bits and pieces. I wouldn’t get overly attached to this model, it’s a bit romantic. :-)
— Alex