• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Pacemaker的FreeSWITCH高可用解決方案

      2014-09-17 14:40:02曾曉娟
      電腦知識(shí)與技術(shù) 2014年22期
      關(guān)鍵詞:解決方案

      曾曉娟

      摘要:該文主要采用corosync+pacemaker+mysql技術(shù)方案,詳細(xì)介紹了安裝與配置策略,避免了傳統(tǒng)的高可用集群的解決方案的弊端,提高了配置的彈性,從而使功能多元化。

      關(guān)鍵詞:Pacemaker;FreeSWITCH;高可用;解決方案

      中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)22-5365-05

      本文主要采用corosync+pacemaker+mysql技術(shù)方案,并詳細(xì)介紹了安裝與配置策略,避免了傳統(tǒng)的高可用集群的解決方案的弊端,提高了配置的彈性,從而使功能多元化。

      1 技術(shù)方案

      1.1 Linux HA應(yīng)用方案選擇

      Linux HA社區(qū)的早期方案heartbeat+pacemaker, 由于heartbeat項(xiàng)目官方已經(jīng)停止開發(fā),所以不再采用。CentOS 6.4之后,官方改用CMAN+Pacemaker,但是應(yīng)用還不廣泛。所以采用目前最主流成熟的corosync+pacemaker+mysql方案,系統(tǒng)CentOS 6.3。

      1.2雙機(jī)熱備形式

      Active/Standby方式是傳統(tǒng)的雙機(jī)熱備份解決方案,主機(jī)運(yùn)行時(shí),備機(jī)或備機(jī)資源處于offline狀態(tài),當(dāng)主機(jī)故障時(shí),備機(jī)馬上啟動(dòng)將服務(wù)接替。典型的實(shí)現(xiàn)是通過應(yīng)用(例如pacemaker)來監(jiān)測(cè)集群結(jié)點(diǎn)的資源狀態(tài),恢復(fù)備機(jī)資源。 Active/Active 方式是集群所有節(jié)點(diǎn)同時(shí)在線,同時(shí)提供所有資源和服務(wù),某個(gè)節(jié)點(diǎn)故障時(shí),用戶服務(wù)實(shí)時(shí)轉(zhuǎn)移到其他備機(jī)。

      1.3存儲(chǔ)方案選擇

      存儲(chǔ)方式主要有二種方案:基于共享存儲(chǔ)(磁盤陣列)的方式、全冗余(雙機(jī)雙存儲(chǔ))方式。

      1) 基于共享存儲(chǔ)(磁盤陣列)的方式

      這種方式因?yàn)槭褂靡慌_(tái)存儲(chǔ)設(shè)備,往往被業(yè)內(nèi)人士稱為磁盤單點(diǎn)故障。一般來講存儲(chǔ)的安全性較高, 這種方式也是業(yè)內(nèi)采用最多的熱備方式。但存儲(chǔ)作為雙機(jī)熱備中唯一存儲(chǔ)數(shù)據(jù)的設(shè)備,它一旦發(fā)生故障往往會(huì)造成雙機(jī)熱備系統(tǒng)全面崩潰。

      2) 全冗余(雙機(jī)雙存儲(chǔ))方式

      這種方式實(shí)現(xiàn)了存儲(chǔ)的HA,特點(diǎn)包括:

      1) 兩個(gè)數(shù)據(jù)庫之間的同步是完全實(shí)時(shí)的,不存在任何時(shí)間延時(shí)。

      2) 服務(wù)器的切換,不影響存儲(chǔ)之間的初始化,增量同步及數(shù)據(jù)復(fù)制。

      2 基于Corosync/Pacemaker 的HA工作原理

      2.1 Corosync

      Corosync主要負(fù)責(zé)不同節(jié)點(diǎn)之間的通信, 它使用集群協(xié)議(Totem), 通過UDP完成通信(端口5405, 如果使用防火墻,請(qǐng)注意開放此端口), 它默認(rèn)工作在多播模式下, 1.4.2以后版本也支持單播模式. Pacemaker使用Corosync作為消息通信服務(wù)。

      2.2 Pacemaker

      Pacemaker(直譯:心臟起搏器),是一個(gè)集群資源管理器。它實(shí)現(xiàn)了集群資源級(jí)故障檢測(cè)和恢復(fù),它本身還需依賴其他集群基礎(chǔ)工具(如Corosync或Heaerbeat)所提供的消息通信和成員關(guān)系的能力。它可以做乎任何規(guī)模的集群,管理員能夠準(zhǔn)確地實(shí)施集群結(jié)點(diǎn)間資源的運(yùn)行關(guān)系(包括順序和位置)。Pacemaker主要通過Resource Agents來實(shí)現(xiàn)資源的啟動(dòng),停止,監(jiān)測(cè)等功能。

      2.2.1 LSB(Linux Standard Base) Resources Agents

      這是由操作系統(tǒng)提供,放在/etc/init.d下面的各種services,services(Script)必須符合LSB規(guī)范才能被Pacemaker 兼容。查看當(dāng)前集群系統(tǒng)所支持的LSB資源:

      2.2.2 OCF(Open Clustering Framework) Resources Agents

      OCF是LSB規(guī)范的擴(kuò)展,放在/usr/lib/ocf/resource.d/xxx。查看當(dāng)前集群系統(tǒng)所支持的OCF資源:

      crm(live)ra# list ocf heartbeat;CTDB Delay Dummy Filesystem IPaddr IPaddr2 IPsrcaddr LVM MailTo Route SendArp Squid VirtualDomain Xinetd apache conntrackd dhcpd

      2.3 查看某個(gè)資源的配置方法

      crm(live)ra# info ocf:heartbeat:IPaddr2;Manages virtual IPv4 and IPv6 addresses (Linux specific version) (ocf:heartbeat:IPaddr2);ip* (string): IPv4 or IPv6 address

      The IPv4 (dotted quad notation) or IPv6 address (colon hexadecimal notation)

      example IPv4 "192.168.1.1".; example IPv6 "2001:db8:DC28:0:0:FC57:D4C8:1FFF".

      nic (string): Network interface

      2.4 確保資源在同一個(gè)節(jié)點(diǎn)運(yùn)行

      當(dāng)我們?cè)诩褐信渲昧硕鄠€(gè)資源后,可能會(huì)出現(xiàn)不同資源運(yùn)行在不同結(jié)點(diǎn)上,比如我們配置了freeswitch 和虛擬ip 兩個(gè)資源,結(jié)果分別運(yùn)行在主機(jī)和備機(jī)上,因?yàn)閜acemaker默認(rèn)會(huì)在集群中盡量分散資源。這對(duì)我們部署應(yīng)用來說是不成立的,即此兩者資源必須同時(shí)運(yùn)行在某節(jié)點(diǎn)上。有兩種方法可以解決,一種是定義組資源,將freeswitch與虛擬 Ip同時(shí)加入一個(gè)組中,可以實(shí)現(xiàn)將資源運(yùn)行在同節(jié)點(diǎn)上,另一種是定義資源約束 (colocation constraint)可實(shí)現(xiàn)將資源運(yùn)行在同一節(jié)點(diǎn)上。我們先來說定義組資源。

      2.5 定義組資源

      crm(live)# configure

      crm(live)configure# group cluster_services fs-ip fs;crm(live)configure# show

      primitive fs-ip ocf:heartbeat:IPaddr2 \; params ip="10.74.10.200" nic="eth0:0" cidr_netmask="24" \; op monitor interval="2s";group cluster_services fs-ip fs;location cli-prefer-cluster_services cluster_services \;

      2.5.1 定義資源約束

      資源約束則用以指定在哪些群集節(jié)點(diǎn)上運(yùn)行資源,以何種順序裝載資源,以及特定資源依賴于哪些其它資源,可以更靈活的配置集群的資源運(yùn)行方式。pacemaker共給我們提供了三種資源約束方法:

      Resource Location(資源位置):定義資源可以、不可以或盡可能在哪些節(jié)點(diǎn)上運(yùn)行;Resource Collocation(資源排列):排列約束用以定義集群資源可以或不可以在某個(gè)節(jié)點(diǎn)上同時(shí)運(yùn)行;

      Resource Order(資源順序):順序約束定義集群資源在節(jié)點(diǎn)上啟動(dòng)的順序;定義約束時(shí),還需要指定分?jǐn)?shù)。各種分?jǐn)?shù)是集群工作方式的重要組成部分,在計(jì)算出資源分?jǐn)?shù)后,集群選擇分?jǐn)?shù)最高的節(jié)點(diǎn);對(duì)于freeswitch, 虛擬ip的例子,可以簡(jiǎn)單配置如下,并檢查狀態(tài):

      crm(live)configure# colocation fs-with-ip INFUNTY: fs-ip fs

      我們還得確保freeswitch在某節(jié)點(diǎn)啟動(dòng)之前得先啟動(dòng)虛擬ip,這可以使用如下命令實(shí)現(xiàn):

      crm(live)configure# order fs-after-vip mandatory: fs-ip fs

      由于HA集群本身并不強(qiáng)制每個(gè)節(jié)點(diǎn)的性能相同或相近。所以,某些時(shí)候我們可能希望在正常時(shí)服務(wù)總能在某個(gè)性能較強(qiáng)的節(jié)點(diǎn)上運(yùn)行,這可以通過位置約束來實(shí)現(xiàn):

      crm(live)configure# location prefer-fs01-a fs-ip node_pref::200: fs01-a

      2.5.2 資源黏性

      資源黏性是指:資源更傾向于運(yùn)行在哪個(gè)節(jié)點(diǎn)。資源黏性值范圍及其作用:

      0:這是默認(rèn)選項(xiàng)。資源放置在系統(tǒng)中的最適合位置。這意味著當(dāng)負(fù)載能力“較好”或較差的節(jié)點(diǎn)變得可用時(shí)才轉(zhuǎn)移資源。此選項(xiàng)的作用基本等同于自動(dòng)故障回復(fù),只是資源可能會(huì)轉(zhuǎn)移到非之前活動(dòng)的節(jié)點(diǎn)上;

      大于0:資源更愿意留在當(dāng)前位置,但是如果有更合適的節(jié)點(diǎn)可用時(shí)會(huì)移動(dòng)。值越高表示資源越愿意留在當(dāng)前位置;

      小于0:資源更愿意移離當(dāng)前位置。絕對(duì)值越高表示資源越愿意離開當(dāng)前位置;

      INFINITY:如果不是因節(jié)點(diǎn)不適合運(yùn)行資源(節(jié)點(diǎn)關(guān)機(jī)、節(jié)點(diǎn)待機(jī)、達(dá)到migration-threshold 或配置更改)而強(qiáng)制資源轉(zhuǎn)移,資源總是留在當(dāng)前位置。此選項(xiàng)的作用幾乎等同于完全禁用自動(dòng)故障回復(fù);-INFINITY:資源總是移離當(dāng)前位置;我們這里可以通過以下方式為資源指定默認(rèn)黏性值:

      crm(live)configure# rsc_defaults resource-stickiness=10

      3 安裝與配置手冊(cè)

      3.1 Linux 系統(tǒng)安裝與環(huán)境配置

      從官方網(wǎng)站下載發(fā)行版 centOS 6.3

      vault.centos.org/6.3/os/i386

      安裝兩個(gè)linux服務(wù)器(標(biāo)準(zhǔn)安裝,必須的包為:gcc, glibc, mysql);IP: 10.74.10.224 hostname fs01-a;IP: 10.74.10.223 hostname fs01-b;安裝完成后修改每個(gè)機(jī)器的/etc/hosts文件添加如下:10.74.10.224 fs01-a;10.74.10.223 fs01-b

      3.2 增加yum數(shù)據(jù)源

      因?yàn)閘inux-HA 項(xiàng)目代碼源不在centOS的源庫中,需要手動(dòng)添加

      /etc/yum.repos.d/ha-clustering.repo(或ha-clustering.repo 到 /etc/yum.repos.d/)

      [haclustering];name=HA;Clustering ;baseurl=http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6/ enabled=1 gpgcheck=0

      3.3 禁止selinux

      [root@fs01-a]# /bin/sed -i -e s,'SELINUX=enforcing','SELINUX=disabled', /etc/selinux/config

      3.4 禁止iptables

      修改/etc/rc3.d/S08iptables 和 /etc/rc3.d/S08ip6tables 文件,在第二行增加“exit”

      # !/bin/sh exit#;# iptalbes Start iptables firewall

      3.5 配置DNS和NTP

      修改/etc/resolv.conf

      domain xxxx.com;nameserver xx.xx.xx.xx;nameserver xx.xx.xx.xx

      3.6 重啟服務(wù)器

      1) 安裝各種強(qiáng)制或可選的軟件包,以下包是編譯FreeSWITCH必須安裝的。

      [root@fs01-a]# yum install git autoconf automake libtool ncurses-devel libjpeg-devel

      2) 安裝運(yùn)行corosync/pacemaker/freeswitch。

      (1) 下載并編譯freeswitch 源碼, 我們使用1.2穩(wěn)定版而不是最新代碼

      [root@fs01-a]# cd /usr/local/src;[root@fs01-a]# git clone -b v1.2.stable git://git.freeswitch.org/freeswitch.git

      (2) 安裝pacemaker,corosync和crmsh

      [root@fs01-a]# yum install pacemaker corosync crmsh -y

      (3) 拷貝corosync.conf 到/etc/corosync/, 修改ip地址

      aisexec { # Run as root - this is necessary to be able to manage resources with Pacemaker

      user: root; group: root;}service {

      # Load the Pacemaker Cluster Resource Manager

      ver: 1; name: pacemaker; use_mgmtd: no; use_logd: no}

      3) 生成群結(jié)點(diǎn)間的通信密鑰

      密鑰會(huì)生成在/etc/corosync/authkey, 需要把這個(gè)文件拷貝到所有群結(jié)點(diǎn)的同路徑下

      [root@fs01-a]# corosync-keygen

      Press keys on your keyboard to generate entropy (bits = 496);Press keys on your keyboard to generate entropy (bits = 560);Press keys on your keyboard to generate entropy (bits = 624);Writing corosync key to /etc/corosync/authkey.

      4) 兩個(gè)結(jié)點(diǎn)分別啟動(dòng)corosync

      [root@fs01-a]# service corosync start

      3.7 配置集群資源

      拷貝freeswitch對(duì)應(yīng)lsb資源文件FSSofia 到lsb目錄/etc/init.d/FSSofia;兩個(gè)結(jié)點(diǎn)都要拷貝。兩個(gè)結(jié)點(diǎn)分別配置集群資源,結(jié)點(diǎn)名稱分別改為fs01-a, fs01-b

      1) 每個(gè)結(jié)點(diǎn)分別配置FreeSWITCH

      (1) 允許freeswitch 綁定非本地ip

      [root@fs01-a]# echo 'net.ipv4.ip_nonlocal_bind=1' >> /etc/sysctl.conf

      [root@fs01-a]# sysctl -p

      (2) 修改sofia.conf.xml

      [root@fs01-a]# vi /usr/local/freeswitch/conf/autoload_configs/sofia.conf.xml;;

      (3) 修改switch.conf.xml

      [root@fs01-a]# vi /usr/local/freeswitch/conf/autoload_configs/switch.conf.xml

      (4) 修改sip profile, 包括internal.xml,external.xml 或者其他使用到的sip profile

      [root@fs01-a]# vi /usr/local/freeswitch/conf/sip_profiles/internal.xml;

      (5) 每個(gè)結(jié)點(diǎn)分別配置互為熱備的MYSQL數(shù)據(jù)庫。配置fs01-a,fs01-b各自運(yùn)行自己的mysql數(shù)據(jù)庫,連個(gè)數(shù)據(jù)庫之間互為備份,安裝如下rpm包:

      mysql-server-5.1.61-4.el6.i686;unixODBC-devel-2.2.14-12.el6_3.i686;unixODBC-2.2.14-12.el6_3.i686

      (6) 在fs01-a,fs01-b服務(wù)器上,第一次啟動(dòng)mysql

      [root@fs01-a]#service mysqld start;[root@fs01-a]#chkconfig —add mysqld

      [root@fs01-a]#/usr/bin/mysqladmin -u root password 'freeswitch'

      [root@fs01-a]#mysql -uroot —pfreeswitch

      (7) 在fs01-a,fs01-b服務(wù)器上拷貝文件 odbc*.ini 到 /etc/并修改,fs01-a SERVER 為 10.74.10.224;fs01-b SERVER 為 10.74.10.223

      [root@fs01-a]#cp odbc*.ini /etc/[root@fs01-a]#vi /etc/odbc.ini;[freeswitch] #Driver = MYSQL ;SDriver = /usr/lib/li;bmyodbc5.so SERVER = 10.74.10.223

      (8) 完成后運(yùn)行命令檢查odbc連接

      [root@fs01-a]#isql -v freeswitch;;| Connected!|;| sql-statement || help [tablename] |;| quit |;| SQL> quit

      (9) 在fs01-a,fs01-b服務(wù)器上,停止slave并重置 master(在fs01-a,fs01-b上登陸mysql,以后凡是前綴為:“#”表示是命令狀態(tài),前綴為“mysql> ”表示通過登陸了mysql 客戶端:

      [root@fs01-a]#mysql -uroot —pfreeswitch ;mysql> stop slave; mysql> reset master;

      (10) 在fs01-a上增加權(quán)限。注意:如果要限制權(quán)限的話可以將紅色的'%'替換為服務(wù)器的域名或者IP

      mysql> grant replication slave on *.* to 'freeswitch'@'%' identified by 'freeswitch';

      mysql> flush privileges;

      (11) 在fs01-a,fs01-b服務(wù)器上下刷表并鎖定

      mysql> flush tables with read lock;

      (12) 將fs01-a的數(shù)據(jù)庫文件復(fù)制到fs01-b:將my.tar文件復(fù)制到fs01-b上;檢查fs01-a上的服務(wù)器狀態(tài):mysql> show master status;

      +————————-+————-+——————-+————————-+

      | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

      +————————-+————-+——————-+————————-+

      | mysql-bin.000001 | 106 | freeswitch | mysql |

      +————————-+————-+——————-+————————-+

      配置fs01-b實(shí)現(xiàn)主服務(wù)器同步。配置完成,可以嘗試在任意一個(gè)服務(wù)器上對(duì)數(shù)據(jù)庫freeswitch進(jìn)行操作,則在另外一個(gè)服務(wù)器上馬上就能看到相應(yīng)的動(dòng)作;

      4 結(jié)束語

      本文基于pacemaker 實(shí)現(xiàn)FreeSWITCH的高可用集群驗(yàn)證成功。在配置過程中我們通過pacemaker 實(shí)現(xiàn)高可用集群的方案對(duì)資源的配置具有更大的彈性,因此該解決方案能夠?qū)崿F(xiàn)高可用集群的更多功能和多元化。

      參考文獻(xiàn):

      [1] 徐小濤.數(shù)字集群移動(dòng)通信系統(tǒng)原理與應(yīng)用[M].北京:人民郵電出版社,2008.

      [2] 黃建堯.數(shù)字集群移動(dòng)通信系統(tǒng)終端關(guān)鍵技術(shù)研究[M].天津:天津大學(xué),2010.

      [3] 汪筱紅.高可用多節(jié)點(diǎn)集群技術(shù)的研究與實(shí)現(xiàn)[D].上海:上海交通大學(xué),2006.

      猜你喜歡
      解決方案
      艾默生自動(dòng)化解決方案
      解決方案和折中方案
      簡(jiǎn)潔又輕松的Soundbar環(huán)繞聲解決方案
      ABS塑件的常見缺陷及解決方案
      模具制造(2019年3期)2019-06-06 02:10:58
      通信用UPS電源常見問題及解決方案
      5G高頻室內(nèi)覆蓋解決方案研究
      您的理念 我們的解決方案
      您的理念 我們的解決方案
      4G LTE室內(nèi)覆蓋解決方案探討
      7大睡眠問題解決方案
      母子健康(2015年1期)2015-02-28 11:21:44
      海兴县| 比如县| 介休市| 日照市| 绥中县| 益阳市| 玛曲县| 外汇| 含山县| 德钦县| 额敏县| 于田县| 清水县| 姚安县| 班戈县| 扶沟县| 耒阳市| 龙岩市| 汾阳市| 平遥县| 阳曲县| 格尔木市| 通州区| 古浪县| 龙泉市| 吉林市| 皮山县| 伊春市| 温宿县| 海林市| 迭部县| 新野县| 鹤峰县| 通辽市| 德保县| 隆安县| 龙井市| 永胜县| 广昌县| 民勤县| 图木舒克市|