2013-06-02 61 views
0

具體而言,我使用的是帶有Heartbeat主動/被動羣集的星號。羣集中有2個節點。假設Asterisk1 Asterisk2。 Eveything在我的集羣中配置良好。當其中一個節點失去互聯網連接時,星號服務失敗或Asterisk1關閉,星號服務和故障轉移IP遷移到倖存節點(星號2)。當互聯網連接丟失時,是否有方法重新連接呼叫

問題是,如果我們實際上在處理一個呼叫時,Asterisk1掉下來,星號停止呼叫,我可以重撥直到星號服務在星號2(5秒,不是一個不好的時間)。

但是,我的問題是:有沒有一種方法可以讓Skype在通話中失去聯繫時像Skype一樣工作?我的意思是,不停止呼叫並嘗試重新連接呼叫,並在Asterisk2中的星號服務啓動時重新連接它?

回答

1

有一些商業系統支持這種行爲。

如果你想要做它在非COMERCIAL系統有2個辦法:

1)力回電與自動應答標誌的所有手機。要求:大師以星號表示。

2)使用xen和內存映射/鏡像系統維護具有相同內存狀態的其他節點vps(運行星號相同)。要求:XEN的大師。例如見:http://adrianotto.com/2009/11/remus-project-full-memory-mirroring/

對不起,這兩種方法都需要大師的知識水平。

請注意,如果您通過openvpn隧道進行SIP操作,非常可靠,如果互聯網停止工作20秒,您不會鬆動隧道內的呼叫。這不完全是你問的,但可以工作。

0

您的解決方案需要在兩臺服務器上實時更新的共享數據庫。該數據庫將由事件記錄器管理,該事件記錄器將跟蹤所有正在進行的呼叫;也許標記爲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

0

由於沒有公認的答案後,近2年來,我會提供一個:NO。這是爲什麼。

  1. 如果故障轉移從一個的Asterisk服務器1的Asterisk服務器2,然後的Asterisk服務器2不知道什麼叫(即端點endpoing)正在進行中。 (即使你共享被叫號碼數據庫,使用星號實時等)。如果星號試圖將呼叫的兩端都撥到相同的號碼,這些可能不是呼叫的相同端點。

  2. 另一臺服務器由於關閉了最後一臺服務器而無法恢復其他服務器的SIP TCP會話。

  3. MAC源/目標端口可能相同,您的防火牆不會知道您正在嘗試繼續相同的會話。

等.....

如果你的目標是手機服務的高可用性看看的VoIP Info網站。其餘所有(網絡冗餘,磁盤冗餘,共享塊存儲設備,路由器故障轉移協議等)都是一種分心......重點在於提前檢測涉及提供電話服務的所有中繼線/路由/設備的故障,然後提供無需共享任何設備即可獲得最高程度的恢復。 (太多HA解決方案共享磁盤,通道存儲庫等,從而產生單點故障)