नया पीबीएक्स चुनते समय मुख्य मानदंडों में से एक विश्वसनीयता, गलती सहिष्णुता और अनावश्यक प्रणालियों की संभावना है। छोटी और मध्यम आकार की कंपनियों में आमतौर पर 24 घंटे के भीतर ठीक होने की क्षमता के साथ एक साधारण बैकअप होता है, जबकि बड़ी कंपनियों के लिए यह बहुत महत्वपूर्ण होता है और एक साधारण टेलीफोन कनेक्शन का कोई सवाल नहीं हो सकता है। एक कंपनी आमतौर पर इस पर बहुत सारे संसाधन और पैसा खर्च करती है। DIGIUM R800 और R850 के आगमन के साथ, तारांकन चिह्न E1 / T1 / BRI और FXO लाइनों के पूर्ण PSTN अतिरेक के साथ वास्तव में विश्वसनीय प्रणाली बन जाता है। दो सर्वर Asterisk और R850 की स्थापना और विन्यास के कैट विवरण के तहत।
इस परियोजना के लिए हमें लोहे की आवश्यकता है:
- सर्वर, उबंटू 10.04 - 2 पीसी (रेजरियों के वर्तमान संस्करण के लिए, डिगियम बिल्कुल उबंटू 10.04 या सेंटी 5.6 का उपयोग करने की सलाह देता है)
- Digium R850 - 1 पीसी।
- Digium TE420 बोर्ड - 2 पीसी।
- यूएसबी फ्लैश ड्राइव (न्यूनतम 1 जीबी) -2 पीसी।
हमारे सिस्टम का लेआउट कुछ इस तरह होगा

जैसा कि आप आरेख में देख सकते हैं, R850 लोहे का टुकड़ा संचार प्रदाता से स्ट्रीम प्राप्त करेगा और उन्हें 2 तारांकन सर्वर पर भेज देगा। सर्वर की स्थिति के आधार पर, R850 सर्वर के बीच प्रवाह को स्विच करेगा, इसके लिए यह यूएसबी पोर्ट के साथ भी जुड़ा हुआ है।

R850 कनेक्शन:
- हम मास्टर सर्वर बोर्ड में प्राथमिक ई 1 को जोड़ते हैं
- हम सेकेंडरी E1 को स्लेव सर्वर बोर्ड से जोड़ते हैं
- प्राथमिक USB मास्टर सर्वर के लिए
- सेकेंडरी USB टू स्लेव सर्वर
- USB कंसोल (वैकल्पिक)
R850 एक यूएसबी पोर्ट द्वारा संचालित है, और जैसे ही आप इसे सर्वर से कनेक्ट करते हैं, इसे चालू करना चाहिए। नए USB उपकरणों के लिए सिस्टम की जाँच करना
रूट @ ubuntu: ~ # lsusb
बस 007 डिवाइस 003: आईडी 10c4: ea60 Cygnal एकीकृत उत्पाद, इंक। CP210x समग्र उपकरण
सब कुछ जो नीचे लिखा गया है, दोनों सर्वरों पर किया जाना चाहिए!R850 के लिए सर्वर तैयार करना
आर-सीरीज़ के लिए सॉफ्टवेयर इंस्टॉलेशन:
स्थापना से पहले, आपको USB पोर्ट से R850 को डिस्कनेक्ट करने की आवश्यकता है।
cd /usr/src wget http://downloads.digium.com/pub/telephony/rseries/rseries-current.tar.gz tar zxvf rseries-current.tar.gz cd rseries-XXX make && make install
अगला, R850 को फिर से सर्वर से कनेक्ट करें और जांचें
./rtest.sh info /dev/rseries0
इस तरह का जवाब मिलना चाहिए
R-Series hardware is detected! Firmware version: 5 Serial number: DM96137330014 Product number: R850 Ports: 8 ID Switch: 0 Watchdog Timeout (get): 5 Control mode: 1 Port 1: 0, primary, T1/E1 Port 2: 0, primary, T1/E1 Port 3: 0, primary, T1/E1 Port 4: 0, primary, T1/E1 Port 5: 0, primary, T1/E1 Port 6: 0, primary, T1/E1 Port 7: 0, primary, T1/E1 Port 8: 0, primary, T1/E1
R850 के पूर्ण परीक्षण के लिए, आप चला सकते हैं ।/rtest.sh परीक्षण / dev / rseries0 लोहे का टुकड़ा सेकंड के एक जोड़े के लिए प्रवाह स्विच करेगा और उसी समय पर क्लिक करेगा।
Pacemaker, Corosync, और DRBD के आधार पर सिस्टम क्लस्टरिंग को कॉन्फ़िगर करें
DRBD एक ब्लॉक डिवाइस है जो स्थानीय ब्लॉक डिवाइस और रिमोट डिवाइस के बीच सिंक्रोनाइजेशन (RAID1) प्रदान करता है। हमारे मामले में, मैं 2 फ्लैश ड्राइव का उपयोग करूंगा।
DRBD के लिए कुकिंग फ्लैश ड्राइव
1) हटाएं (ध्यान से मेरे पास एक फ्लैश ड्राइव है / देव / एसडीबी आपके पास एक अलग ड्राइव हो सकती है)
dd if=/dev/zero of=/dev/sdb bs=1M
2) एक 1GB विभाजन बनाएँ। (आप कर सकते हैं और अधिक)
fdisk /dev/sdb
आगे n, p, 1, 1, + 1024M
3) Pacemaker, Corosync और DRBD स्थापित करें
apt-get install drbd8-utils apt-get install corosync pacemaker
4) कॉन्फ़िगर स्थापित करें
cd /usr/src/rseries-XXX/ make samples
यदि आपको कोई संदेश मिलता है
Not installing /etc/corosync/corosync.conf (already exists)
फिर इसे अपने हाथों से कॉपी करें।
cp configs/corosync/corosync.conf /etc/corosync/corosync.conf
उठना शुरू हो गया
1) संपादित करें /etc/drbd.d/asterisk.res, अपने डेटा, ई-मेल, आईपी डिस्क और होस्टनाम में बदलाव करें, मैंने astnode1 और astnode2 को छोड़ दिया और यह इस तरह निकला:
resource asterisk { handlers { split-brain "/usr/lib/drbd/notify-split-brain.sh adm@pbxware.ru"; } net { after-sb-0pri discard-younger-primary; after-sb-1pri discard-secondary; after-sb-2pri disconnect; } on astnode1 { device /dev/drbd0; disk /dev/sdb1; address 192.168.1.253:7789; meta-disk internal; } on astnode2 { device /dev/drbd0; disk /dev/sdb1; address 192.168.1.252:7789; meta-disk internal; } }
2) सर्वर (आदि / hostname) के आधार पर होस्ट को बदलें
पहली मशीन पर hostname astnode1 - और
hostname astnode2 - दूसरे पर
3) एक नया ब्लॉक डिवाइस बनाएं
drbdadm create-md asterisk
यदि सब कुछ सही ढंग से कॉन्फ़िगर किया गया है तो प्राप्त करें
…. New drbd meta data block successfully created.
अब आप DRDB चला सकते हैं
/etc/init.d/drbd start * Starting DRBD resources [ d(asterisk) n(asterisk) ] [ OK ]
निम्नलिखित कदम केवल मुख्य सर्वर astnode1 पर किए जाने की आवश्यकता हैDRBD पर एक विभाजन बनाएँ
drbdadm disconnect asterisk drbdadm -- --clear-bitmap new-current-uuid asterisk drbdadm -- --overwrite-data-of-peer primary asterisk mkfs.ext3 -m0 /dev/drbd0 drbdadm secondary asterisk drbdadm detach asterisk drbdadm up asterisk
पहले सर्वर astnode1 पर जाँच करें
drbdadm primary asterisk mkdir /mnt/asterisk mount -t ext3 /dev/drbd0 /mnt/asterisk cd /mnt/asterisk touch test ls
यदि परीक्षण फ़ाइल है, तो सब कुछ योजना के अनुसार होता है, ड्रब को अक्षम करें
cd umount /mnt/asterisk drbdadm secondary asterisk
अब दूसरे सर्वर astnode2 पर जांचें
drbdadm primary asterisk mkdir /mnt/asterisk mount -t ext3 /dev/drbd0 /mnt/asterisk cd /mnt/asterisk ls
यहां हमें परीक्षण फ़ाइल भी देखनी चाहिए, फिर:
cd umount /mnt/asterisk drbdadm secondary asterisk
इस बिंदु पर, हमारा सिस्टम एस्टेरिस्क, डाहडी और लिबप्रआई स्थापित करने के लिए तैयार है।
मुख्य सर्वर astnode1 पर हम आवश्यक फाइलें और लिंक बनाते हैं:
cd /usr/src/rseries-1.0.0/ drbdadm primary asterisk mount -t ext3 /dev/drbd0 /mnt/asterisk ./createlinks.sh
Asterisk, DAHDI और LibPRI स्थापित करें
पहले सर्वर पर स्थापना astnode11) DAHDI और तारांकन के निर्माण के लिए आवश्यक पैकेजों को स्थापित करना
aptitude install mc htop iftop linux-headers-`uname -r` build-essential subversion libncurses5-dev libssl-dev libxml2-dev vim-nox libsqlite3-dev sqlite3 libnewt-dev
2) Asterisk, DAHDI और LibPRI डाउनलोड करें
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-2.6.1+2.6.1.tar.gz wget http://downloads.asterisk.org/pub/telephony/certified-asterisk/certified-asterisk-1.8.11-current.tar.gz wget http://downloads.asterisk.org/pub/telephony/libpri/releases/libpri-1.4.10.tar.gz
3) अनपैक
tar -zxvf libpri-1.4.10.tar.gz tar -zxvf certified-asterisk-1.8.11-current.tar.gz tar -zxvf dahdi-linux-complete-2.6.1+2.6.1.tar.gz
4) हम इकट्ठा करते हैं
cd libpri-1.4.10 make && make install cd ../dahdi-linux-complete-2.6.1+2.6.1/ make && make install && make config cd ../certified-asterisk-1.8.11-cert8/ ./configure && make && make install && make samples
सफल स्थापना के बाद
umount /mnt/asterisk/ drbdadm secondary asterisk
हम दूसरे सर्वर astnode2 पर इंस्टॉलेशन के लिए पास होते हैं cd /usr/src/rseries-1.0.0/ drbdadm primary asterisk mount -t ext3 /dev/drbd0 /mnt/asterisk ./createlinks.sh
यहां स्क्रिप्ट जवाब देगी कि पहले से ही ऐसे फ़ोल्डर हैं, इसलिए यह होना चाहिए।
दूसरे सर्वर पर स्थापना लगभग पहले के समान है, हम तारांकन के लिए नमूने बनाने के अलावा सब कुछ करते हैं।
एक दूसरे astnode2 सर्वर पर स्थापित करना1) DAHDI और तारांकन के निर्माण के लिए आवश्यक पैकेजों को स्थापित करना
aptitude install mc htop iftop linux-headers-`uname -r` build-essential subversion libncurses5-dev libssl-dev libxml2-dev vim-nox libsqlite3-dev sqlite3 libnewt-dev
2) Asterisk, DAHDI और LibPRI डाउनलोड करें
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-2.6.1+2.6.1.tar.gz wget http://downloads.asterisk.org/pub/telephony/certified-asterisk/certified-asterisk-1.8.11-current.tar.gz wget http://downloads.asterisk.org/pub/telephony/libpri/releases/libpri-1.4.10.tar.gz
3) अनपैक
tar -zxvf libpri-1.4.10.tar.gz tar -zxvf certified-asterisk-1.8.11-current.tar.gz tar -zxvf dahdi-linux-complete-2.6.1+2.6.1.tar.gz
4) हम इकट्ठा करते हैं
cd libpri-1.4.10 make && make install cd ../dahdi-linux-complete-2.6.1+2.6.1/ make && make install && make config cd ../certified-asterisk-1.8.11-cert8/ ./configure && make && make install
सफल स्थापना के बाद
umount /mnt/asterisk/ drbdadm secondary asterisk
दोनों सर्वरों पर Corosync के साथ आरंभ करना
vim /etc/corosync/corosync.conf
हम सर्वर और bindnetaddr के हमारे IP पतों के अनुसार सदस्यपद पर शासन करते हैं
यहाँ मेरा विन्यास है:
totem { version: 2 token: 3000 token_retransmits_before_loss_const: 10 join: 60 consensus: 5000 vsftype: none max_messages: 20 clear_node_high_bit: yes secauth: off threads: 0 rrp_mode: none interface { ringnumber: 0 bindnetaddr: 192.168.1.0 broadcast: yes mcastport: 5405 member { memberaddr: 192.168.1.253 } member { memberaddr: 192.168.1.252 } } } aisexec { user: root group: root } logging { fileline: off to_stderr: yes to_logfile: no to_syslog: yes syslog_facility: daemon debug: off timestamp: on logger_subsys { subsys: AMF debug: off tags: enter|leave|trace1|trace2|trace3|trace4|trace6 } } amf { mode: disabled }
अगला, / etc / डिफ़ॉल्ट / corosync START = नहीं से START = हाँ में बदलें
हम शुरू करते हैं
/etc/init.d/corosync start * Starting corosync daemon corosync [ OK ]
पेसमेकर सेटअप
आपको इसे केवल पहले astnode1 सर्वर पर कॉन्फ़िगर करने की आवश्यकता हैRseries-1.0.0 में इसे स्थापित करने का एक उदाहरण है, हम इसे संपादित करेंगे
vim /usr/src/rseries-1.0.0/configs/pacemaker/pacemaker.cfg
मैंने इसमें गेटवेस्टैटस गेटवे और ओईएफ के केवल आईपी पते को बदल दिया: दिल की धड़कन: मेरे एसआईपी फोन का आईपीएड्रा 2 आईपी पता।
config:
node astnode1 node astnode2 primitive Asterisk ocf:Digium:asterisk \ op monitor interval="5" primitive Asterisk_drbd ocf:linbit:drbd \ params drbd_resource="asterisk" \ op monitor start-delay="10" interval="5" primitive Asterisk_fs ocf:heartbeat:Filesystem \ params device="/dev/drbd/by-res/asterisk" directory="/mnt/asterisk/" fstype="ext3" primitive ClusterIP ocf:heartbeat:IPaddr2 \ params ip="192.168.1.109" cidr_netmask="32" \ op monitor interval="5" primitive GatewayStatus ocf:pacemaker:ping \ params host_list="192.168.1.1" multiplier="100" \ op monitor interval="5" timeout="10" primitive rseries0 ocf:Digium:rseries \ params tty="/dev/rseries0" \ op monitor interval="10" role="Master" \ op monitor interval="60" role="Slave" ms Asterisk_ms Asterisk_drbd \ meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true" ms rseries0_ms rseries0 \ meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" target-role="Master" clone GatewayStatusClone GatewayStatus location Asterisk-with-ping Asterisk \ rule $id="Asterisk-with-ping-rule" -inf: not_defined pingd or pingd lte 0 colocation Everything-with-Asterisk inf: ( rseries0_ms:Master Asterisk_ms:Master ) ( ClusterIP Asterisk_fs ) Asterisk order Asterisk-after-Everything inf: ( rseries0_ms:promote Asterisk_ms:promote ) ( ClusterIP Asterisk_fs ) Asterisk:start property $id="cib-bootstrap-options" \ cluster-infrastructure="openais" \ expected-quorum-votes="2" \ stonith-enabled="false" \ no-quorum-policy="ignore" rsc_defaults $id="rsc-options" \ resource-stickiness="99"
पेसमेकर के लिए विन्यास लागू करें
cd /usr/src/rseries-1.0.0/ crm configure load update configs/pacemaker/pacemaker.cfg
दूसरे सर्वर पर करने के लिए कुछ भी नहीं है।R850 सेटअप
कॉन्फ़िगर करने के लिए, R850 पर कंसोल पोर्ट और उदाहरण के लिए दास-एस्टनोड 2 से केबल का उपयोग करें
minicom -s +-----------------------------------------------------------------------+ | A - Serial Device : /dev/ttyUSB0 | | B - Lockfile Location : /var/lock | | C - Callin Program : | | D - Callout Program : | | E - Bps/Par/Bits : 115200 8N1 | | F - Hardware Flow Control : No | | G - Software Flow Control : No | | | | Change which setting? | +-----------------------------------------------------------------------+
यहां सेटिंग्स का मेनू दिखाई देना चाहिए: E1 के लिए, मैंने इसे इस तरह कॉन्फ़िगर किया है:
Digium R850 Firmware Version: 5 Serial Number: DM96137330014 Port |Mode Passthrough State All | --- --- --- 1 | T1/E1 disabled Input to Primary 2 | T1/E1 disabled Input to Primary 3 | T1/E1 disabled Input to Primary 4 | T1/E1 disabled Input to Primary 5 | T1/E1 disabled Input to Primary 6 | T1/E1 disabled Input to Primary 7 | T1/E1 disabled Input to Primary 8 | T1/E1 disabled Input to Primary Arrow keys or a (left), d (right), w (up) or s (down) to navigate thru menu r to refresh, <enter> to select, c to commit changes o to toggle operational state, xxx to exit menu.
R850 को नियंत्रित करने के लिए आप rseries पैकेज से rctl का भी उपयोग कर सकते हैं, यह आपको फर्मवेयर की जांच और अपडेट करने और डिवाइस का परीक्षण करने की अनुमति देगा।
सिस्टम परीक्षण


सबसे पहले, जांचें कि R850 को पहले तारांकन चिह्न astnode1 में बदल दिया गया है
root@astnode1:~# dahdi_scan [1] active=yes alarms=OK description=T2XXP (PCI) Card 0 Span 1 name=TE2/0/1 manufacturer=Digium devicetype=Wildcard TE220 (5th Gen) location=Board ID Switch 0 basechan=1 totchans=31 irq=0 type=digital-E1 syncsrc=1 lbo=0 db (CSU)/0-133 feet (DSX-1) coding_opts=AMI,HDB3 framing_opts=CCS,CRC4 coding=HDB3 framing=CCS/CRC4 [2] active=yes alarms=OK description=T2XXP (PCI) Card 0 Span 2 name=TE2/0/2 manufacturer=Digium devicetype=Wildcard TE220 (5th Gen) location=Board ID Switch 0 basechan=32 totchans=31 irq=0 type=digital-E1 syncsrc=1 lbo=0 db (CSU)/0-133 feet (DSX-1) coding_opts=AMI,HDB3 framing_opts=CCS,CRC4 coding=HDB3 framing=CCS/CRC4
अलार्म = ठीक है सब कुछ ठीक काम करता है, यदि नहीं, तो मैं आपको बस astnode1 और फिर astnode2 को पुनः आरंभ करने की सलाह देता हूं।
एस्टनोड 1 पर तारांकित दुर्घटना
हत्यारे तारांकन चिह्न चलाएँ
हमें एक लॉग मिलता है
crmd: [810]: info: process_lrm_event: LRM operation Asterisk_monitor_5000 (call=21, rc=7, cib-update=56, confirmed=false) not running …. Nov 9 13:07:19 astnode1 crmd: [810]: info: te_rsc_command: Initiating action 25: start Asterisk_start_0 on astnode1 (local) Nov 9 13:07:19 astnode1 crmd: [810]: info: do_lrm_rsc_op: Performing key=25:7:0:90c9675a-3c31-4e86-9f90-68c13142b377 op=Asterisk_start_0 ) Nov 9 13:07:19 astnode1 lrmd: [807]: info: rsc:Asterisk:23: start
crmd ने तारांकन चिह्न को फिर से शुरू किया है और यह आगे काम करता है, लेकिन कई बार ऐसा होता है जब तारांकन बढ़ जाता है। आइए इस तरह से एक परीक्षा का अनुकरण करने की कोशिश करें:
mv /usr/sbin/asterisk /usr/sbin/asterisk-back killall asterisk
हम लॉग को देखते हैं:
Nov 9 13:10:36 astnode1 pengine: [809]: info: get_failcount: Asterisk has failed 1000000 times on astnode1 Nov 9 13:10:36 astnode1 pengine: [809]: WARN: common_apply_stickiness: Forcing Asterisk away from astnode1 after 1000000 failures (max=1000000) Nov 9 13:10:36 astnode1 pengine: [809]: notice: LogActions: Start Asterisk#011(astnode2)
Asterisk दूसरे सर्वर पर उगता है, R850 क्लिक और स्विच प्रवाह होता है।
सर्वर बिजली की समस्या।
परीक्षण से पहले, मैं काम की स्थिति में astnode1 लौटा, लेकिन धागे दूसरे सर्वर पर बने रहे। आइए देखें कि दूसरे सर्वर पर बिजली बंद होने पर सिस्टम कैसे काम करेगा।
लॉग:
Nov 9 13:20:10 astnode1 crmd: [810]: info: ais_status_callback: status: astnode2 is now lost (was member) Nov 9 13:20:21 astnode1 kernel: [ 937.276823] wct4xxp 0000:06:08.0: Clearing yellow alarm span 1 Nov 9 13:20:21 astnode1 kernel: [ 937.448860] wct4xxp 0000:06:08.0: Clearing yellow alarm span 2
मुझे लगता है कि सब कुछ स्पष्ट है, astnode2 सर्वर दुर्घटनाग्रस्त हो गया और astnode पर धाराएं और तारांकन बढ़ गया। इसके अलावा USB केबल को डिस्कनेक्ट करने और LAN R850 से सर्वर को हमेशा काम करने के लिए डिस्कनेक्ट करने का परीक्षण किया गया।
DIGIUM और नए R850 के लिए धन्यवाद, Asterisk विश्वसनीयता और एप्लिकेशन के एक नए स्तर पर पहुंच गया है। अब क्षुद्रग्रह शांति से सो सकते हैं।