kamailio高可用建設(shè)

在sip業(yè)務(wù)中鳄虱,kamailio算是比較重要的一個(gè)環(huán)節(jié)弟塞;kamailio高可用性建設(shè)也有很多中方案拙已,本文在centos7采用的是虛擬ip漂移keepalived加sipsak的方式進(jìn)行。這樣就可以保證一臺(tái)機(jī)器死掉以后另外一臺(tái)機(jī)器隨著虛擬IP的漂移能繼續(xù)處理業(yè)務(wù)倍踪;另一方面,如果機(jī)器兩臺(tái)機(jī)器都沒(méi)有宕機(jī)建车,而且只是kamailio進(jìn)行掛掉了,也可以通過(guò)sipsak的健康檢查潮罪,來(lái)使虛擬IP漂移,避免出現(xiàn)一臺(tái)只有kamailio掛掉凄杯,機(jī)器還在keepalived還在,然后虛擬ip 不漂移的情況屯碴;

使用的開(kāi)源庫(kù):keepalived + sipsak

 Keepalived 地址:https://github.com/acassen/keepalived.git
 sipsak地址:https://github.com/nils-ohlmeier/sipsak.git

keepalived 安裝編譯安裝腳本:

yum install automake autoconf
yum install gcc openssl-devel libnl3-devel pcre-devel -y
git clone -b v2.1.5 https://github.com/acassen/keepalived.git
cd keepalived/
./autogen.sh
./configure --prefix=/usr/local/keepalived
make && make install
mkdir /etc/keepalived/
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /opt/keepalived/keepalived/keepalived.service /etc/systemd/system/
ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp /opt/keepalived/keepalived/etc/init.d/keepalived /etc/init.d/
systemctl enable keepalived.service

Keepalived 一些相關(guān)操作:

systemctl daemon-reload  #重新加載
systemctl enable keepalived.service  #設(shè)置開(kāi)機(jī)自動(dòng)啟動(dòng)
systemctl disable keepalived.service #取消開(kāi)機(jī)自動(dòng)啟動(dòng)
systemctl start keepalived.service #啟動(dòng)
systemctl stop keepalived.service#停止

vim /lib/systemd/system/keepalived.service#打開(kāi)keepalived.service文件,該文件主要配置keepalived service的內(nèi)容如下:
[Unit]
Description=Keepalived
After=syslog.target network.target remote-fs.target nss-lookup.target
 
[Service]
Type=forking
PIDFile=/var/run/keepalived.pid
ExecStart=/usr/local/keepalived/sbin/keepalived -D
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target



ip addr #可以用此看到虛擬ip

sipsak編譯安裝:

cd sipsak
autoreconf --install
./configure
make
make install

主用服務(wù)配置keepalived.conf膊存,該文件默認(rèn)在/etc/keepalived/目錄下:

! Configuration File for keepalived
  
   global_defs {
      notification_email {
       # acassen@firewall.loc
        #failover@firewall.loc
        #sysadmin@firewall.loc
      }
      #notification_email_from Alexandre.Cassen@firewall.loc
     #smtp_server 192.168.200.1
    # smtp_connect_timeout 30
     router_id LVS_DEVEL
     script_user root
     enable_script_security
     vrrp_skip_check_adv_addr
     vrrp_strict
    vrrp_garp_interval 0
  }
 vrrp_script  check_sip {
     script "/etc/keepalived/node01.sh" #sipsak 腳本
     interval 10
 }
 vrrp_instance VI_1 {
      state MASTER#主用標(biāo)識(shí)
      interface eth0
      virtual_router_id 51
      priority 100#權(quán)重
      advert_int 1
      authentication {
          auth_type PASS
          auth_pass 1111
      }
      virtual_ipaddress {
        10.10.74.200#虛擬ip
      }
      track_script {
        check_sip#調(diào)用腳本函數(shù)
      }
  }

node01.sh 腳本內(nèi)容:

   #!/bin/bash
  
   node01=10.10.74.186#主用KA服務(wù)器的地址
   node02=10.10.74.105#備用KA服務(wù)器的地址
   return_code=0 # success
  
   # check local instance
   timeout 5 sipsak -s sip:$node01:5060
   exit_status=$?
   if [[ $exit_status -eq 0 ]]; then
     echo "sip ping successful to node01 [$node01]"
     exit $return_code
   fi
 
   # local instance failed, check remote
   timeout 2 sipsak -s sip:$node02:5060
   exit_status=$?
   if [[ $exit_status -eq 0 ]]; then
     echo "sip ping successful to node02 [$node02]"
     return_code=1
   fi
 
   echo "return code [$return_code]"
  
   exit $return_code

備用服務(wù)配置keepalived.conf隔崎,該文件默認(rèn)在/etc/keepalived/目錄下:

! Configuration File for keepalived
  
   global_defs {
      notification_email {
       # acassen@firewall.loc
        #failover@firewall.loc
        #sysadmin@firewall.loc
      }
      #notification_email_from Alexandre.Cassen@firewall.loc
     #smtp_server 192.168.200.1
    # smtp_connect_timeout 30
     router_id LVS_DEVEL
     script_user root
     enable_script_security
     vrrp_skip_check_adv_addr
     vrrp_strict
    vrrp_garp_interval 0
  }
 vrrp_script  check_sip {
     script "/etc/keepalived/node02.sh" #sipsak 腳本
     interval 10
 }
 vrrp_instance VI_1 {
      state BACKUP#備用標(biāo)識(shí)
      interface eth0
      virtual_router_id 51
      priority 50#權(quán)重
      advert_int 1
      authentication {
          auth_type PASS
          auth_pass 1111
      }
      virtual_ipaddress {
        10.10.74.200#虛擬ip
      }
      track_script {
        check_sip#調(diào)用腳本函數(shù)
      }
  }

node02.sh 腳本內(nèi)容:

   #!/bin/bash
  
   node01=10.10.74.186#主用KA服務(wù)器的地址
   node02=10.10.74.105#備用KA服務(wù)器的地址
   return_code=1 # fail
  
   # check local instance
   timeout 5 sipsak -s sip:$node01:5060
   exit_status=$?
   if [[ $exit_status -eq 0 ]]; then
     echo "sip ping successful to node01 [$node01]"
     exit $return_code
   fi
 
   # local instance failed, check remote
   timeout 2 sipsak -s sip:$node02:5060
   exit_status=$?
   if [[ $exit_status -eq 0 ]]; then
     echo "sip ping successful to node02 [$node02]"
     return_code=1
   fi
 
   echo "return code [$return_code]"
  
   exit $return_code
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末爵卒,一起剝皮案震驚了整個(gè)濱河市虚缎,隨后出現(xiàn)的幾起案子钓株,更是在濱河造成了極大的恐慌,老刑警劉巖轴合,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異题涨,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)纲堵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)婉支,“玉大人,你說(shuō)我怎么就攤上這事向挖。” “怎么了何之?”我有些...
    開(kāi)封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵跟畅,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我溶推,道長(zhǎng)徊件,這世上最難降的妖魔是什么蒜危? 我笑而不...
    開(kāi)封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮辐赞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘响委。我一直安慰自己,他們只是感情好赘风,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布邀窃。 她就那樣靜靜地躺著荸哟,像睡著了一般瞬捕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上山析,一...
    開(kāi)封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天笋轨,我揣著相機(jī)與錄音,去河邊找鬼爵政。 笑死仅讽,一個(gè)胖子當(dāng)著我的面吹牛钾挟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播掺出,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼汤锨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼双抽!你這毒婦竟也來(lái)了闲礼?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤慎菲,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后露该,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體琳疏,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年空盼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片台汇。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡篱瞎,死狀恐怖苟呐,靈堂內(nèi)的尸體忽然破棺而出俐筋,到底是詐尸還是另有隱情,我是刑警寧澤澄者,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布请琳,位于F島的核電站赠幕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏榕堰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一圾旨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧碳胳,春花似錦沫勿、人聲如沸挨约。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蔓挖。三九已至,卻和暖如春瘟判,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拷获。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工匆瓜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赢笨,地道東北人驮吱。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像左冬,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拇砰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容