一、相關概念:
RHCS(redhat cluster suite,redhat叢集套件,根本上主要是高可用叢集,但内部包含負載均衡叢集,如LVS的解決方案,并為LVS前端提供基于GUI的配置工具(piranha),這個工具可讓LVS工作在高可用環境中;RHCS包括有:LVS、HA、CFS(cluster file system,如gfs2、OCFS2)、cLVM(cluster logical volume manager)
高可用叢集工作特性:
共多少個node,node間通信狀況(傳遞心跳資訊);成員關系(完成成員關系配置);目前是否具備法寶票數(檢查法定票數);以上這些依賴叢集基礎架構層(cluster infrastructure,或message layer)
CRM(cluster resource manger,資源配置(添加、删除、遷移等),并通過RA(有LSB,legacy,OCF,stonith)完成啟停服務;heartbeatV1(haresources)、heartbeatV2(haresources,crm)、heartbeatV3(pacemaker)、RHCS(rgmanager))
注:OCF(open cluster framework)
注:pacemaker(rhel6.4提供了pcs(叢集資源管理工具,支援全CLI和GUI界面,非常強大)
,CLI有crm和pcs,GUI有pygui、hawk、lcmc、pcs)
注:rgmanager(resource group manager,資源組管理器);RHCS實作高可用的層次、元件等這些概念與corosync、heartbeat基本一樣
早期redhat4中RHCS的基礎架構層叫cman(cluster manger)
RHCS的RA(resource agent,資源代理):internal;script(類似LSB)
redhat4:cman是獨立的元件,它是完整意義的基礎架構層;rgmanager是完整意義的CRM,有RA的機制
redhat5:cman借鑒了openais的功能(cman借助openais完成心跳資訊傳遞、成員關系管理、cman作為插件僅保留了投票系統),cman已不是完整意義的基礎架構層,而是作為openais的插件存在(将cman作為openais的子產品使用,僅使用cman的投票系統quorum),本質上cman的工作機制已是openais的功能了,但主導者(核心控制者,控制着整個openais的工作機制)依然是cman(/etc/cluster/cluster.conf),資料總管仍然是rgmanager
注:cman的配置檔案/etc/cluster/cluster.conf;corosync的配置檔案/etc/corosync/corosync.conf;openais的配置檔案/etc/openais/openais.conf
redhat6:cman插件依然存在,但使用的是corosync作為基礎架構層,corosync本身自帶投票系統,但投票系統沒cman優秀;如果使用cman,同redhat5一樣,主導者仍是cman,配置檔案/etc/cluster/cluster.conf,資料總管rgmanager;若不用cman,則使用的是corosync配置檔案是/etc/corosync/corosync.conf,資料總管pacemaker
corosync2.3.0版本号needle,其中votequorum這一專門子系統實作了投票功能,在cman的基礎上發展起來,比cman優秀,自此cman退出江湖,不再有主導地位,配置檔案由corosync主導
gfs(global file system,全局檔案系統,依賴高可用叢集,可讓多個node使用同一個FS,一個node持有的鎖會通知其它node,這要借助高可用叢集的基礎架構層實作DLM及成員關系管理,而ext{2,3,4}、vfat等這些FS同一時刻僅能讓一個node使用;gfs(redhat4)、gfs和gfs2(redhat5)、gfs2(redhat6))
注:要讓幾個node同時挂載一個FS,就要建立幾個日志區域(ext2和ext3的最大差別在日志功能上,通過FS的日志可快速修複資料)
注:另一gfs(google file system,應用在海量資料進行中的分布式FS,與這裡的叢集檔案系統是兩個概念)
注:分布式檔案系統(hdFS,hadoop,分兩部分(namenode,前面的一個server放源資料,要做高可用,存放有檔案大小、存儲路徑等;datanode,後端的一堆server存放真正的資料),當使用者存儲資料時,先聯系namenode請求存儲,namenode将請求分割(例如以塊為機關,每512M為一塊),再讓使用者去聯系datanode,依次往後端的node存512M的檔案,将資料分散地存在各個node上,之後要讀取資料時聯系namenode,namenode告訴使用者在哪幾個後端node上)
注:DLM(distributed lock manager,運作在各node上的守護程序(克隆類型的資源,運作在每個node),各node的DLM通過tcp/ip通信,一旦發現某個node故障,借助高可用叢集功能fence掉這個node)
注:drbd的雙主模型(dual master)借助CFS的DLM實作
OCFS2(oracle cluster filesystem,在IO量很大時性能非常差,沒gfs2流行,甚至oracle自身都建議使用gfs2)
cLVM(cluster LVM,可友善擴充空間,隻不過是借助高可用的功能,将某node對LVM的操作通知給其它node,LVM上的指令都可用,在LVM基礎上啟用叢集的功能可将cLVM做成高可用叢集中分布式LVM)
/etc/lvm/lvm.conf中locking_type= 3(3表示内建的叢集鎖;1表示本地基于檔案鎖,預設此項;2表示外部共享庫鎖庫)
RHCS中ccs服務(cluster configuration system叢集配置系統,專門用于實作叢集配置檔案管理,在每個node開啟了cman服務(要在cluster.conf配置檔案中說明有幾個node)ccsd會自動運作,之後僅在一個node修改配置檔案,ccsd監控到有變化,會自動借助message layer同步到其它node,不用像corosync中使用scp複制)
redhat4中RHCS,cman運作于核心,這種工作機制複雜且難于管理
<a href="http://s5.51cto.com/wyfs02/M00/77/AC/wKiom1ZrX-yTpNw7AAB2SXdunQs287.jpg" target="_blank"></a>
redhat5中RHCS:
cman借助 于openais,openais是在使用者空間工作, openais的核心程序aisexec(corosync也在配置檔案中定義啟動它,它完成心跳資訊傳遞、成員關系管理等,cman用于完成投票系統)
groupd(rgmanager,資料總管的守護程序)
dlm_controld(控制器,對于鎖本身的管理,持有鎖,釋放鎖)
lock_dlmd(管理器,将某node持有鎖的資訊告知其它node)
app<-->libdlm(應用程式借助庫通過DLM機制對FS施加鎖)
核心空間中gfs和dlm,大多數功能都在user space完成
<a href="http://s5.51cto.com/wyfs02/M01/77/AC/wKiom1ZrYAeTYCW9AACD17ig3jE978.jpg" target="_blank"></a>
redhat6中RHCS:
cman借助corosync,資料總管rgmanager
dlm_controld(OCFS借助dlm_controld,将lock_dlmd的工作移到dlm_controld完成)
gfs_controld(專為gfs提供的專用的優化的控制工具)
注:dlm_controld與gfs-_controld看上去是兩個獨立的子系統,實際上沒有gfs_controld也可,隻不過gsf_controld是為gfs專門提供的,若用不到CFS,這兩個程序不用啟動,有cman和rgmanager就可工作
<a href="http://s3.51cto.com/wyfs02/M01/77/AB/wKioL1ZrYBuQRYLSAABylD6bNFs036.jpg" target="_blank"></a>
RHCS中failover domain(故障轉移域,限定了node的轉移範圍,轉移到限定的目标node):
failover domain與服務相關,可設定node在failover domain中的次序,用以設定轉移的優先級
定義一個服務就要定義故障時采取什麼動作(若重新開機不成功就要轉移出去relocate);若某node故障,沒有可轉移的node或不想讓它轉移,則可将服務stopped
注:heartbeat、corosync元件中有左對稱、右對稱(見叢集第2篇《heartbeatV2》)
<a href="http://s1.51cto.com/wyfs02/M01/77/AC/wKiom1ZrYDCQTvWLAAB0CPQNSFc597.jpg" target="_blank"></a>
叢集管理方面:
軟體安裝(application software或operation system software的安裝,cobbler(補鞋匠,fedora項目,網絡大批量部署系統,自動化運維重要工具,早期使用PXE+dhcp+tftp配合kickstart)、openQRM、spacewalk)
執行指令(for通過ssh解決(for是按shell的機制,順序執行,不是并行執行,是以效率不高);fabric(基于ssh,python程式,http://www.fabfile.org/)
配置檔案管理:puppet(重量級工具,軟體分發,配置檔案管理等)
RHCS中luci/ricci(luci(server-side,統一管理分發的web界面),ricci(client-side,代理接收server-side發來的指令,并在client執行),redhat5和6界面相差很大,但概念一樣,用于實作軟體安裝,啟停服務,擷取叢集狀态,修改配置檔案等功能)
RHCS中command line administrator tools:clustat、clusvcadm、ccs_tool、cman_tool、fence_tool
redhat5系列使用工具system-config-cluster(此工具隻需安裝在一個node,在該node配置好後,點send to cluster将配置同步到其它node)
web架構:
N-m(N個node運作m個服務,m<=N)
director易成為單點故障應做高可用,而後端的realserver不應做高可用(僅在director做health check即可)
統一使用一個資料庫mysql
對于上傳的檔案(附件):
方案一:指定一個RS,檔案隻能上傳到指定的RS上,這要在前端director上實作這種功能(使用七層轉發工具haproxy或nginx,LVS不具備這種能力),再使用rsync+inotify同步至其它RS(這對于指定的那個RS來說将會非常繁忙)
方案二:使用共享存儲(NAS,檔案級别)
方案三:使用共享存儲(DAS,iscsi,塊級别,要将後端RS做成高可用叢集,僅對FS做高可用,并不是把httpd 做成高可用叢集,關鍵要使用CFS(cluster FS,如gfs最佳支援16個node,再多性能會很差,對于讀寫操作非常頻繁的場景,CFS并不理想,而要使用分布式FS)
注:LB+HA,根據業務需要,組合軟體來實作
二、操作:
環境:redhat5.8 32bit 2.6.18
準備:時間同步;名稱解析,要與#uname -n或#hostname保持一緻;配置好各node的yum源(參考叢集第二篇《heartbeatV2》設定)
安排:共四個node,node{1,2,3}為高可用node,node4幹兩件事(跳闆機、nfs共享存儲)
注:ha場景中,node數最少3個,>=3且是奇數個,若是兩個要使用仲裁磁盤
注:cman中沒有DC概念
RHCS中:
每個叢集都要有惟一叢集ID(叢集名稱),有叢集名稱cman才能啟動越來;
至少要有一個fence裝置,對于特定場景執行關機、重新開機等操作(#fence_manual -n NODE_NAME,#fence_vmware -h(Fence agent for VMWare));
至少應該有3個node,兩node場景中要使用qdisk(仲裁磁盤),3個以上node若是偶數個,兩兩分裂的機率很小,最好配置,但不配置qdisk也可
軟體包:
cman-2.0.115-96.el5.i386.rpm(/mnt/cdrom/Server下)
rgmanager-2.0.52-28.el5.i386.rpm(/mnt/cdrom/Cluster下)
system-config-cluster-1.0.57-12.noarch.rpm(/mnt/cdrom/Cluster下)
node4-side:
[root@node4 ~]# alias ha='for I in{1..3};do ssh node$I'
[root@node4 ~]# ha 'yum -y install cman httpd';done
[root@node1 ~]# sed -i 's@Server@Cluster@g' /etc/yum.repos.d/rhel-debuginfo.repo(node1,2,3都要改,或者改一個使用scp傳到其它node)
注:baseurl=file:///mnt/cdrom/Cluster
[root@node4 ~]# ha 'yum clean all';done
[root@node4 ~]# ha 'yum -y install rgmanager system-config-cluster';done
分别在node{1,2,3}準備不同的網頁頁面#vim /var/www/html/index.html,并分别測試是否能正常通路,注意測試完要關閉服務并設定開機不能自啟動
node1-side:
[root@node1 ~]# rpm -ql cman
/etc/cluster
/etc/rc.d/init.d/{cman,qdiskd, scsi_reserve}(qdiskd仲裁磁盤相關程序)
/sbin/ccs_tool
/sbin/dlm_controld
/sbin/dlm_tool
/sbin/fence_manual(模拟手動fence,meatware)
[root@node1 ~]# man ccs_tool(The toolused to make online updates of CCS config files)
[root@node1 ~]# man cman_tool(ClusterManagement Tool)
[root@node1 ~]# rpm -ql rgmanager
/usr/sbin/clustat(ClusterStatus Utility)
/usr/sbin/clusvcadm(Cluster UserService Administration Utility)
(1)GUI圖形化界面下,添加叢集名稱、節點、fence裝置,并自動建立配置檔案
[root@node1 ~]# system-config-cluster &(執行此指令,打開圖形界面配置,類似hb_gui的界面,確定在win下安裝并打開xmanager,若打不開圖形界面,在Xshell中确認,檔案-->屬性-->隧道-->轉發X11連接配接至xmanager)
如圖:提示沒有配置檔案,要先手動指定配置檔案,這個工具是在目前本機操作node1,點儲存後會借助ccs同步至各node,點create new configuration-->choose a name for the cluster(叢集名稱:tcluster)-->custom configure multicast和use a quorum disk這兩項留白-->OK
注:多點傳播位址不指預設會随機生成的;此例中已有三個node不需仲裁磁盤
<a href="http://s2.51cto.com/wyfs02/M02/77/AB/wKioL1ZrYEigqnRxAACcJFFydhg729.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M02/77/AC/wKiom1ZrYFiiyBIRAABdmso5BGg990.jpg" target="_blank"></a>
點cluster nodes-->點右下角add a cluster node-->分别添加三個node,分别為node{1,2,3}.magedu.com,quorum votes填1票-->OK
<a href="http://s5.51cto.com/wyfs02/M00/77/AB/wKioL1ZrYH2CwMNIAACJT7PlAPc265.jpg" target="_blank"></a>
點fence devices-->點右下角add a fence device-->選manual fencing-->name:meatware-->OK
<a href="http://s1.51cto.com/wyfs02/M02/77/AC/wKiom1ZrYJWCU-ZDAACB_sSuQ20420.jpg" target="_blank"></a>
點file-->save-->OK
<a href="http://s4.51cto.com/wyfs02/M00/77/AC/wKiom1ZrYLfAmiXdAACirPSNhmQ608.jpg" target="_blank"></a>
[root@node1 ~]# ls /etc/cluster(其它node在沒有啟動cman時是沒有此配置檔案的)
cluster.conf
[root@node1 ~]# service cman start(cman啟動時會自動同步配置檔案,第一個node啟動時會到starting fencing處就卡住不動了,等其它node都啟動了cman服務,第一個node才啟動完畢,cman服務不可以用for來啟動,而要一個node一個node的啟動)
Starting cluster:
Loading modules... done
Mounting configfs... done
Starting ccsd... done
Starting cman... done
Starting daemons... done
Starting fencing...
node2-side:
[root@node2 ~]# service cman start
node3-side:
[root@node3 ~]# service cman start
[root@node3 ~]# ls /etc/cluster/(成功啟動cman服務後,在node2和node3上檢視是否有配置檔案)
[root@node3 ~]# vim /etc/cluster/cluster.conf
[root@node3 ~]# cman_tool status(檢視叢集狀态資訊)
Version: 6.2.0
Config Version: 2
Cluster Name: tcluster
……
Nodes: 3
Expected votes: 3
Total votes: 3
Node votes: 1
Quorum: 2
Active subsystems: 8
Flags: Dirty
Ports Bound: 0 177
Node name: node3.magedu.com
Node ID: 3
Multicast addresses: 239.192.110.162
Node addresses: 192.168.41.133
[root@node2 ~]# clustat(檢視叢集狀态資訊)
Cluster Status for tcluster @ Thu Dec 1017:58:33 2015
Member Status: Quorate
Member Name ID Status
------ ---- ---- ------
node1.magedu.com 1Online
node2.magedu.com 2 Online, Local
node3.magedu.com 3 Online
[root@node4 ~]# ha 'service rgmanagerstart';done
啟動 Cluster Service Manager:[确定]
[root@node1 ~]# netstat -tunlp | grep aisexec(多點傳播位址239.192.110.162,端口5405)
udp 0 0 192.168.41.131:5405 0.0.0.0:* 1165/aisexec
udp 0 0 192.168.41.131:5149 0.0.0.0:* 1165/aisexec
udp 0 0 239.192.110.162:5405 0.0.0.0:* 1165/aisexec
(2)添加資源(RHCS中添加資源要麼在GUI圖形化界面操作,要麼直接修改配置檔案)
[root@node1 ~]# system-config-cluster &
點resources-->create a resource-->resource type選IP Address-->内容如圖顯示192.168.41.222/24-->OK
<a href="http://s4.51cto.com/wyfs02/M02/77/AB/wKioL1ZrYNChMhjqAAB-7TBc9Ss801.jpg" target="_blank"></a>
點resources-->create a resource-->resource type選script-->如圖所示,name:webserver,file:/etc/rc.d/init.d/httpd-->OK
注:此工具添加某服務是選script
<a href="http://s3.51cto.com/wyfs02/M01/77/AB/wKioL1ZrYYWyB2nnAAB8ECFd9Fw320.jpg" target="_blank"></a>
點services-->create a service-->如圖name:webservice-->OK-->如圖按預設即可autostart this service,recovery policy:restart-->點add a shared resource to this service-->如圖分别選擇IP addr和script兩項加入到services中-->close-->點右側send to cluster(将配置通告到整個叢集)-->Yes--OK
注:此處services,類似資源組的概念
<a href="http://s2.51cto.com/wyfs02/M00/77/AC/wKiom1ZrYZqRF8oyAACg7zYm1wM652.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M01/77/AC/wKiom1ZrYdTz67smAADAntqZzMg651.jpg" target="_blank"></a>
<a href="http://s1.51cto.com/wyfs02/M02/77/AB/wKioL1ZrYezg4gdcAACbNoMDO0o317.jpg" target="_blank"></a>
[root@node2 ~]# clustat
------ ---- ---- ------
node1.magedu.com 1 Online, rgmanager
node2.magedu.com 2 Online, Local, rgmanager
node3.magedu.com 3 Online,rgmanager
Service Name Owner (Last) State
------- ---- ----- ------ -----
service:webservice node3.magedu.com started
[root@node4 ~]# elinks -dump http://192.168.41.222
node3 server
[root@node3 ~]# ip addr show(注意此處使用#ifconfig是看不出來的,添加别名是用指令#ip addr添加的)
2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:89:2d:74 brd ff:ff:ff:ff:ff:ff
inet 192.168.41.133/24 brd 192.168.41.255 scope global eth0
inet 192.168.41.222/24 scope global secondary eth0
inet6fe80::20c:29ff:fe89:2d74/64 scope link
[root@node3 ~]# clusvcadm -h
[root@node3 ~]# clusvcadm -r webservice -m node1.magedu.com(将資源重新定位relocate至指定node,若不指具體node則會随機選擇)
Trying to relocate service:webservice to node1.magedu.com...Success
service:webservice is now running on node1.magedu.com
[root@node3 ~]# clustat
Cluster Status for tcluster @ Thu Dec 1018:42:25 2015
service:webservice node1.magedu.com started
[root@node3 ~]# clusvcadm -r webservice
Trying to relocateservice:webservice...Success
service:webservice is now running on node3.magedu.com
[root@node3 ~]# clusvcadm -l(Lock localresource group manager,鎖定後将不能重新定位至其它node)
Resource groups locked
[root@node3 ~]# clusvcadm -r webservice -m node1.magedu.com
Trying to relocate service:webservice to node1.magedu.com...Failure
[root@node3 ~]# clusvcadm -r webservice -m node2.magedu.com
Trying to relocate service:webservice to node2.magedu.com...Failure
[root@node3 ~]# clusvcadm –u(解鎖)
Resource groups unlocked
Trying to relocate service:webservice to node2.magedu.com...Success
service:webservice is now running on node2.magedu.com
注:
#clusvcadm -r GROUP [-m NODE](relocate,member)
#clusvcadm -l|-u(lock|unlock)
#clusvcadm -d|-e|-s|-R GROUP(disable|enable|stop|restart)
#clusvcadm -M GROUP -m NODE(migrate,實時遷移虛拟機資源)
#cman_tools nodes(顯示叢集中各node)
#clustat(不僅顯示各node,還有各node的狀态,還顯示資源在哪個node運作)
#ccs_tool lsnode|lsfence
#ccs_tool addnode|delnode NODE
#ccs_tool addfence|delfence FENCE_NAME FENCE_DEV
#ccs_tool create(Create a skeleton config file,自動建立配置檔案)
#ccs_tool update XML_FILE(Tells ccsdto upgrade to new config file)
node4-side(在node4準備共享目錄檔案):
[root@node4 ~]# mkidr -pv /web/htdocs
[root@node4 ~]# echo "nfs server">> /web/htdocs/index.html
[root@node4 ~]# vim /etc/exports
/web/htdocs 192.168.41.131(ro) 192.168.41.132(ro) 192.168.41.133(ro)
[root@node4 ~]# service nfs start
[root@node4 ~]# showmount -e 192.168.41.134
Export list for 192.168.41.134:
/web/htdocs192.168.41.133,192.168.41.132,192.168.41.131
[root@node4 ~]# chkconfig nfs on
[root@node4 ~]# chkconfig --list nfs
nfs 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉
node1-side(在node{1,2,3}上測試是否可以正常挂載,記得要解除安裝;并将共享目錄自動挂載加入資源中):
[root@node1 ~]# mount -t nfs 192.168.41.134:/web/htdocs /var/www/html
[root@node1 ~]# cat /var/www/html/index.html
nfs server
[root@node1 ~]# umount /var/www/html
點service webservice-->edit service properties-->create new reource for this service-->選NFS Mount-->name:webstore,mountpoint:/var/www/html,host:192.168.41.134,export path:/web/htdocs-->OK-->close-->send to cluster
<a href="http://s3.51cto.com/wyfs02/M00/77/AB/wKioL1ZrYhiRSFsuAACSCOKzzsk130.jpg" target="_blank"></a>
<a href="http://s5.51cto.com/wyfs02/M02/77/AC/wKiom1ZrYkDwgjYZAAC1l_21EJg529.jpg" target="_blank"></a>
[root@node1 ~]# clustat
Cluster Status for tcluster @ Thu Dec 1020:05:08 2015
Service Name Owner (Last) State
------- ---- ----- ------ -----
service:webservice node2.magedu.com started
node2-side(在目前活動節點檢視,已自動挂載共享;并重新定位至node3,檢視狀态):
[root@node2 ~]# mount | grep /web/htdocs
192.168.41.134:/web/htdocs on /var/www/htmltype nfs (rw,sync,soft,noac,addr=192.168.41.134)
[root@node2 ~]# clusvcadm -r webservice -m node3.magedu.com
Trying to relocate service:webservice tonode3.magedu.com...Success
service:webservice is now running onnode3.magedu.com
[root@node2 ~]# elinks -dump http://192.168.41.222
nfs server
(3)補充(全CLI指令行下生成配置檔案、添加node、添加fence device;若要添加資源要麼在GUI下操作,要麼直接修改配置檔案):
[root@node4 ~]# ha 'service rgmanager stop';done
[root@node3 ~]# service cman stop
[root@node2 ~]# service cman stop
[root@node1 ~]# service cman stop
[root@node1 ~]# ls /etc/cluster/(每send acluster向其它node同步一次,會将舊版本自動備份)
cluster.conf cluster.conf.bak.1 cluster.conf.bak.2 cluster.conf.bak.3 cluster.conf.old
[root@node1 ~]# ls /etc/cluster
[root@node1 ~]# ccs_tool create tcluster(生成配置檔案,Create a new, skeleton, configuration file)
[root@node1 ~]# cat/etc/cluster/cluster.conf
<?xml version="1.0"?>
<cluster name="tcluster"config_version="1">
<clusternodes/>
<fencedevices/>
<rm>
<failoverdomains/>
<resources/>
</rm>
</cluster>
#ccs_tool addfence NAME AGENT
[root@node1 ~]# ccs_tool addfence meatware fence_manual(添加fencedevice,delfenc删除fence device)
running ccs_tool update...
<cluster name="tcluster"config_version="2">
<fencedevices><fencedevice name="meatware" agent="fence_manual"/></fencedevices>
[root@node1 ~]# ccs_tool lsfence
Name Agent
meatware fence_manual
#ccs_tool addnode -v VOTES [-n NODEID] -f FENCE_NAME NODE_NAME(-v指定該node法定票數,-n指定節點ID号必須唯一可選項,-f讓該節點使用這個fence裝置)
[root@node1 ~]# man ccs_tool
[root@node1 ~]# ccs_tool addnode -v 1 -n 1 -f meatware node1.magedu.com
Segmentation fault
[root@node1 ~]# ccs_tool addnode -v 1 -n 2 -f meatware node2.magedu.com
[root@node1 ~]# ccs_tool addnode -v 1 -n 3 -f meatware node3.magedu.com
[root@node1 ~]# ccs_tool lsnode
Cluster name: tcluster, config_version: 5
Nodename Votes Nodeid Fencetype
node1.magedu.com 1 1 meatware
node2.magedu.com 1 2 meatware
node3.magedu.com 1 3 meatware
(4)擴充(虛拟機):
N台實體機(N個node)上分散地運作多個虛拟機,服務在虛拟機上運作,虛拟機作為高可用資源,若目前運作虛拟機的這台實體機故障時,虛拟機不停,正常運作并轉移至其它實體機node上;資料要在共享存儲上(虛拟機運作要依賴很多資料)
web叢集,http是stateless,如電商站點中購物車,後端某一RS挂掉,VIP和httpd要遷移至其它node,為使session資訊繼續可用,将session儲存在memcache中,不論哪一台RS挂掉使用者都能通路到session,若目前與使用者建立連接配接的RS挂掉,使用者這時繼續通路時服務會中斷(如提示404),接着再次通路則會正常;若是ssh連接配接在某一個RS上(ssh是始終線上的服務),若這個RS故障,則連接配接會斷開,需要再次發起請求;若ssh連接配接在RS中的虛拟機上,則當RS故障,虛拟機會遷移至其它RS,則連接配接不會中斷(這是虛拟機的好處)
虛拟化的好處(虛拟機在高可用的實體node上,任何一個node故障,虛拟機隻要實時遷移,遷移時是不需要停止服務的)
雲(提供成千上萬個node,多個虛拟機平均地運作在多個node上,iaas雲提供虛拟機的高可用環境,是以我們使用虛拟機不會掉線)
在虛拟磁盤中建立的檔案,不管在哪個node上運作的虛拟機都要能通路到,要用到共享存儲,用以存放多個虛拟機的鏡像檔案(虛拟磁盤檔案),将虛拟機程序關聯至鏡像檔案,虛拟機提供商提供的虛拟機中有系統(是在鏡像檔案中灌裝好的系統,存放有linux的根檔案系統,這裡面可能沒有核心,可依賴外部的核心啟動)
本文轉自 chaijowin 51CTO部落格,原文連結:http://blog.51cto.com/jowin/1722241,如需轉載請自行聯系原作者