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一致的用户进行操作