1. 程式人生 > >AIX中WebSphere雙機冷切換的操作步驟

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一致的使用者進行操作