このシステムは銃からスズメを撃つようなものです。しかし、私はそのようなものが欲しかったのです。 また、このスキームの一部の要素は最初から作成されておらず、他のタスクで既に使用されており、そのアーキテクチャ(データベースサーバーおよびHTTPサーバー)は考慮しません。これらのサービスが適切に予約されていることを考慮しましょう。
私の仕事の1つで、gsmゲートウェイ(約30)および固定電話pri(100回線)からIPへの外部回線の転送というタスクが設定されました。 また、Samsung ids-500 PBX(2ステーション)のさらなる開発が不可能であるため、IP電話をインストールします。 PBXには既に約600台の職場の電話がありました。 現在190の外部回線があります。
基本的な要件:
- 従来のアナログでIP電話を使用する
- PBXからIPへ、またはその逆の出力の最大冗長性。
- スケーラビリティ、安定性、管理性、柔軟性
- IP電話の管理
使用するソフトウェアについて簡単に説明します。
FreeSWITCH-コールルーティング、加入者登録、ファックス、一般にすべてのPBX機能
OpenSIPS-登録のバランス、FreeSWITCHサーバーへの呼び出し、また呼び出しをインターセプトする場合、呼び出しの受信先サーバーを決定し、ユーザー要求を送信します。
アスタリスク-DAHDIカード、0.1%ロジック、PBXからFreeSWITCHへのコール転送、またはその逆。
Django-サーバーへの構成の配布(mod_xml_curl)、電話構成、およびこのすべての経済の管理。
私は回路を描くのが苦手なので、このような回路を記述しようとします(結局のところ、書くことは成功しませんでした)。 より詳細な詳細が興味深い場合は、さらに答えます。
装備品
2-物理サーバー、それぞれにアスタリスクが機能する2つのDAHDIボードがあります(sip`aにはポート6060が使用されます)。 また、同じマシンにFreeSWITCHがインストールされます。 PBXは異なるサーバールームに配置され、サーバーもこれらのサーバールームに分散されます。 それらをsip1およびsip2と呼びます。
1-仮想マシン、それを通してオペレーターとの通信があり、FreeSWITCHがインストールされています。sip0と呼びましょう
1-仮想、OpenSIPSはバランサーです。
ロジック:
各サーバーはpriによって各PBXに接続され、冗長性を提供します。 PBXから呼び出す場合、アスタリスクはこのマシンで実行されているFreeSWITCHに呼び出しを送信しようとします。エラーが発生した場合は、2番目のサーバーに呼び出しを送信します。
PBXへの呼び出しは、原則として同様のロジックに従いますが、1つの例外があります。最初に、呼び出しは、呼び出し先のPBXの隣にあるサーバーに行きます。 つまり、コールがsip1に到達し、sip2がPBX2に近い場合、最初にコールを送信します。
外部番号バインディングを持つすべてのPBX番号はシステムに登録されます。sip0からコールが発行されると、対応する発信者IDが置き換えられ、バインディングがない場合はパイロット番号が置き換えられます。 これは、ユーザーout_numberに規定された変数の形式でリリースされ、ダイヤルプランでの検証
${user_data(${caller_id_number}@${domain} var out_number)}
VOIP番号の場合、ロジックは同じです。
内部呼び出しの場合、呼び出し元の名前はhttpを介してmod_cidlookup要求を受け取ります。 コンプライアンスの電話番号、従業員の名前、ADと1Cに関する別の話。
VoIP電話-Dlink dph-105、dph-400、grandstream gxp-1405、gxp-2120。 それらの設定はhttpを介して配布され、データベースからすべての設定を取得し、必要な設定ファイルをその場で作成します。
管理パネルは、これまで最小限の機能、デバイスの設定-ユーザー、cdr、デバイスの再起動、ダイヤルプラン管理、成功した着信/発信コールの1日あたりの小さな統計、および誤って、現在の登録ユーザー数とサーバーごとのアクティブコール数を実装しています。
sip1とsip2は、ユーザー、ボイスメール、アクティブコール、cdrの登録、変数の保存に同じデータベースを使用します。
FreeSWITCHのスケーラビリティと冗長性については、 エンタープライズ展開を読むことができます
現在、登録済みのSIPユーザーは300人、PBXには600人のユーザーがいます。外部宛先への同時コールの最大数は40です。
このテキストストリームは完全ではなく、写真を完全に説明するものではないことを理解していますが、筆記を常に延期していたため、できる限り最高のものを書くことにし、このトピックが興味深い場合は、それを拡大して補足します。