HA的簡介與配置

        HA(High Available),高可用集羣,是減小服務中斷時間爲目的的服務器集羣技術。是保證業務連續性的有效解決方案。集羣,簡單的來講就是一組計算機。通常有兩個或者兩個以上的計算機組成,這些組成集羣的計算機被稱爲節點。html

        其中由兩個節點組成的集羣被稱爲雙機熱備,即便用兩臺服務器互相備份,當其中一臺服務器出現問題時,另外一臺服務器立刻接管服務,來保護用戶的業務程序對外不間斷提供的服務,固然集羣系統更能夠支持兩個以上的節點,提供比雙機熱備更多、更高級的功能,把因軟件/硬件/人爲形成的故障對業務的影響下降到最小程度。node

        在集羣中爲了防止服務器出現「腦裂」的現象,集羣中通常會添加Fence設備,有的是使用服務器自己的的硬件接口稱爲內部Fence,有的則是外部電源設備稱爲外部Fence,當一臺服務出現問題響應超時的時候,Fence設備會對服務器直接發出硬件管理指令,將服務器重啓或關機,並向其餘節點發出信號接管服務。linux

         在紅帽系統中咱們經過luci和ricci來配置管理集羣,其中luci安裝在一臺獨立的計算機上或者節點上,luci只是用來經過web訪問來快速的配置管理集羣的,它的存在與否並不影響集羣。ricci是安裝在每一個節點上,它是luci與集羣給節點通訊的橋樑。web

接下來是集羣的配置了。
apache

主機環境: rhel6.5 iptables and selinux disablevim

實驗主機
server4.example.com 172.25.9.4 luci端後端

server2.example.com 172.25.9.2 節點1服務器

server3.example.com 722.25.9.2 節點2dom

在節點端:ide

yum install ricci

給ricci用戶設置密碼

echo redhat | passwd --stdin ricci

開啓ricci並確保ricci開機啓動

/etc/init.d/ricci start
chkconfig ricci on

在luci端:

安裝集羣管理軟件

yum install luci

開啓luci

/etc/init.d/luci start

用web登陸https://server4.example.com:8084經過網頁來配置其中8084端口就是luci啓動的端口

luci端的主機的root用戶就是luci的管理用戶;其餘用戶登陸須要root用戶受權這裏爲了方 便直接用root登陸

wKioL1dgHAnQmBWpAAAquYpjZ7A322.png-wh_50

建立集羣

wKiom1dgGwTB-Cz2AAB-I-3JN40113.png-wh_50

建立集羣成功

wKioL1dgHCXDcKAkAABgiGS2S3w242.png-wh_50

輸入節點主機clustat命令也可查看到

Member Status: Quorate
Member Name ID   Status
 ------ ----   ---- ------
server2.example.com    1 Online, Local
server3.example.com    2 Online

爲集羣添加外部fence:

由於實驗主機是虛擬機因此用物理機來模擬fence 在物理機中安裝所需的軟件包

yum install fence-virtd-multicast.x86_64 fence-virtd.x86_64 fence-virtd-libvirt.x86_64

開始建立:

執行fence_virtd -c命令後按要求配置

尋找module路徑默認便可:

wKioL1dgHF-RfZe5AAAXBPj-ml8287.png

監聽module設爲多波:

wKiom1dgG2DzQsaMAAAOD4nYcRI946.png

多波IP設爲225.0.0.12:

wKioL1dgHIORmluMAAAR1ShEIvc539.png

端口設爲1229:

wKiom1dgG5bicHOaAAAOSAbya-o137.png

接口爲br0:

wKiom1dgG7OQ-jhFAAAKddjAuRY084.png

建立fence的key文件默認便可,要確保有/etc/cluster目錄:

wKiom1dgG8zit5woAAATtg7DYp8027.png

後端module爲libvirt:

wKiom1dgG92irPB0AAAPgoh6N7Y707.png

成功後會將如下信息寫入/etc/fence_virt.conf

backends {
libvirt {
    uri = "qemu:///system";
}

 }

listeners {
multicast {
    port = "1229";
    family = "ipv4";
    interface = "br0";
    address = "225.0.0.12";
    key_file = "/etc/cluster/fence_xvm.key";
}

 }

fence_virtd {
module_path = "/usr/lib64/fence-virt";
backend = "libvirt";
listener = "multicast";
}

採集隨即信息到剛剛生成的key文件裏

dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1

啓動fence_virtd服務

systemctl start fence_virtd.service

將key文件傳到節點的/etc/cluster目錄下就能夠經過luci給集羣添加fence了 點擊Fence Devices添加fence,有多種fence設備可供選擇這裏選的是Fence virt(MulticastMode ):

wKioL1dgHsfBRb9ZAAIBNTazwwo136.png-wh_50

而後點擊Nodes裏的節點爲集羣添加fence

wKioL1dgHTWCweUTAABoHluxFMg913.png-wh_50

這裏選擇vmfence(xvm Virtual Machine Fencing)其中Domain填寫虛擬機的名字或UUID。

wKiom1dgHDPRA4FhAABn4xeNrQw017.png-wh_50

每一個節點都添加了之後測試一下:

在server2.example.com中執行fence_node server3.example.com 命令能夠看到server3主機關閉重起了

配置完fence後接着配置failover:

wKiom1dgHFDBW-QeAAByqTXhBqk630.png-wh_50

#Prioritized設置優先級

#Restricted設置只在勾選節點中運行

#No Failback設置當優先級高的節點恢復時不會接管正在運行的服務

而後在Resource中添加資源這裏添加虛擬ip和httpd的腳本(集羣要安裝httpd):

wKioL1dgHbPiCM3VAABapASoYZs596.png-wh_50

wKioL1dgHdbgaoJLAAA7f4Gh1Jc452.png-wh_50

最後設置Server Group:

wKiom1dgHM-BNiV5AAB6tShRhHc599.png-wh_50

#Automatically Start This Service設置自動開啓服務

#Run Exclusive 設置當運行此服務時再也不運行其餘服務

點擊 Add Resource 增長Resource中的資源這裏添加的是上一步配置的虛擬IP和httpd腳本

測試:

在網頁輸入設置的虛擬IP172.25.9.100能夠看到server2主機的網頁內容server2.example.com

wKioL1dgHgDwsWouAAASsITDRaI729.png-wh_50

在server2主機執行clusvcadm -r apache -m server3.example.com命令讓server3主機接管服務

或者執行echo c > /proc/sysrq-trigger讓server2內核崩潰,server2主機將在fence的做用下重起.

刷新172.25.9.100的頁面能夠看到server3的主頁內容server3.example.com。

wKiom1dgHQexToTyAAATTHawi5E672.png-wh_50

集羣存儲:

在luci端安裝iscsi服務端

yum install scsi-target-utils.x86_64

添加配置:

vim /etc/tgt/targets.conf
 <target iqn.2016-06.com.example:server.target1>
 backing-store /dev/vdb
 initiator-address 172.25.9.2
 initiator-address 172.25.9.3
 </target>
/etc/init.d/tgtd start

輸入tgt-admin -s看到以下信息表示成功

wKioL1dgHjrR_HfxAAC9vXz3o5g118.png-wh_50

wKiom1dgHSjxZq9UAAC1KZw_UCw108.png-wh_50

在集羣安裝iscsi客戶端

yum install iscsi-initiator-utils.x86_64 -y

找到服務端分享的磁盤

iscsiadm -t st -m discovery -p 172.25.9.4

連接

iscsiadm -m node -l

對磁盤進行分區並建立lvm(只需在集羣的一個節點作)

fdisk -cu /dev/sda
pvcreate /dev/sda1
vgcreate clust0 /dev/sda1
lvcreate -L +2G -n lv0 clust0

磁盤能夠格式化爲本地系統或者集羣文件系統

1.磁盤格式化爲本地文件系統 mkfs.ext4 /dev/clust0/lv0

節點執行pvs,vgs,lvs。命令進行同步

最後在網頁進行配置:

點擊Resource添加資源:選擇File System

wKioL1dgHmDTmhX-AAB4bqFoPn4099.png-wh_50

在以前的Resource Group中的apache組添加資源順序爲虛擬IP -> File System ->httpd腳本

由於server2主機的優先級高因此先掛載在server2主機,在server2主機執行

echo www.redhat.com > /var/www/html/index.html

訪問虛擬ip172.25.9.100能夠看到這個主頁

wKiom1dgHWDgBBGkAAARmq29wzg761.png-wh_50

2.磁盤格式化爲集羣文件系統

lvcreate -L 2G -n demo clust0
mkfs.gfs2 -p lock_dlm -t memory:mygfs2s  -j 3 /dev/clust0/demo
gfs2_tool sb   /dev/clust0/demo all #查看demo的信息

在/etc/fstab中寫入(UUID能夠經過blkid查看,所用節點都作) vim /etc/fstab UUID=c705c698-7dbb-b831-2cd5-1d553660d393 /var/www/html gfs2 _netdev 0 0 mount -a

相關文章
相關標籤/搜索