https://blog.51cto.com/908405/2235934から転送
OpenSIPSを介したFreeSWITCHの負荷分散に関する記事はたくさんありますが、それらはすべて古いバージョンのOpenSIPSに基づいています。最新のOpenSIPS LTSバージョンは2.4です。古いバージョンの構成ファイルを使用すると、OpenSIPSは実行されません(もちろん、いくつかの変更後)それはまだ稼働している可能性があります)。少し投げた後、著者はOpenSIPS 2.4とFreeSWITCHの負荷分散をうまく実現しました。ここでは、次回本当に使用する必要があるときにもう一度投げないように、投げる注意項目と最終構成を書き留めます。著者はOpenSIPSにあまり精通しておらず、いくつかの欠陥がある可能性があります。ネチズンは私を訂正することを歓迎します。
1.環境の紹介:
OpenSIPS OS:debian 8
OpenSIPSバージョン:2.4 LTS
OpenSIPS IP:172.16.100.30/31
OpenSIPS HA:キープアライブ
OpenSIPS VIP:172.16.100.32
OpenSIPSドメイン:sofia.superpipi.cn
FreeSWITCH OS:debian 8
FreeSWITCHバージョン:1.81
FreeSWITCH IP:172.16.100.10/11
DB:Mysql 5.7
注:OpenSIPSの高可用性は、VIPスイッチングにkeepalivedを使用することで実現されます。現在、OpenSIPSの可用性検出スクリプトは追加されておらず、VIPスイッチングにのみ使用されます。
2.ネットワークの紹介:
このテストでは、次のネットワーク構造を使用します。2つのノードOpenSIPSはVIPスイッチングにkeepalivedを使用し、2つのノードFreeSWITCHは負荷分散を実装します。OpenSIPSとFreeSWITCHの両方がMySQLに接続されます(注:FreeSWITCHはMySQLデータベースに接続されます。フィールド長を小さくしてください、次に手動でチャネルテーブルを作成します)。ドメイン名sofia.superpipi.cnをルーター上のOpenSIPSVIP (172.16.100.32)に分析し(作成者が使用するルーターにはDnsmasq機能があります)、登録時にドメイン名sofia.superpipi.cnを介してSIP拡張子を登録します。ドメイン名で登録する必要がある理由は、FreeSWITCHのデフォルトのドメイン名がローカルIPであるためです。登録したドメインがFreeSWITCHローカルIPでない場合は、登録できず、電話をかけることができません。これは、FreeSWITCHドメイン名を変更することで実現できます。FreeSWITCHドメイン名をOpenSIPSVIPに変更すると、VIPは1つだけ、FreeSWITCHはドメインを1つだけ持つことができ、OpenSIPS VIPを指す複数のドメイン名を持つことができるため、FreeSWITCHマルチドメインを実現できます。FreeSWITCHが複数のドメインを必要とする理由については、主に権限の管理と制御を容易にするためであり、これは実際の本番環境で非常に重要です。
3.インストールと基本構成:
3.1、keepalivedをインストールして構成します
3.1.1、keepalivedをインストールします
キープアライブインストールは、aptを介して直接インストールできます
apt-get install keepalived
3.1.2、キープアライブ構成を変更します。
/etc/keepalived/keepalived.confを編集し、次の構成に従って2つのノードをそれぞれ変更します。
-
01ノードのキープアライブ構成:
! Configuration File for keepalived
global_defs {
notification_email {
acassen
}
notification_email_from [email protected]
smtp_server 172.16.100.251
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
garp_master_delay 10
smtp_alert
virtual_router_id 53
priority 200
nopreempt
advert_int 1
authentication {
auth_type PASS
auth_pass 915119
}
virtual_ipaddress {
172.16.100.32/24
172.16.100.32/24 label eth0:1
}
}
-
02ノードのキープアライブ構成:
! Configuration File for keepalived
global_defs {
notification_email {
acassen
}
notification_email_from [email protected]
smtp_server 172.16.100.251
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
garp_master_delay 10
smtp_alert
virtual_router_id 53
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 915119
}
virtual_ipaddress {
172.16.100.32/24
172.16.100.32/24 label eth0:1
}
}
3.2.OpenSIPSをインストールして構成します
3.2.1、OpenSIPSをインストールします
作成者は公式のdebパッケージを介してOpenSIPSを直接インストールし、実行手順は次のとおりです。
-
ソースを追加:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 049AD65B
echo "deb http://apt.opensips.org jessie 2.4-releases" >/etc/apt/sources.list.d/opensips.list
-
ソースを更新し、OpenSIPSをインストールします
apt-get update && apt-get install opensips
3.2.2、OpenSIPSを構成します
-
データベースを作成する
/ etc / opensips / opensipsctlrcを編集して、以下の項目をコメントアウトし、実際の状況に応じて変更するか、echoを介して/ etc / opensips / opensipsctlrcに直接追加します。
echo "SIP_DOMAIN=sofia.superpipi.cn" >> /etc/opensips/opensipsctlrc
echo "DBENGINE=MYSQL" >> /etc/opensips/opensipsctlrc
echo "DBPORT=3306" >> /etc/opensips/opensipsctlrc
echo "DBHOST=172.16.100.15" >> /etc/opensips/opensipsctlrc
echo "DBNAME=opensips" >> /etc/opensips/opensipsctlrc
echo "DBRWUSER=opensips" >> /etc/opensips/opensipsctlrc
echo "DBRWPW="ligen119"" >> /etc/opensips/opensipsctlrc
データベース作成ツールを実行します(注:データベースがこのマシン上にない場合は、rootユーザーがデータベースにリモートアクセスすることを許可する必要があります)
/usr/sbin/opensipsdbctl create
上記のコマンドを実行すると、rootパスワードを入力するように求められます。rootパスワードを入力すると、データベースの文字セットを入力するように求められます(Tucaoではutf8を選択できません)。gbkと入力します(中国語を保存する必要がある場合があります)。後で)、ウィザードに従ってデータベースを作成します。
-
スタートアップパラメータを設定する
起動パラメータを編集する必要はありません。本番アプリケーションが推奨される場合は、それに応じてメモリパラメータを拡張する必要があります。
/ etc / default / opensipsを編集して次の項目をコメントアウトし、実際の状況に応じて変更するか、echoを介して/ etc / default / opensipsに直接追加します
echo "RUN_OPENSIPS=yes" >>/etc/default/opensips
echo "USER=opensips" >>/etc/default/opensips
echo "GROUP=opensips" >>/etc/default/opensips
echo "S_MEMORY=512" >>/etc/default/opensips
echo "P_MEMORY=32" >>/etc/default/opensips
echo "DUMP_CORE=yes" >>/etc/default/opensips
-
構成ファイル
/etc/opensips/opensips.cfgを編集し、元の構成ファイルをクリアして、次のコンテンツを構成ファイルに挿入します。(この設定ファイルは基本的にfreeswitch公式wikiの設定ファイルを参照しています)
log_level=1 #老版本日志级别参数为debug,级别范围1-4,建议生产上设置为1,为3或者4时将产生大量日志,磁盘空间很快就不够了
sip_warning=0
log_stderror=no
log_facility=LOG_LOCAL0
log_name="opensips"
debug_mode=no
children=4
dns_try_ipv6=no
auto_aliases=no
listen=udp:172.16.100.30:5062 #另外一个节点设置为udp:172.16.100.31:5062,取本地IP,不添加该监听项则备用节点无法与负载节点握手,导致备用节点将调度列表的负载节点设置为不可用
listen=udp:172.16.100.32:5060
mpath="/usr/lib/x86_64-linux-gnu/opensips/modules/"
loadmodule "db_mysql.so"
loadmodule "signaling.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "uri.so"
loadmodule "dialog.so"
loadmodule "maxfwd.so"
loadmodule "textops.so"
loadmodule "mi_fifo.so"
loadmodule "dispatcher.so"
loadmodule "load_balancer.so"
loadmodule "sipmsgops.so"
loadmodule "proto_udp.so"
modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo")
modparam("dialog", "db_mode", 1)
modparam("dialog", "db_url", "mysql://opensips:[email protected]/opensips")
modparam("rr", "enable_double_rr", 1)
modparam("rr", "append_fromtag", 1)
modparam("tm", "fr_timer", 2)
modparam("dispatcher", "db_url", "mysql://opensips:[email protected]/opensips")
modparam("dispatcher", "ds_ping_method", "OPTIONS")
modparam("dispatcher", "ds_ping_interval", 5)
modparam("dispatcher", "ds_probing_threshhold", 2)
modparam("dispatcher", "ds_probing_mode", 1)
modparam("load_balancer", "db_url", "mysql://opensips:[email protected]/opensips")
modparam("load_balancer", "probing_method", "OPTIONS")
modparam("load_balancer", "probing_interval", 5)
route{
if (!mf_process_maxfwd_header("10")) {
sl_send_reply("483","Too Many Hops");
exit;
}
if (!has_totag()) {
record_route();
}
else {
loose_route();
t_relay();
exit;
}
if (is_method("CANCEL")) {
if ( t_check_trans() )
t_relay();
exit;
}
if (is_method("INVITE")) {
if (!load_balance("1","pstn","1")) {
send_reply("503","Service Unavailable");
exit;
}
}
else if (is_method("REGISTER")) {
if (!ds_select_dst("1", "4")) {
send_reply("503","Service Unavailable");
exit;
}
}
else {
send_reply("405","Method Not Allowed");
exit;
}
if (!t_relay()) {
sl_reply_error();
}
}
-
ロードノードを追加します
2つのロードノード情報をデータベースに追加します
INSERT INTO `opensips`.`load_balancer` (`id`, `group_id`, `dst_uri`, `resources`, `probe_mode`, `description`) VALUES ('1', '1', 'sip:172.16.100.10', 'vm=100;conf=100;transc=100;pstn=500', '1', 'FS1');
INSERT INTO `opensips`.`load_balancer` (`id`, `group_id`, `dst_uri`, `resources`, `probe_mode`, `description`) VALUES ('2', '1', 'sip:172.16.100.11', 'vm=100;conf=100;transc=100;pstn=500', '1', 'FS2');
-
非ネイティブIPのバインドを許可する
次のコマンドを実行して、OpenSIPSがローカルIPを監視できるようにします。これにより、VIPがフロートオーバーしたときにOpenSIPSサービスを使用できます。
echo 'net.ipv4.ip_nonlocal_bind=1' >> /etc/sysctl.conf
-
指定したファイルにログを出力
/etc/rsyslog.confにkeepalivedおよびOpenSIPSログ出力構成を追加します。(注:OpenSIPS構成ファイルのlog_stderrorおよびdebug_modeはnoに設定する必要があります。そうしないと、個別のログが出力されない場合があります)
echo "local0.* /var/log/opensips.log" >>/etc/rsyslog.conf
echo "local1.* /var/log/keepalived.log" >>/etc/rsyslog.conf
3.2.3、OpenSIPSを起動します
-
rsyslog、keepalived、OpenSIPSを再起動します
service rsyslog restart
service keepalived restart
service opensips restart
-
FreeSWITCHをスケジュールリストに追加します
次のコマンドを実行して、2つのノードをスケジューリングリストに追加します(ここでスケジューラを追加するコマンドはバージョン1.7とは異なります)。
opensipsctl dispatcher addgw 1 sip:172.16.100.10 5060 0 50 'FS1' '节点1'
opensipsctl dispatcher addgw 1 sip:172.16.100.11 5060 0 50 'FS2' '节点2'
スケジュールリストを正常に追加した後、sofia profile sofia.superpipi.cn siptrace onコマンドを使用して、2つのFreeSWITCHの制御下でsipメッセージトラッキングを開きます。2つのOpenSIPSノードがFreeSWITCHを介して常に握手をしていることがわかります。次のような「OPTIONS」メッセージ:
------------------------------------------------------------------------
recv 349 bytes from udp/[172.16.100.31]:5062 at 21:41:43.502417:
------------------------------------------------------------------------
OPTIONS sip:172.16.100.10 SIP/2.0
Via: SIP/2.0/UDP 172.16.100.31:5062;branch=z9hG4bK2fe7.7ea62cf7.0
To: sip:172.16.100.10
From: <sip:dispatcher@localhost>;tag=5f8cfd923bd21a2d7f298654cd327b22-8a62
CSeq: 14 OPTIONS
Call-ID: [email protected]
Max-Forwards: 70
Content-Length: 0
User-Agent: OpenSIPS (2.4.2 (x86_64/linux))
------------------------------------------------------------------------
send 735 bytes to udp/[172.16.100.31]:5062 at 21:41:43.503285:
------------------------------------------------------------------------
SIP/2.0 200 OK
Via: SIP/2.0/UDP 172.16.100.31:5062;branch=z9hG4bK2fe7.7ea62cf7.0
From: <sip:dispatcher@localhost>;tag=5f8cfd923bd21a2d7f298654cd327b22-8a62
To: <sip:172.16.100.10>;tag=t2y6pUXm66tQH
Call-ID: [email protected]
CSeq: 14 OPTIONS
Contact: <sip:172.16.100.10>
User-Agent: FreeSWITCH-mod_sofia/1.8.1+git~20180724×××60524Z~b33bc925c5~64bit
Accept: application/sdp
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE
Supported: timer, path, replaces
Allow-Events: talk, hold, conference, presence, as-feature-event, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, refer
Content-Length: 0
------------------------------------------------------------------------
recv 349 bytes from udp/[172.16.100.30]:5062 at 21:41:45.769168:
------------------------------------------------------------------------
OPTIONS sip:172.16.100.10 SIP/2.0
Via: SIP/2.0/UDP 172.16.100.30:5062;branch=z9hG4bKbace.ec1b06f.0
To: sip:172.16.100.10
From: <sip:dispatcher@localhost>;tag=45af385df62c8fa46b1bdd54b7adb556-4f80
CSeq: 14 OPTIONS
Call-ID: [email protected]
Max-Forwards: 70
Content-Length: 0
User-Agent: OpenSIPS (2.4.2 (x86_64/linux))
------------------------------------------------------------------------
send 735 bytes to udp/[172.16.100.30]:5062 at 21:41:45.770861:
------------------------------------------------------------------------
SIP/2.0 200 OK
Via: SIP/2.0/UDP 172.16.100.30:5062;branch=z9hG4bKbace.ec1b06f.0
From: <sip:dispatcher@localhost>;tag=45af385df62c8fa46b1bdd54b7adb556-4f80
To: <sip:172.16.100.10>;tag=UBrZrper3FHaD
Call-ID: [email protected]
CSeq: 14 OPTIONS
Contact: <sip:172.16.100.10>
User-Agent: FreeSWITCH-mod_sofia/1.8.1+git~20180724×××60524Z~b33bc925c5~64bit
Accept: application/sdp
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE
Supported: timer, path, replaces
Allow-Events: talk, hold, conference, presence, as-feature-event, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, refer
Content-Length: 0
------------------------------------------------------------------------
4、FreeSWITCHの構成と検証
4.1。ドメイン名の変更
電話は登録時にドメイン名で登録されているため、FreeSWITCHドメインを登録済みのドメイン名に変更する必要があります。
../conf/vars.xmlを編集し、ドメインをsofia.superpipi.cnに設定します。(注:FreeSWITCHが複数のドメインを使用する場合は、マルチドメイン方式を参照して変更してください。https://www.cnblogs.com/lzpong/p/8573372.htmlを参照してください)
<X-PRE-PROCESS cmd="set" data="domain=sofia.superpipi.cn"/>
変更後、FreeSWITCHを有効にするには再起動する必要があります
4.2、登録確認
eyeBeam、Linphone、eSpace SoftPhone 3台のソフトフォン、Fanvil X5ハードフォンを使用して登録をテストしましたが、登録は成功しました。
freeswitchが配置されているサーバーでfs_cli-x "sofia status profile sofia.superpipi.cnreg"を実行します。
結果は次のとおりです。
root@debian:~# fs_cli -x "sofia status profile sofia.superpipi.cn reg"
Registrations:
=================================================================================================
Call-ID: [email protected]
User: [email protected]
Contact: "1004" <sip:[email protected]:6060>
Agent: Fanvil X5 1.3.256.1566
Status: Registered(UDP)(unknown) EXP(2018-09-23 22:14:29) EXPSECS(2228)
Ping-Status: Reachable
Ping-Time: 0.00
Host: debian
IP: 172.16.100.32
Port: 5060
Auth-User: 1004
Auth-Realm: sofia.superpipi.cn
MWI-Account: [email protected]
Call-ID: YTFjZjBmZDZjNWEyZGQwNTgxMTEzZDcwMTAwNDdiZDQ.
User: [email protected]
Contact: "1000" <sip:[email protected]:51540;rinstance=f8dca36459b0bdec>
Agent: eyeBeam release 1011d stamp 40820
Status: Registered(UDP)(unknown) EXP(2018-09-23 22:35:27) EXPSECS(3486)
Ping-Status: Reachable
Ping-Time: 0.00
Host: debian
IP: 172.16.100.32
Port: 5060
Auth-User: 1000
Auth-Realm: sofia.superpipi.cn
MWI-Account: [email protected]
Call-ID: SdnqWECcxy
User: [email protected]
Contact: "" <sip:[email protected]:64242;transport=udp>
Agent: Linphone Desktop/4.1.1 (belle-sip/1.6.3)
Status: Registered(UDP)(unknown) EXP(2018-09-23 21:47:38) EXPSECS(617)
Ping-Status: Reachable
Ping-Time: 0.00
Host: debian
IP: 172.16.100.32
Port: 5060
Auth-User: 1002
Auth-Realm: sofia.superpipi.cn
MWI-Account: [email protected]
Call-ID: NzBhNzg3NTY2NWExZmE0M2ZiODdlZGIwYmY1NGVmY2Y.
User: [email protected]
Contact: "" <sip:[email protected]:5060;rinstance=b0fff9289f8fbf0c>
Agent: HUAWEI OpenEye v3.1
Status: Registered(UDP)(unknown) EXP(2018-09-23 21:42:52) EXPSECS(331)
Ping-Status: Reachable
Ping-Time: 0.00
Host: debian
IP: 172.16.100.32
Port: 5060
Auth-User: 1003
Auth-Realm: sofia.superpipi.cn
MWI-Account: [email protected]
Total items returned: 4
=================================================================================================
4.3、通話確認
-
内線1000を使用して1003をダイヤルします
172.16.100.10(FS1)ノードは、内線1000から「INVITE」メッセージを受信し、内線1003への「INVITE」メッセージを開始します。メッセージの追跡は次のとおりです(注:SDPは削除され、一部のメッセージは省略されます)。
recv 1431 bytes from udp/[172.16.100.32]:5060 at 21:48:29.481716:
------------------------------------------------------------------------
INVITE sip:[email protected] SIP/2.0
Record-Route: <sip:172.16.100.32;lr;ftag=f104f441;did=83f.44ccd293>
Via: SIP/2.0/UDP 172.16.100.32:5060;branch=z9hG4bKc6fd.c55828d7.0
Via: SIP/2.0/UDP 172.16.100.251:51540;received=172.16.100.251;branch=z9hG4bK-d87543-8651904ed85c056f-1--d87543-;rport=51540
Max-Forwards: 69
Contact: <sip:[email protected]:51540>
To: "1003"<sip:[email protected]>
From: "1000"<sip:[email protected]>;tag=f104f441
Call-ID: NDkyOTM1YWI4YzhiMGY4MWI0ZDMwYmQzNThjYjE2NzQ.
CSeq: 2 INVITE
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
Content-Type: application/sdp
Proxy-Authorization: Digest username="1000",realm="sofia.superpipi.cn",nonce="e9c8201d-3c8a-461b-a86c-4719edc9cae3",uri="sip:[email protected]",response="07eca040fed8f8ecfb7392671af7cc20",cnonce="44bb05f0c983e2e22b491a7bc82f0ab6",nc=00000001,qop=auth,algorithm=MD5
User-Agent: eyeBeam release 1011d stamp 40820
Content-Length: 442
------------------------------------------------------------------------
send 354 bytes to udp/[172.16.100.32]:5060 at 21:48:29.502215:
------------------------------------------------------------------------
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 172.16.100.32:5060;branch=z9hG4bKc6fd.c55828d7.0
From: "1000"<sip:[email protected]>;tag=f104f441
To: "1003"<sip:[email protected]>
Call-ID: NDkyOTM1YWI4YzhiMGY4MWI0ZDMwYmQzNThjYjE2NzQ.
CSeq: 2 INVITE
User-Agent: FreeSWITCH-mod_sofia/1.8.1+git~20180724×××60524Z~b33bc925c5~64bit
Content-Length: 0
------------------------------------------------------------------------
send 1272 bytes to udp/[172.16.100.251]:5060 at 21:48:30.575115:
------------------------------------------------------------------------
INVITE sip:[email protected]:5060;rinstance=b0fff9289f8fbf0c SIP/2.0
Via: SIP/2.0/UDP 172.16.100.10;rport;branch=z9hG4bKg7X53ye14956r
Max-Forwards: 68
From: "Extension 1000" <sip:[email protected]>;tag=9e7rDt1XcyNZc
To: <sip:[email protected]:5060;rinstance=b0fff9289f8fbf0c>
Call-ID: 326006cf-39da-1237-4983-000c2953a0b0
CSeq: 128519191 INVITE
Contact: <sip:[email protected]:5060>
User-Agent: FreeSWITCH-mod_sofia/1.8.1+git~20180724×××60524Z~b33bc925c5~64bit
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE
Supported: timer, path, replaces
Allow-Events: talk, hold, conference, presence, as-feature-event, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, refer
Content-Type: application/sdp
Content-Disposition: session
Content-Length: 246
X-FS-Support: update_display,send_info
Remote-Party-ID: "Extension 1000" <sip:[email protected]>;party=calling;screen=yes;privacy=off
------------------------------------------------------------------------
recv 318 bytes from udp/[172.16.100.251]:5060 at 21:48:30.634089:
------------------------------------------------------------------------
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 172.16.100.10;rport=5060;branch=z9hG4bKg7X53ye14956r
To: <sip:[email protected]:5060;rinstance=b0fff9289f8fbf0c>
From: "Extension 1000" <sip:[email protected]>;tag=9e7rDt1XcyNZc
Call-ID: 326006cf-39da-1237-4983-000c2953a0b0
CSeq: 128519191 INVITE
Content-Length: 0
------------------------------------------------------------------------
recv 399 bytes from udp/[172.16.100.251]:5060 at 21:48:30.634221:
------------------------------------------------------------------------
SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 172.16.100.10;rport=5060;branch=z9hG4bKg7X53ye14956r
Contact: <sip:[email protected]:5060;rinstance=b0fff9289f8fbf0c>
To: <sip:[email protected]:5060;rinstance=b0fff9289f8fbf0c>;tag=77eb678a
From: "Extension 1000"<sip:[email protected]>;tag=9e7rDt1XcyNZc
Call-ID: 326006cf-39da-1237-4983-000c2953a0b0
CSeq: 128519191 INVITE
Content-Length: 0
------------------------------------------------------------------------
-
内線1002を使用して1004にダイヤルします
1000〜1003の通話状態で、内線1002を使用して1004にダイヤルすると、172.16.100.11(FS2)ノードは内線1002から「INVITE」メッセージを受信し、内線1004への「INVITE」メッセージを開始します。メッセージ追跡は次のとおりです。 (注:SDPを削除し、メッセージの一部を省略してください):
recv 1935 bytes from udp/[172.16.100.32]:5060 at 21:54:32.072291:
------------------------------------------------------------------------
INVITE sip:[email protected] SIP/2.0
Record-Route: <sip:172.16.100.32;lr;ftag=0HIj01pcT;did=cdf.8df222c6>
Via: SIP/2.0/UDP 172.16.100.32:5060;branch=z9hG4bKc54a.a53a6847.0
Via: SIP/2.0/UDP 172.16.100.251:64242;received=172.16.100.251;branch=z9hG4bK.m5Jiasf70;rport=64242
From: <sip:[email protected]>;tag=0HIj01pcT
To: sip:[email protected]
CSeq: 21 INVITE
Call-ID: LJD8EMDXo0
Max-Forwards: 69
Supported: replaces, outbound
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO, UPDATE
Content-Type: application/sdp
Content-Length: 898
Contact: <sip:[email protected]:64242;transport=udp>;+sip.instance="<urn:uuid:bcb91990-4d9b-47ea-8ba8-3af172d27fce>"
User-Agent: Linphone Desktop/4.1.1 (belle-sip/1.6.3)
Proxy-Authorization: Digest realm="sofia.superpipi.cn", nonce="771a93e4-504d-410e-b5ca-4b927a297b61", algorithm=MD5, username="1002", uri="sip:[email protected]", response="ed40318d6162ef2a623f8f3049995a99", cnonce="3zQAEkGGvoZhNjcE", nc=00000001, qop=auth
------------------------------------------------------------------------
send 308 bytes to udp/[172.16.100.32]:5060 at 21:54:32.098044:
------------------------------------------------------------------------
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 172.16.100.32:5060;branch=z9hG4bKc54a.a53a6847.0
From: <sip:[email protected]>;tag=0HIj01pcT
To: sip:[email protected]
Call-ID: LJD8EMDXo0
CSeq: 21 INVITE
User-Agent: FreeSWITCH-mod_sofia/1.8.1+git~20180724×××60524Z~b33bc925c5~64bit
Content-Length: 0
------------------------------------------------------------------------
send 1427 bytes to udp/[172.16.100.110]:6060 at 21:54:33.154929:
------------------------------------------------------------------------
INVITE sip:[email protected]:6060 SIP/2.0
Via: SIP/2.0/UDP 172.16.100.11;rport;branch=z9hG4bKecU1j8vy36H9r
Max-Forwards: 68
From: "Extension 1002" <sip:[email protected]>;tag=v4c83jm6gtF0H
To: <sip:[email protected]:6060>
Call-ID: 0a7d51fd-39db-1237-2d8d-000c29916959
CSeq: 128519372 INVITE
Contact: <sip:[email protected]:5060>
User-Agent: FreeSWITCH-mod_sofia/1.8.1+git~20180724×××60524Z~b33bc925c5~64bit
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE
Supported: timer, path, replaces
Allow-Events: talk, hold, conference, presence, as-feature-event, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, refer
Content-Type: application/sdp
Content-Disposition: session
Content-Length: 455
X-FS-Support: update_display,send_info
Remote-Party-ID: "Extension 1002" <sip:[email protected]>;party=calling;screen=yes;privacy=off
------------------------------------------------------------------------
recv 378 bytes from udp/[172.16.100.110]:6060 at 21:54:33.338614:
------------------------------------------------------------------------
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 172.16.100.11;rport=5060;branch=z9hG4bKecU1j8vy36H9r
From: "Extension 1002" <sip:[email protected]>;tag=v4c83jm6gtF0H
To: <sip:[email protected]:6060>
Call-ID: 0a7d51fd-39db-1237-2d8d-000c29916959
CSeq: 128519372 INVITE
Allow: INVITE, ACK, OPTIONS, BYE, CANCEL, REFER, NOTIFY, INFO, PRACK, UPDATE, MESSAGE
Content-Length: 0
------------------------------------------------------------------------
recv 349 bytes from udp/[172.16.100.31]:5062 at 21:54:33.541289:
------------------------------------------------------------------------
OPTIONS sip:172.16.100.11 SIP/2.0
Via: SIP/2.0/UDP 172.16.100.31:5062;branch=z9hG4bKe86c.f1b595f2.0
To: sip:172.16.100.11
From: <sip:dispatcher@localhost>;tag=5f8cfd923bd21a2d7f298654cd327b22-a1e0
CSeq: 14 OPTIONS
Call-ID: [email protected]
Max-Forwards: 70
Content-Length: 0
User-Agent: OpenSIPS (2.4.2 (x86_64/linux))
------------------------------------------------------------------------
send 735 bytes to udp/[172.16.100.31]:5062 at 21:54:33.542155:
------------------------------------------------------------------------
SIP/2.0 200 OK
Via: SIP/2.0/UDP 172.16.100.31:5062;branch=z9hG4bKe86c.f1b595f2.0
From: <sip:dispatcher@localhost>;tag=5f8cfd923bd21a2d7f298654cd327b22-a1e0
To: <sip:172.16.100.11>;tag=XD605D59D35jD
Call-ID: [email protected]
CSeq: 14 OPTIONS
Contact: <sip:172.16.100.11>
User-Agent: FreeSWITCH-mod_sofia/1.8.1+git~20180724×××60524Z~b33bc925c5~64bit
Accept: application/sdp
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE
Supported: timer, path, replaces
Allow-Events: talk, hold, conference, presence, as-feature-event, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, refer
Content-Length: 0
------------------------------------------------------------------------
5、追記
OpenSIPSはkeepalivedを使用して高可用性のためにアクティブとスタンバイを切り替え、FreeSWITCHでの負荷分散の実験は完了しますが、From:<sip:dispatcher @localhost>などの改善が必要な領域がまだいくつかあります。メッセージ、および公式言及されたコールのIPアドレスは、OpenSIPS IPの問題、OpenSIPSプロキシメディアの問題、およびOpenSIPS可用性検出スクリプトにのみ記録できます。
つまり、FreeSWITCHの作成とアプリケーションでは、高可用性ソリューションを検討する必要があります。前のトスノートでは、キープアライブを介したFreeSWITCHアクティブ/スタンバイ切り替えの高可用性を紹介しました。ここでは、負荷分散の高可用性メソッドを紹介します。 。あなたは尋ねるかもしれません:主に私がキープアライブに少し精通していて、「キープアライブ+検出スクリプト」の切り替え効率も非常に高いので、アクティブ/スタンバイ切り替えの高可用性のために公式の「Corosync + Pacemaker」メソッドを使用してみませんか。