您的解決方案需要在兩臺服務器上實時更新的共享數據庫。該數據庫將由事件記錄器管理,該事件記錄器將跟蹤所有正在進行的呼叫;也許標記爲LINEUP。如果檢測到故障,則發生故障的服務器上的所有呼叫都將被標記爲DROPPEDCALL。當您的故障切換服務器加速並接管時 - 使用心跳監視或其他方法 - 那麼它將執行的第一件事是生成一組所有數據庫記錄的調用文件,標記爲DROPPPEDCALL。這些電話可以一起召開會議。
關於它最難的部分是事件監視器,以確保您不會錯過任何RING或HANGUP事件,並可能在系統中留下一個「鬼」呼叫在恢復操作中被錯誤地撥打。
您可能還應該有一種機制,在「管理」計算機上構建Asterisk配置,然後將更改推送到您的呼叫管理器AST boxen場。這樣任何節點都可以被其他節點替換。
您應該擁有的是2臺使用複製技術和Linux高可用性(LHA)(1)的數據庫服務器。或者,使用「公共」IP進行DNS輪詢或負載平衡也可以。這些機器可能會承受足夠輕的負載來託管您的配置管理器,同時獲得LHA「免費」的好處。
然後,至少N + 1 AST Boxen用於呼叫處理。 N是您計劃每秒處理的呼叫數量除以300.「+1」是您的故障轉移節點。通過使用節點輪詢,您可以通過從配置管理器中提取正確的配置來設置機制,讓故障轉移節點採用失敗機器的身份。
如果硬件價格便宜/免費,那麼1:1 LHA節點冗餘始終是一種選擇。但是,一般來說,PC硬件和Asterisk軟件的故障率相當低; 3或4「9」從罐子裏出來。所以,真的,你正在試圖獲得距離「5th 9」最後的距離。
我希望能給你一些關於走哪條路的想法。如果您有任何問題,請告訴我,並請花時間「接受」哪些答案符合您的需求。
(1)http://www.linuxjournal.com/content/ahead-pack-pacemaker-high-availability-stack