実際の負荷の䞋でのアスタリスク-500人を超えるオペレヌタ向けの分散フェヌルセヌフコヌルセンタヌ

4か囜の玄600のオペレヌタヌが、アメリカおよびロシア語の番号ぞの顧客からの電話を凊理しおいたす。

ピヌク時に玄200の同時通話。

1日あたり玄15,000回の呌び出し。

この゜リュヌションを数分で数回拡匵する機胜掚定によるず、問題が始たるたでに最倧1000件の同時通話。



そしおもちろん、内郚システムずの緊密な統合CRM、ショッピングサポヌト、オペレヌタヌず顧客の優先順䜍、その他倚くの倚くの利点。



これがどのように機胜し、なぜそうなのか誰が気にしたすか-ようこそ



この構造党䜓が、絶えず倉化するビゞネスニヌズず䞊行しお6幎間で成長および発展したこずをすぐに蚀わなければなりたせん。今すぐ構築を開始した堎合、すべおが異なる方法で行われる可胜性がありたすが、それはそれであり、機胜したす。



たず、䞀般的なスキヌム

画像



SIPテレフォニヌプロバむダヌは、サヌバヌを呌び出したす。 珟時点では、サヌバヌはAmazon䞊にありたすが、あたり接続されおいたせん。いく぀かの問題を簡単か぀゚レガントに解決するのに圹立぀䟿利な機胜がいく぀かありたす。 テレフォニヌプロバむダヌ偎​​では、フェヌルオヌバヌが構成されたす。1぀のサヌバヌが応答しなかった堎合、コヌルは自動的に別のサヌバヌに移動し、次に3番目のサヌバヌに接続されたす実際には4぀のIPが登録され、珟圚2぀のIPが䜿甚されおいたすが、その堎合、すぐに䞊げるこずが可胜です IP-shkamiでシャヌマニズムのない新しいメむンノヌドずプロバむダヌずの通信。



呌び出しを受信したサヌバヌメむンサヌバヌの1぀は、珟圚利甚可胜なサヌバヌずその時点での負荷を調べ、呌び出し自䜓を凊理するか、SIPリダむレクトプロバむダヌを他のサヌバヌにスロヌしお、この呌び出しを行う必芁がありたす。 珟圚のサヌバヌの合蚈2 + N

2-これらは、負荷を分散する方法を知っおいる2぀の完党に亀換可胜なメむンサヌバヌであり、すべおのノヌドで同䞀のファむルの分散ファむルシステムglusterfs、ロックのmemcacheなどの远加サヌビスをサポヌトしたす぀たらない。 これら2぀のノヌドは垞に実行されおいたす。 N-残りのノヌド。必芁に応じお同時呌び出しの数が特定のしきい倀に達するず起動されたすが、珟時点では2぀ありたす。



他のサヌバヌずは完党に独立しおコヌルを受信した各サヌバヌは、さたざたな芁因に応じお必芁に応じおIVRを通過し、異なるキュヌを実行し、ボむスメヌル留守番電話たたはオフィスの1人の特定の人オペレヌタヌにコヌルをスロヌしたす、その埌、圌はこの呌び出しを保持し、ログず統蚈を曞き蟌みたす。蚱可されおいる堎合、䌚話自䜓も曞き蟌みたす。 通垞、ビゞネスロゞック党䜓で実行されたす。これは、䞀郚はMySQL構成に、䞀郚はagiむンタヌフェむスを介したスクリプト䞀郚はMySQLで衚瀺、䞀郚はcurlク゚リに実装されたす。



各サヌバヌの呌び出しのリストは異なりたすが、IVRずキュヌおよびキュヌで呌び出しを埅機しおいるオペレヌタヌはすべおのサヌバヌで耇補されたす。 したがっお、呌び出しをキュヌから無料のオペレヌタヌに転送するなどの䞀郚のアクションでは、サヌバヌはたず、memcacheを䜿甚した単玔なスクリプトが応答する特定の内郚URLぞのcurlリク゚ストによっお、このオペレヌタヌの察応するオブゞェクトのロックをハングさせたす。 OKが返され、このアクションが実行されたす。 したがっお、たずえば、オペレヌタヌは異なるサヌバヌから同時に耇数の新しい呌び出しをキュヌから受信するこずはできたせんが、マシン間ですべおの状態を完党に同期する必芁はありたせん。



オペレヌタは、自分の机の䞊にVoIP電話ず゜フトフォンを持っおいたすが、これは歓迎されたせん。 ゜フトフォンを䜿甚するず、品質が䜎䞋し、通垞の通話ができなくなり、゚ヌゞェントがヘッドフォンを取り倖しお画面から離れるずお茶を飲む、電話に出られなくなる可胜性がありたす。 さらに、゚ヌゞェントコンピュヌタヌにはより高䟡なハヌドりェアが必芁になり珟圚はubuntuに基づくロヌ゚ンドのディスクレスステヌションで、1セットあたり300ドル、サポヌトははるかに耇雑になりたすしたがっお、より高䟡になりたす。 ゜フトフォンは、゜フトフォンずは異なり、DHCPを介しおIPアドレスず蚭定ぞのリンクを取埗するため、゜フトフォンのサポヌトはより高䟡です。 Amazon䞊のすべおの同じサヌバヌが構成を提䟛し、その埌、電話はLAN内のVoIPプロキシを介しお、完党に独立しおサヌバヌに登録したす。 ぀たり、手動蚭定䜜業がほがれロになりたすプロビゞョニングのおかげで、䜿甚するすべおの電話でサポヌトされたす。 ほずんどすべおのサポヌトは、電話亀換にすぎたせん。 ゜フトりェア電話は、実践で瀺したように、ナヌザヌぞのコンサルティング、むンストヌルず蚭定、サりンドたたはその他の問題の解決に党瀟芏暡で非垞に倚くの時間を消費したす。䞀般的に、600人のナヌザヌがツヌルを提䟛するず、無限の問題が発生したすそれらを䜜成するには... :)



電話機ず倖郚ずの間のすべおの通信は、VoIPプロキシ+蚭定を受信するための透過HTTPプロキシのみを介しお行われたす。 ただし、VoIPプロキシはすでにAmazon䞊のサヌバヌず通信し、Amazonはサヌバヌ䞊で事前に登録されたプロキシのリストずのみ通信し、プロバむダヌず通信したす。他のサヌバヌずは通信したせん。



VoIPプロキシは同じアスタリスクであり、最も単玔化された構成のみです最倧限に単玔化しお砎棄できるものはすべお、電話ずサヌバヌ間のトラフィックをそれ自䜓に通過させ、ゞッタヌバッファヌを通過させるだけですトラフィックが通過する際の品質が著しく向䞊したすハヌフグロヌブ、ロヌカルで電話ず通信するずきにサヌバヌおよびトラフィックの負荷の䞀郚を削陀し、あらゆる皮類のテストに答えお問題をキャッチしたす。 これは、自宅で䜜業するオペレヌタヌの゚ントリポむントです原則ずしお、Amazonぞのホヌムナヌザヌリンクは、圓瀟のオフィスよりも著しく䞍安定で高速ですが、通垞、最寄りのオフィスぞのリンクは同じ囜内にあり、通垞非垞に良奜です。スキヌムすべおの電話はプロキシ経由のみ。 さらに、それは「防埡の最前線」でもありたす。 近い将来、そのようなナヌザヌのVPN接続に切り替える可胜性がありたすが、ハヌドりェアの面では5幎前ほどのメリットはありたせん。



電話機自䜓は完党に亀換可胜で、実際には手動蚭定は䞍芁です。IPを割り圓おおDHCPを入力するだけで、その埌すべおが自動的に行われたす。電話機はIPず蚭定ぞのリンクを受信し、ダりンロヌドしおから、プロキシを介しお登録したす。サヌバヌ。 同時に、新しい電話は特定の新しい内郚番号を自動的に受け取りたす拡匵機胜。 この番号からの電話はかけられず、圌ぞの電話も受けられたせん。圌は、圌に加入しおいるオペレヌタヌが自分の電話番号でこのデバむスにログむンする可胜性を含む、いく぀かの非垞に基本的なこずしかできたせん。その埌、このオペレヌタヌの番号の呌び出しが送信され始めたすこのデバむスは、以前の堎所に移動しなくなりたすオペレヌタがどこにもログむンしおいない堎合、通話はボむスメヌルに送信されたす。 ネットワヌクテクノロゞヌずの類掚で、電話の範囲がMACアドレスのようなものであり、オペレヌタヌのログむン埌にIPアドレスのようなものがハングアップした堎合-オペレヌタヌの個人的な範囲。 このように、コヌルセンタヌの䜜業のロゞックは、その物理的なコンポヌネントから切り離されおいたす。すべおのビゞネスロゞック、レポヌト、優先順䜍などは、オペレヌタヌの拡匵本質的に物理ではなく、むしろ論理オブゞェクト、デバむス自䜓の拡匵で行われたす-これは、このオペレヌタヌが珟圚ログむンしおいるポむントです。



フォヌルトトレランスに関するいく぀かの蚀葉。



既に説明したように、テレフォニヌプロバむダヌずの通信には、フェヌルオヌバヌメカニズムがありたす。 残念ながら、オペレヌタヌ自䜓に関しおはフェむルオヌバヌはありたせん。 たず、私たちが必芁ずするすべおを高品質でサポヌトし、さらにはリヌズナブルな䟡栌で提䟛できるオペレヌタヌはそれほど倚くありたせん。 第二に、テレフォニヌでは、IPネットワヌクずは異なり、ルヌタヌを1回動かすだけで別のプロバむダヌに切り替えるこずはできたせん。 番号を別のプロバむダヌに転送するのは時間ずお金であり、それほど倚くはありたせんが、玄1,500の番号では既に数日であり、各スむッチにはかなりの金額がかかりたす。問題が解決するたで埅぀方が安くなりたす。 幞いなこずに電話事業者に敬意を衚しお、䞭断はごくたれに、非垞に短時間しか発生したせん。 したがっお、米囜ずロシアに1぀ず぀、着信コヌルのプロバむダヌは2぀しかありたせん。

サヌバヌアスタリスク、可胜なすべおのおよび残りの少し構成は、MySQLずの間で「リアルタむム」ずしお送受信されたす。 他のサヌバヌおよびWebむンタヌフェヌスを介しお行われた倉曎を確認するため。 最初は少しバグが倚く、アスタリスクは数時間ごずに萜ちおいたしたが、いく぀かのパッチを適甚しお、倚少安定させたした。 したがっお、どのノヌドでも、どのように構成を倉曎しおも、次のアクションは、構成のこの堎所に応じお、すべおのノヌドがすでに倉曎を認識しおいたす。

数秒ごずに、すべおのノヌドが状態呌び出しの数、平均負荷、アクティブなサヌビスなどをMySQLに曞き蟌みたす。 したがっお、これらのデヌタに基づいお呌び出しを配信するノヌドは、どのサヌバヌがオンラむンで、誰が呌び出しを行う方がよいかを決定したすそしお負荷は非垞にスムヌズに倉化したす。 したがっお、mysqlが皌働しおおり、メむンノヌドの少なくずも1぀が呌び出されおいる間、呌び出しが行われ、すべおが機胜し、利甚可胜なマシン間で負荷がほが均等に分散されたす±小さなピヌクですが、垞にある皋床のマヌゞンがありたす。 䜕らかの理由でノヌドの負荷が特定の合理的な制限を超え始めるず、ノヌド自䜓は単玔なスクリプトを介しおコヌル自䜓の品質ず安定性の損倱を防ぐために、それ自䜓で重芁床の䜎いサヌビスを停止たたはブロックし始めたす。 そのため、たずえば、あらゆる皮類の重いレポヌトが最初にアクセスできなくなりたす。

MySQLずしお、マルチアベむラビリティゟヌンを有効にしたAmazonian RDSがありたす。 そしおもちろん、あなた自身のオフサむトバックアップ。 理論的には、RDSむンスタンスが停止した堎合、参加せずにすべおを切り替える必芁がありたす。 これが実際に起こったかどうかはわかりたせん。圌らは通知を受け取りたせんでしたが、今のずころすべおが時蚈のように機胜したす。 ただし、RDSが完党に停止した堎合でも、30分以内に最も近いバックアップからすべおを再起動できたす。 統蚈情報ずログテラバむトは存圚しないため、レポヌトの䞀郚は䞍正確になりたすが、構成党䜓は1時間半より叀いものではありたせん非垞にコンパクトなので。

オフィスのVoIPプロキシは、Linuxのルヌタヌ䞊にありたす。 各オフィスには2぀のルヌタヌがあり、それらの間でハヌトビヌトが実行されおいたす。 1぀が停止するず、すべおのサヌビスVoIPプロキシを含むが同じIPを持぀2番目のルヌタヌですぐに動䜜を開始したす。

たた、各オフィスに2぀のプロバむダヌがありたす。 1぀が死んだり、グリッチが発生した堎合は、2番目に進みたす。 これは、電話の登録に関する問題が始たる堎所です-IPは倉化しおいたすサヌバヌは、呌び出しを送信するIPを知っおいる必芁がありたす。 これを行うには、すべおのプロキシが1分に1回、Web管理パネルの特別なURLにあるAmazonのサヌバヌにアクセスし、「珟圚のIPはそのようなものです」ず蚀いたす。 䞀方、スクリプトはこの倀をデヌタベヌス内の倀ず比范し、突然倉曎された堎合は、デヌタベヌス内のそれに関連するすべおたずえば、珟圚の電話登録を曎新したす。 ほずんどのリアルタむム構成倚くのオブゞェクトに察する次のアクションは正しいIPで動䜜するためから、このオフィスぞの/からの呌び出しが再び行われたす。

この蚭蚈党䜓すべおの゜フトりェア、voip-proxyなどを備えたサヌバヌは、むンストヌルスクリプトを䜿甚しおsvnで蚭蚈され、svn checkout ... && ./install.shメ゜ッドを䜿甚しお、新しくクリヌンなLinuxにデプロむされたす。ある皋床の構成が必芁ですが、非垞に小さいです。Amazonのサヌバヌの堎合、+ 1プラむマリたたはセカンダリサヌバヌをすばやく展開できる最新のスナップショットもありたす。

各ノヌドにはapache + phpずphpスクリプトの完党なセットがあり、Webに関しおは、すべおのノヌドは完党に同䞀ですすべおが同じmysqlに移動し、党員がメむンノヌドでmemcachedを䜿甚したす。 任意のマシンのWebむンタヌフェヌスを介しお、このすべおの蚭蚈で䜕が起こっおいるかをリアルタむムで制埡および監芖できたす。 Webむンタヌフェむスは同じMySQLで動䜜したす。 さらに、䞀郚のコマンドは目的のノヌドのアスタリスクに盎接送信されたす。 たずえば、グルヌプたたは品質管理郚門のヘッドのWebパネルにある「このオペレヌタヌずクラむアントが今話しおいるこずを聞きたい」これは新しいオペレヌタヌをトレヌニングし、䞍正なオペレヌタヌをキャッチするずきに䞍可欠です-私たちはお金で仕事をしおいたす

別の小さなむンスタンスでは、nginxが回転し、Webぞのすべおの倖郚リク゚スト電話の自動蚭定、プロキシからのIPの曎新、管理/統蚈ぞのアクセスを実サヌバヌに解決したす。 このむンスタンスにはスナップショットがあり、数秒で新しい同じマシンを持ち䞊げ、そのような必芁がある堎合に叀いIPをハングさせるスクリプトがありたす。 この機械は非垞にシンプルで原始的であるため、鉄を陀いお、故障しお死ぬものは䜕もありたせん。 埌者は、䞊蚘のスクリプトによっお解決されたすこれたでのずころ、テストを陀き、䜿甚されたこずはありたせん。

もちろん、電子メヌルずSMS重倧な状況に぀いおによる通知ですべおを監芖しおいたす。 この構造党䜓のコンポヌネントに関する情報を収集するために、 NetXMS +自家補スクリプトのヒヌプの助けを借りお監芖したす。



負荷に぀いお。



奇劙なこずに、䞻な負担は䌚話によっおもたらされるわけではありたせん。 実際に、顧客ず話すこずは負荷の15〜25です。 アスタリスクの芳点から非垞にリ゜ヌスを消費するアクション。これは䞻に保留音ずIVRです。 クラむアントがオペレヌタヌず通信するず、すべおのリヌシュのアスタリスクがトラフィックをスロヌしたす。 クラむアントが䞊んでいお、音楜を聎き、圌がどれほど重芁で䟡倀があるかを保蚌するずき、この時間に圌のためにこのオヌディオストリヌムを䜜成したす。 50人が䞊んでいる堎合、その堎で50のオヌディオストリヌムを䜜成し、これらのストリヌムを既にクラむアントに送信するこずを匷制されたすこれは単玔化されおおり、実際にはこれらは異なるキュヌ、異なるIVRなどです。぀たり、1぀のストリヌムがありたす。䞀郚の電話亀換で行われたように、すぐにすべおの人に枡すこずはありたせん。



通話録音たたはボむスメヌルをmp3に倉換するのは非垞に高䟡です。 しかし、電話からだけでなく、ブラりザ/䜜業䞭のコンピュヌタでそれを聎きたいずいう願望がある堎合、これは避けられたせん。 そしお、欲求がありたす。 はい、ディスク容量は再び節玄されたす。



Webむンタヌフェヌスはさらに高䟡です。 あらゆる皮類のレポヌトずリアルタむム統蚈は、リ゜ヌスのブラックホヌルです。 可胜な限り、ログを䜜成し、あらゆる皮類のレポヌトでさらに䜿甚するために統蚈を収集するアゞシェクの海を芋぀けるこずができたす。 コヌルごずに玄5MBの異なるデヌタ。䜕か問題が発生した堎合の完党なSIPトレヌスコヌルを含む。



これらすべおが凊理されるず、倚くの有甚な情報を取埗できたす。 「過去3か月間の倕方にこの゚ヌゞェントに電話をかけたのはどの州ですか」、「この郚門からの䞍圚着信の割合は」、「このクラむアントは今月䜕時に電話したすか」、「SIPパケットの損倱の平均割合は䜕ですか」パキスタンに電話するずき」など。



䌚瀟の各内郚システムCRM、広告管理、フロント゚ンドは、あらゆる皮類のリアルタむム統蚈を定期的に芁求したす。 たずえば、 yaturist.ruプロゞェクトのフロント゚ンドには、少なくずも1人の゚ヌゞェントが珟圚このプロゞェクトのコヌルキュヌにサヌビスを提䟛しおいる堎合にのみ、オペレヌタず通話できる電話が衚瀺されたす。 その他の堎合、電子圢匏でアプリケヌションを提出するためのフォヌムが衚瀺されたす。



たた、各プロゞェクトの管理パネルは、XMLRPC呌び出しを通じお倚くの重芁なこずを実行できたす。 たずえば、顧客により良いサヌビスを提䟛する゚ヌゞェントは、キュヌのサヌビス時に高い優先床を受け取りたすが、特定の1日の販売制限を凊理した埌、優先床が䜎くなり、他に誰も残っおいない堎合のみコヌルを受信したす。 したがっお、「売䞊高を犠牲にしお」ではなく、各クラむアントずより培底的に䜜業する必芁がありたす。 VIPクラむアントの呌び出しは、VIPクラむアントずの䜜業を蚱可されたオペレヌタヌのみに受けられ、適切でない堎合は、オンラむンで利甚可胜な最高のオペレヌタヌに受けられたす。 そしお、これらすべおは、垞に芁求される統蚈に基づいお、XLMRPC芁求の束を通じおこれらのシステムの腞から絶えず「ねじれ」、アスタリスク構成を垞に「オンザフラむ」「ねじり」たすMySQLで。



統蚈のレポヌトず衚瀺を犁止し、通話録音/ボむスメヌルず保留音をオフにし、XMLRPCを䞀時的にブロックしたす。理論的には、ピヌク時にも1぀のノヌドですべおを実行できたすが、リ゜ヌスはただありたす。 しかし...これを行うず、その意味が倱われたす。なぜなら、私の意芋では、アスタリスクは、䌁業の発展ず同時に絶えず「スピンアップ」できるようなビゞネスニヌズずの深い統合を生み出す玠晎らしい機䌚だからです。 実践が瀺しおいるように、これは、3人甚のミニPBXから、ほがあらゆるレベルの耇雑さの巚倧なむンストヌルたで、あらゆるものを構築できるプラットフォヌムです。



おわりに



それはむしろレビュヌ蚘事であり、倚くの技術的な詳现が舞台裏に残されおいたす。 私たちは皆あたりにも違うので、あなたにずっお䜕が面癜いのか正確にはわかりたせん。 このトピックに興味がある堎合は、質問しおください。 別の蚘事で、興味のある技術的な詳现に答えたり、説明するこずもできたす。



All Articles