AIX中WebSphere雙機冷切換的操作步驟
WebSphere作為一個重量級中介軟體,一般部署在小型機或者高階x86伺服器上,由一個主要的中心節點提供全方位的服務。不同於現在linux常用的小而多的叢集式部署,WebSphere這種大型應用一般一個應用就要佔用一臺物理主機。當這臺物理主機發生故障後,就需要把WebSphere軟體連同其執行的專案一同遷移至另一臺主機繼續執行。而遷移主要是通過儲存進行的。一般的應用場合就是兩臺AIX小型機同時連線同一個FC或者SAN儲存,通過訪問同一個VG的方式來共享資料。
雖說兩臺物理伺服器都連線同一臺儲存,但是SAN或者FC這樣的儲存方式是不能像NAS一樣可以同時併發的讀寫的(powerHA的VG提供了concurrent的模式,但也無法讓兩臺裝置同時讀寫塊裝置,否則會崩潰)。
所以我們手工做的切換就是冷切換,就是從一臺物理機將他的WebSphere服務和資料一起遷移到另一臺空白機器上。
首先需要了解的是,WebSphere安裝好之後可以帶著安裝was的硬碟到處跑到處插,一臺伺服器不需要再手動安裝一遍was,只需插上之前裝好was程式的軟體就能直接跑起來was程式了。所以我們的備用機不需要做什麼提前準備或者預裝was軟體,開機即用。
鑑於was的這個特性,所以我乾脆把was主程式和web程式(profile)全都安裝到共享儲存上去,放在同一個VG裡面,這樣我只需要把這個VG給第二臺機器掛載上,就能直接使用裡面的was程式,profile(AppSrv01,server1)和部署的應用程式了。
在
所以在安裝的時候,我們就要把was程式安裝到單獨的一個共享儲存的VG上,同時建立profile的時候也要建立到這個VG上。然後在遷移的時候,首先我們要登入原機器,將掛載上的VG解綁,釋放出資源,否則第二臺機器無法啟用VG。解綁使用的命令是:
varyoffvg <VG名稱>
主伺服器解綁VG以後,備用伺服器只要能通過lsvg發現這個vg的話,就可以啟用這個vg了。
varyonvg <VG名稱>
但是如果你開啟了PowerHA,那麼這樣手動啟用和解綁是不行的,需要先關閉powerHA後再手動啟用或解綁,關閉powerHA可以使用命令
smit clstop
敲幾下回車就能關閉掉PowerHA
檢視當前VG是否開啟了PowerHA就是使用lsvg <VG名稱>命令檢視VG Mode這一引數,如下
bash-4.3# lsvg appvg
VOLUME GROUP: appvg VG IDENTIFIER: 00fa4d2e00004c000000016121dd6ba3
VG STATE: active PP SIZE: 1024 megabyte(s)
VG PERMISSION: read/write TOTAL PPs: 299 (306176 megabytes)
MAX LVs: 512 FREE PPs: 178 (182272 megabytes)
LVs: 4 USED PPs: 121 (123904 megabytes)
OPEN LVs: 0 QUORUM: 2 (Enabled)
TOTAL PVs: 1 VG DESCRIPTORS: 2
STALE PVs: 0 STALE PPs: 0
ACTIVE PVs: 1 AUTO ON: no
Concurrent: Enhanced-Capable Auto-Concurrent: Disabled
VG Mode: Concurrent
Node ID: 1 Active Nodes: 2
MAX PPs per VG: 130048
MAX PPs per PV: 1016 MAX PVs: 128
LTG size (Dynamic): 1024 kilobyte(s) AUTO SYNC: no
HOT SPARE: no BB POLICY: relocatable
PV RESTRICTION: none INFINITE RETRY: no
DISK BLOCK SIZE: 512 CRITICAL VG: no
FS SYNC OPTION: no
當VG Mode是Concurrent的時候,說明開啟了PowerHA,此時主伺服器是可讀寫的,備用伺服器僅僅是隻讀的,甚至只讀都做不到無法掛載。在AIX 7當中這裡有四個選項,一般選擇now,即立即停止,並且要通知其他節點,釋放資源。這裡要注意一下,通知powerHA後,原來掛載的VG會同時解除安裝掉,所以如果你執行著叢集應用一定要停止後再關PowerHA
Stop Cluster Services
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
* Stop now, on system restart or both now +
Stop Cluster Services on these nodes [Server1] +
BROADCAST cluster shutdown? true +
* Select an Action on Resource Groups Bring Resource Groups Offline
當我們在備用伺服器上激活了這個VG之後(即使用lsvg -o)能看到這個VG,我們還需要將其掛載到相關的掛載點上去。而相關的掛載點在主伺服器是知道的,可以使用lsvg <VG名稱>檢視到,但是遷移到備用機上之後就看不到了。記住此時千萬不要用mkfs或者smit fs命令去新建同名的檔案系統,否則就像格式化一樣將你原有lv的內容全部抹掉。正確的姿勢是修改備用機的/etc/filesystems檔案,使其於主伺服器相同,比如我就是將主伺服器和這個VG有關的掛載點內容全複製到備份伺服器上
/was:
dev = /dev/applv03
vfs = jfs2
log = /dev/loglv02
mount = true
options = rw
account = false
/xdwebdata:
dev = /dev/applv01
vfs = jfs2
log = /dev/loglv02
mount = true
options = rw
account = false
/xdreport:
dev = /dev/applv02
vfs = jfs2
log = /dev/loglv02
mount = true
options = rw
account = false
注意最重要的是log這一項,當我們給一個空白VG建立jfs2的lv的時候,會自動生成一個jfs2log格式的單獨lv,這個lv就是專門負責記錄檔案系統日誌的,一定要將這個分割槽指示明白,新的伺服器才能正常的讀取源伺服器的內容
比如下面的loglv02就是這個VG中記錄日誌的分割槽,三個主要的lv都是靠這一個日誌lv
bash-4.3# lsvg -l appvg
appvg:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
applv01 jfs2 40 40 1 open/syncd /xdwebdata
applv02 jfs2 30 30 1 open/syncd /xdreport
applv03 jfs2 50 50 1 open/syncd /was
loglv02 jfs2log 1 1 1 open/syncd N/A
維護好檔案系統的配置之後,我們只需要使用mount命令就能掛載並像原來系統一樣使用了,如下
mount /dev/applv01 /xdwebdata
在掛載上檔案系統之後,可能會出現許可權問題,比如之前系統是把某個檔案的許可權給了使用者A,但是新系統沒有使用者A,或者備用伺服器上使用者B的UID和原系統的使用者A的UID相同,那麼就會導致你在啟動應用的時候沒有相關目錄的讀寫許可權。所以要麼使用root使用者來起停服務,要麼就在新系統上建立UID一致的使用者進行操作