Cluster Create MC Serviceguard Cluster on HP-UX and Oracle Package with MQ Package

** Myself
Create Serviceguard Cluster ทำการ Create serviceguard cluster โดยผ่าน command unix
clip_image002[12]
Create Serviceguard Cluster
Cluster information
Cluster name: MYCLUST
Package Information
Package Name:ora_MYPKG Package Cluster ip=172.16.10.111
Package Name:mq Package Cluster ip=172.16.10.112
Subnet all package 172.16.10.0
Oracle sid = ora_MYPKG on node1 (default)
mq on node2 (default)
vgmq

mount=/opt/mqm,/opt/ibm/,var/mqm,
lv= lvoptmqm,lvoptibm,lvvarmqm
vgorasw
mount=/app/oracle
lv= lvorasw
vgoraarch
mount=/data/oracle/archive/MYPKG
lv=lvoraarch
vgoradata
mount=/data/oracle/oradata/MYPKG
lv= lvoradata
System Information
node1 information :
- hostname= node1
- pub ip= 172.16.10.101
- heartbeat ip= 172.16.10.101, 192.168.31.1, 192.168.32.1
- lan0=172.16.10.101(data and heartbeat) , lan2 standby lan0
- lan4=192.168.2.1 (heartbeat) , lan3=192.168.32.1(backup and heartbeat)
node2 information :
- hostname=node2
- pub ip= 172.16.10.102, 192.168.31.2, 192.168.32.2
- heartbeat ip=192.168.2.2,sub net of heartbeat = 192.168.2.0,
- lan0=172.16.10.102(data and heartbeat) , lan2 standby lan0
- lan4=192.168.2.2 (heartbeat) , lan3=192.168.32.2(backup and heartbeat)
การ create serviceguard cluster แบ่งขั้นตอนออกเป็น 4 ขั้นตอน
  1. Create a shared volume group.
  2. Create a ServiceGuard Cluster.
  3. Create an application package.
  4. Automatic cluster startup.

1. Create a shared volume group
มีขั้นตอนดังนี้

1. สร้าง .rhosts ไฟล์ทั้ง 2 เครื่องบน root directory ( ทำ ทั้ง 2 node ) Echo “172.16.10.101” >> /.rhosts
# บนเครื่อง node2
Echo “172.16.10.102” >> /.rhosts
# บนเครื่อง node1
2 สร้าง director ของ group ( ทำ ที่ node1 )
node1# mkdir /dev/vgorasw
 
 

3. สร้าง node ของ volumn group ( ทำ ที่ node1 )
node1# mknod /dev/vgorasw/group c 64 0x020000
 
 

4. หา disk ที่จะทำ ( ทำ ที่ node1 )
node1# ioscan -funC disk
Class     I  H/W Path    Driver      S/W State H/W Type  Description
===============================
disk  34  0/4/2/0.101.0.0.0.0.4  sdisk  CLAIMED  DEVICE       HP HSV200
                           /dev/dsk/c10t0d2   /dev/rdsk/c10t0d2                        
disk  35  0/4/2/0.101.0.0.0.0.5  sdisk  CLAIMED  DEVICE       HP HSV200
                           /dev/dsk/c10t0d3   /dev/rdsk/c10t0d3
 

5. create physical volumn บน disk ทั้งหมดที่จะทำ ( ทำ ที่ node1 )
node1# pvcreate -f /dev/rdsk/c6t0d2
Physical volume "/dev/rdsk/c10t0d2" has been successfully created.
node1# pvcreate -f /dev/rdsk/c6t0d3
Physical volume "/dev/rdsk/c10t0d3" has been successfully created.
node1# pvcreate -f /dev/rdsk/c6t5d3
node1# pvcreate -f /dev/rdsk/c6t5d4
node1# pvcreate -f /dev/rdsk/c6t5d5
 

6. create vg โดย ใส่ disk ทั้งหมดทุกลูก ( ทำ ที่ node1 )
node1# vgcreate /dev/vgorasw /dev/dsk/c6t0d3
Volume group "/dev/vgorasw" has been successfully created.
Volume Group configuration for /dev/vgorasw has been saved in /etc/lvmconf/vgorasw.conf
 
 

7. ตรวจสอบdisk บน lvm ( ทำ ที่ node1 )
node1# strings /etc/lvmtab
 

8. สร้าง logical volume ที้ต้องการ เช่น logical volume name=lvorasw,size= 10000M
( ทำ ที่ node1 )
node1# lvcreate -L 10000 -n lvorasw /dev/vgorasw
Logical volume "/dev/vgorasw/lvorasw" has been successfully created with
character device "/dev/vgorasw/rlvorasw".
Logical volume "/dev/vgorasw/lvorasw" has been successfully extended.
Volume Group configuration for /dev/vgorasw has been saved in /etc/lvmconf/vgorasw.conf
node1# lvcreate -L 6000 -n lvoraarch /dev/vgoraarch
Logical volume "/dev/vgorasw/lvoraarch" has been successfully created with
character device "/dev/vgorasw/rlvoraarch".
Logical volume "/dev/vgorasw/lvoraarch" has been successfully extended.
Volume Group configuration for /dev/vgorasw has been saved in /etc/lvmconf/vgorasw.conf
node1# lvcreate -L 600000 -n lvorasw /dev/vgoradata
node1# lvcreate -L 10000 -n lvmq /dev/vgmq
 
 
 

9. สร้าง file system บน logical volume ( ทำ ที่ node1 )
node1# newfs -F vxfs /dev/vgorasw/rlvorasw
Volume Group configuration for /dev/vgorasw has been saved in /etc/lvmconf/vgorasw.conf
node1# newfs -F vxfs /dev/vgorasw/rlvoraarch
node1# newfs -F vxfs /dev/vgorasw/rlvoradata
node1# newfs -F vxfs /dev/vgorasw/rlvmq

mount=/opt/mqm,/opt/ibm/,var/mqm,
lv= lvoptmqm,lvoptibm,lvvarmqm
vgorasw
mount=/app/oracle
lv= lvorasw
vgoraarch
mount=/data/oracle/archive/MYPKG
lv=lvoraarch
vgoradata
mount=/data/oracle/oradata/MYPKG
 
 

10. mount directory จาก file system ที่สร้างขึ้นมา ( ทำ ที่ node1 )
node1# mkdir /opt/mqm
node1# mkdir /opt/ibm
node1# mkdir /var/mqm
node1# mkdir –p /app/oracle
node1# mkdir –p /data/oracle/archive/MYPKG
node1# mkdir  -p /data/oracle/oradata/MYPKG
 
 

11. Deactivate vg ( ทำ ที่ node1 )
node1# vgchange -a n vgorasw
Volume group "vgorasw" has been successfully changed.
node1# vgchange -a n vgoraarch
node1# vgchange -a n vgoradata
node1# vgchange -a n vgmq
 

12. Export mapfile ( ทำ ที่ node1 )
node1# vgexport -p -s -m /tmp/vgorasw.map /dev/vgorasw
node1# vgexport -p -s -m /tmp/vgoraarch.map /dev/vgoraarch
node1# vgexport -p -s -m /tmp/vgoradata.map /dev/vgoradata
node1# vgexport -p -s -m /tmp/vgmq.map /dev/vgmq

13. Remote copy mapfile ไปที่ อีก node ( ทำ ที่ node1 )
node1# rcp /tmp/*.map node2:/tmp/

14. สร้าง director ของ group ( ทำ ที่ node2 )
node2# mkdir /dev/vgorasw
node2# mkdir /dev/vgoraarch
node2# mkdir /dev/vgoradata
node2# mkdir /dev/vgmq
 

15. สร้าง node ของ volumn group ( ทำ ที่ node2 )
node2# mknod /dev/vgorasw/group c 64 0x010000
node2# mknod /dev/vgoraarch /group c 64 0x020000
node2# mknod /dev/vgoradata /group c 64 0x030000
node2# mknod /dev/vgmq /group c 64 0x040000
 

16. Import mapfile ที่ได้จาก node1 ( ทำ ที่ node2 )
node2# vgimport -s -m /tmp/vgorasw.map /dev/vgorasw
node2# vgimport -s -m /tmp/vgoraarch.map /dev/vgoraarch
node2# vgimport -s -m /tmp/vgoradata.map /dev/vgoradata
node2# vgimport -s -m /tmp/vgmq.map /dev/vgmq
 

17. สร้าง directory ให้เหมือนกับ node1 ที่จะ mount ( ทำ ที่ node2 )
node2# mkdir /opt/mqm
node2# mkdir /opt/ibm
node2# mkdir /var/mqm
node2# mkdir –p /app/oracle
node2# mkdir –p /data/oracle/archive/MYPKG
node2# mkdir  -p /data/oracle/oradata/MYPKG
 
 

18. ถ้าต้องการ หลาย package หรือ หลาย volume group ก็ให้ทำจาก step 2-17 แต่เปลี่ยนชื่อ volumn group ,logical volumn,mount point ได้ตามต้องการ
If want to multiple package then Go to step 2-17 

2. Create a Serviceguard Cluster


1. สร้าง file cmnodelist พร้อมกับใส่ข้อมูลของทั้ง 2 node ( ทำ ที่ node1 )
node1# vi /etc/cmcluster/cmclnodelist  
node1            root
node2            root
 

2. Remote copy cmnodelist file ไปที่ อีก node ( ทำ ที่ node1 )
node1# rcp /etc/cmcluster/cmnodelist
  node2: /etc/cmcluster/cmnodelist  

3. สร้าง ascii ไฟล์ เพื่อจะนำมาใช้ในการ edit ข้อมูลเพิ่มว่าต้องการ cluster ชื่ออะไร hearbeat คือ ip ใด ( ทำ ที่ node1 )
node1# cd /etc/cmcluster
 
node1# cmquerycl -n node1 -n node2 -C conf.ascii
 
 
Warning: The disk at /dev/dsk/c10t0d2 on node node1 does not have an ID.
Warning: The disk at /dev/dsk/c10t0d2 on node node2 does not have an ID.
Warning: Disks which do not have IDs cannot be included in the topology description.
Use pvcreate(1m) to give a disk an ID.
 
NODE_NAME                    node1
  NETWORK_INTERFACE              lan0
    HEARTBEAT_IP            172.16.10.101
  NETWORK_INTERFACE              lan2
  NETWORK_INTERFACE              lan4
    HEARTBEAT_IP            192.168.2.1
  NETWORK_INTERFACE              lan3
  FIRST_CLUSTER_LOCK_PV        /dev/dsk/c8t0d2
# List of serial device file names
# For example:
# SERIAL_DEVICE_FILE                /dev/tty0p0
 
# Possible standby Network Interfaces for lan0: lan2.
# Possible standby Network Interfaces for lan4: lan3.
 
NODE_NAME                    node2
  NETWORK_INTERFACE              lan0
    HEARTBEAT_IP            172.16.10.102
  NETWORK_INTERFACE              lan2
  NETWORK_INTERFACE              lan4
    HEARTBEAT_IP            192.168.2.2
  NETWORK_INTERFACE              lan3
  FIRST_CLUSTER_LOCK_PV        /dev/dsk/c10t0d2
 
HEARTBEAT_INTERVAL                              1000000
NODE_TIMEOUT                              5000000

4. edit conf.ascii ไฟล์
แก้ cluster ชื่ออะไร
แก้ hearbeat คือ ip ใด
แก้ hearbeat_interval คือเวลาใด
แก้ node_timeout คือเวลาใด
แก้ volume group คือ volume ใด
( ทำ ที่ node1 )
node1# vi conf.ascii
 
 
CLUSTER_NAME       MYCLUST
 
FIRST_CLUSTER_LOCK_VG           /dev/vgorasw
  
NODE_NAME                         node1
  NETWORK_INTERFACE    lan0
    HEARTBEAT_IP                 172.16.10.101     
  NETWORK_INTERFACE    lan2   
  NETWORK_INTERFACE    lan4
    HEARTBEAT_IP                 192.168.2.1   
  NETWORK_INTERFACE    lan3
  FIRST_CLUSTER_LOCK_PV   /dev/dsk/c8t0d2 
 
NODE_NAME                         node2
  NETWORK_INTERFACE    lan0
    HEARTBEAT_IP                 172.16.10.102
  NETWORK_INTERFACE    lan2
  NETWORK_INTERFACE    lan4
    HEARTBEAT_IP                 192.168.2.2     
  NETWORK_INTERFACE    lan3
  FIRST_CLUSTER_LOCK_PV   /dev/dsk/c10t0d2 
 
 
HEARTBEAT_INTERVAL    1000000
NODE_TIMEOUT                   5000000
 
VOLUME_GROUP                /dev/vgorasw
VOLUME_GROUP                /dev/vgmp2
VOLUME_GROUP                /dev/vghptbispkg

5. ทำการ check config ของไฟล์ conf.ascii ว่าถูกต้องหรือไม่ถ้าถูกต้องก็ทำการ apply config
( ทำ ที่ node1 )
 
node1# cmcheckconf -C /etc/cmcluster/conf.ascii
node1# vgchange -a y vgorasw
node1# cmapplyconf -C /etc/cmcluster/conf.ascii
 
 
Begin cluster verification...
Adding node node1 to cluster ngen.
Adding node node2 to cluster ngen.
 
Verification completed with no errors found.
Use the cmapplyconf command to apply the configuration.
Activated volume group
Volume group "vgorasw" has been successfully changed
node1# vgchange -a e vgorasw for vgchange with cluster

6. ถ้าถูกต้องแล้วทำการ Remote copy cmnodelist file ไปที่ อีก node ( ทำ ที่ node1 )
node1# rcp /etc/cmcluster/conf.ascii  node2: /etc/cmcluster/conf.ascii 

7. ทำการrun cluster( ทำที่ node1 )
node1# cmruncl
 

8. ทำการ view cluster เพื่อcheck status ของ node หรือ interface ได้ ( ทำ ที่ node1 )
node1# cmviewcl -v
CLUSTER      STATUS
ngen   up
 
  NODE         STATUS       STATE
  node1       up           running
 
    Network_Parameters:
    INTERFACE    STATUS       PATH         NAME
    PRIMARY      up           8/16/6       lan0
    STANDBY      up           8/20/5/1     lan4
 
  NODE         STATUS       STATE
  node2       up           running
 
    Network_Parameters:
    INTERFACE    STATUS       PATH         NAME
    STANDBY      up           8/20/5/1     lan4
    PRIMARY      up           8/16/6       lan0
 

3. Create an application package



1. สร้าง package config ไฟล์ เพื่อจะนำมาใช้ในการ edit ข้อมูลเพิ่มว่าต้องการ package ชื่ออะไร มี node ใดบ้างใน package,runscript อะไรบ้าง,subnet ใด
( ทำ ที่ node1 )
node1# mkdir -p /etc/cmcluster/ora_MYPKG/
node1# cd /etc/cmcluster/ora_MYPKG/
node1# cmmakepkg -p ora_MYPKG.conf
 

2. edit conf.ascii ไฟล์
แก้ package_name ชื่ออะไร
แก้ node_name คือ nodeใดบ้าง
แก้ run_script คือไฟล์ไหน
แก้ halt_script คือไฟล์ไหน
แก้ service_name คือ sidของ oracle
แก้ subnet คือ subnet ของpackage
( ทำ ที่ node1 )
node1# vi ora_MYPKG.conf
 
PACKAGE_NAME      ora_MYPKG     
                                 
NODE_NAME          node1                                               
NODE_NAME          node2                                               
 
RUN_SCRIPT          /etc/cmcluster/ora_MYPKG/ora_MYPKG.cntl                          
HALT_SCRIPT        /etc/cmcluster/ora_MYPKG/ora_MYPKG.cntl                          
 
SERVICE_NAME      ora_MYPKG
 
SUBNET                  172.16.10.0

3. สร้าง control file เพื่อนำมาใช้ใน package เพื่อจะนำมาใช้ในการ edit ข้อมูลเพิ่มว่าต้องการ ip ใด, volume ใด,file system ใด
( ทำ ที่ node1 )
node1# cmmakepkg -s ora_MYPKG.cntl
 
 

4. edit ora_MYPKG.cntl ไฟล์
แก้ VG[X] ชื่ออะไร
แก้ LV[X]=คือlvใดบ้าง
แก้ FS[X]=คือlvใดบ้าง
แก้ FS_MOUNT_OPT[X]=คือจะmount ด้วย optionใดบ้าง
แก้ IP[X] คือ ip ของ package
แก้ SUBNET[X] คือ subnet ของ package
แก้ SERVICE_NAME[X] คือไฟล์ไหน
แก้ SERVICE_CMD[X] คือไฟล์ไหน
แก้ SERVICE_RESTART[X] คือไฟล์ไหน
เพิ่ม การ start/stop database ลงบน function customer_defined ( ทำ ที่ node1 )
node1# vi ora_MYPKG.cntl
 
VG[0]=vgorasw
VG[1]=vgoraarch
VG[2]=vgoradata
                                 
LV[0]=/dev/vgorasw/lvorasw; 
FS[0]=/app/oracle;
FS_MOUNT_OPT[0]="-o rw,suid,largefiles,delaylog,datainlog";
FS_TYPE[0]="vxfs"
LV[1]=/dev/vgoraarch/lvoraarch;
FS[1]=/data/oracle/archive/MYPKG;
FS_MOUNT_OPT[1]="-o
 rw,suid,largefiles,delaylog,nodatainlog"; FS_TYPE[1]="vxfs"
LV[2]=/dev/vgoradata/lvoradata;
FS[2]=/data/oracle/oradata/MYPKG;
FS_MOUNT_OPT[2]="-o
rw,suid,largefiles,delaylog,nodatainlog";
FS_TYPE[2]="vxfs"
 
 
IP[0]= 172.16.10.111                            
SUBNET[0]= 172.16.10.0
 
 
 
function customer_defined_run_cmds
{
                   /etc/cmcluster/ora_MYPKG/MYPKG_db_startup.sh
                   test_return 51
}
 
function customer_defined_halt_cmds
{
                   /etc/cmcluster/ora_MYPKG/MYPKG_db_shutdown.sh
                   test_return 52
}
 

5. ทำการ copy config ของไฟล์conf กับ cntl ไป อีก node ( ทำ ที่ node1 )
node1# rcp /etc/cmcluster/ora_MYPKG/ora_MYPKG.conf  
node2: /etc/cmcluster/ora_MYPKG/ora_MYPKG.conf
node1# rcp /etc/cmcluster/ora_MYPKG/ora_MYPKG.cntl  
node2: /etc/cmcluster/ora_MYPKG/ora_MYPKG.cntl 

6. ทำการ Check config ของไฟล์ ora_MYPKG.conf ว่าถูกต้องหรือไม่
node1# cmcheckconf -P ora_MYPKG.conf
Begin package verification...
Verification completed with no errors found.
Use the cmapplyconf command to apply the configuration.
 

7. ทำการ apply config ของ package บนให้ cluster ( ทำ ที่ node1 )
node1# cmapplyconf -P ora_MYPKG.conf
Begin package verification...
Modify the package configuration ([y]/n)? y
Completed the cluster update.
 
 

8. สั่งให้ package ทำ autorun บน ( ทำ ที่ node1 )
node1# cmmodpkg -e ora_MYPKG
 

9. ถ้าต้องการ หลาย package หรือ หลาย volume group ก็ให้ทำจาก step 1-8 แต่เปลี่ยนชื่อ volumn group ,logical volumn,mount point ได้ตามต้องการ
If want to multiple package then Go to step 1-8


4. Automatic Cluster startup






แก้ไข /etc/rc.config.d/cmclusterให้ parameter autostart_cmcld=1 เพื่อให้ automatic cluster startup ตอน reboot เครื่อง ( ทำ ทั้ง 2 node )

vi /etc/rc.config.d/cmcluster

AUTOSTART_CMCLD=1
Loading