V 5 RHCS
V 5 RHCS
?
一、相關概念:
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運行于內核,這種工作機制復雜且難于管理
?
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完成
?
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就可工作
?
RHCS中failover domain(故障轉移域,限定了node的轉移范圍,轉移到限定的目標node):
failover domain與服務相關,可設置node在failover domain中的次序,用以設置轉移的優先級
定義一個服務就要定義故障時采取什么動作(若重啟不成功就要轉移出去relocate);若某node故障,沒有可轉移的node或不想讓它轉移,則可將服務stopped
注:heartbeat、corosync組件中有左對稱、右對稱(見集群第2篇《heartbeatV2》)
?
集群管理方面:
軟件安裝(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不需仲裁磁盤
點cluster nodes-->點右下角add a cluster node-->分別添加三個node,分別為node{1,2,3}.magedu.com,quorum votes填1票-->OK
點fence devices-->點右下角add a fence device-->選manual fencing-->name:meatware-->OK
點file-->save-->OK
?
[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上查看是否有配置文件)
cluster.conf
[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
?
node2-side:
[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
?
node4-side:
[root@node4 ~]# ha 'service rgmanagerstart';done
啟動 Cluster Service Manager:[確定]
啟動 Cluster Service Manager:[確定]
啟動 Cluster Service Manager:[確定]
?
node1-side:
[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圖形化界面操作,要么直接修改配置文件)
node1-side:
[root@node1 ~]# system-config-cluster &
點resources-->create a resource-->resource type選IP Address-->內容如圖顯示192.168.41.222/24-->OK
點resources-->create a resource-->resource type選script-->如圖所示,name:webserver,file:/etc/rc.d/init.d/httpd-->OK
注:此工具添加某服務是選script
點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,類似資源組的概念
?
node2-side:
[root@node2 ~]# clustat
……
?Member Name????????????????????????????????????????????????????ID?? Status
?------ ----???????????????????????????????? ????????????????????---- ------
?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???
?
node4-side:
[root@node4 ~]# elinks -dump http://192.168.41.222
??node3 server
?
node3-side:
[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
[root@node3 ~]# clusvcadm -r webservice -m node2.magedu.com
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
[root@node1 ~]# system-config-cluster &
點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
[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下操作,要么直接修改配置文件):
node4-side:
[root@node4 ~]# ha 'service rgmanager stop';done
node3-side:
[root@node3 ~]# service cman stop
node2-side:
[root@node2 ~]# service cman stop
node1-side:
[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
node4-side:
?
node1-side:
[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...
[root@node1 ~]# cat/etc/cluster/cluster.conf
<?xml version="1.0"?>
<cluster name="tcluster"config_version="2">
?<clusternodes/>
?<fencedevices><fencedevice name="meatware" agent="fence_manual"/></fencedevices>
?<rm>
???<failoverdomains/>
???<resources/>
?</rm>
</cluster>
[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
running ccs_tool update...
Segmentation fault
[root@node1 ~]# ccs_tool addnode -v 1 -n 2 -f meatware node2.magedu.com
running ccs_tool update...
Segmentation fault
[root@node1 ~]# ccs_tool addnode -v 1 -n 3 -f meatware node3.magedu.com
running ccs_tool update...
Segmentation fault
[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)擴展(虛擬機):
#clusvcadm ?-M ?GROUP ?-m ?NODE(migrate,實時遷移虛擬機資源)
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的根文件系統,這里面可能沒有內核,可依賴外部的內核啟動)
?
?
轉載于:https://blog.51cto.com/jowin/1722241
總結
- 上一篇: java表达式陷阱
- 下一篇: C语言实现小时候经常做的智力测试题