HP-UX下Cluster的管理

HP-UX下Cluster的管理,包括磁盘方面的基础知识[@more@]

HP-UX下Cluster的管理

一、群集的构成
HP系列小型机环境下,一般以双机共享磁盘组构成一个群集(Cluster),如下图所示

unix disk devide

从上图可以看出,HP小型机的群集构成一般有:两个以节点,一个共享磁盘组,一个以上心跳网络,一个以上应用网络。群集完成后,所有设备以一个整体对外服务,当其中任何一种设备发生故障时,系统将自动倒换到相应的备份设备,使系统的服务不致于中断。
因此,建立群集的步骤一般为:
1、共享磁盘组的磁盘空间划分
2、配置各节点的网络
3、建立并发布群集配置
4、建立并发布应用程序的群集配置

二、磁盘空间的划分
HP_UX的工作站或服务器为我们提供了两种硬盘管理的方法:整盘方式和LVM(Logical Volume Manager)方式,两种方式可以共存于同一个系统内,但不能存在于同一块硬盘上。其实,无论是整盘方式还是LVM方式都是以分区的方式来组织管理硬盘的。每个分区只能有一个文件系统。
在整盘方式中,整个硬盘就是一个分区。也就是说在这个硬盘上只有一个文件系统,如果我们在这种方式下安装UNIX系统,所有的文件将安装在这个文件系统的各个目录下。这种方法很容易使用和理解,但有很大的局限性:首先,文件系统不能跨盘分配。当这个文件系统需要更多的空间时,很难对它进行扩展。第二,每个物理硬盘只能有一个文件系统,如果把整个系统装在一个文件系统中,我们就无法为特定的应用程序预留存储空间,因为某些其它的应用程序或文件可能会占满整个文件系统的剩余空间。

基于以上原因,在HP_UX系统中最好还是采用LVM方式来管理硬盘。LVM,即逻辑卷管理,可以将多个硬盘的空间(在LVM中称之为物理卷)组合在一起,称之为卷组(Volumes Group),然后在这个卷组中可以继续划分任意大小的逻辑卷(Logical Volumes),每个逻辑卷相当于一个分区(图2)

unix disk devide

这种方式克服了整盘方式中的多种限制:逻辑卷可以跨越多块物理硬盘;可以在一块物理硬盘上划分多个逻辑卷;只要物理空间存在,逻辑卷可以任意扩充;在独立的分区上安装应用程序,保证了程序的预留空间。
当我们拿到一块新硬盘时,应该做以下步骤:
1. 建立物理卷(PV)
2. 建立卷组(VG)
3. 建立逻辑卷(LV)
4. 建立文件系统
一块物理硬盘在被LVM管理时被称为“物理卷”。在LVM能对其进行管理之前需要在硬盘上产生一些特殊的数据结构,这个过程就是建立物理卷。用 ”pvcreate”命令完成物理卷的建立:
pvcreate /dev/rdsk/c0t3d0 ;假设硬盘设备文件为/dev/rdsk/c0t3d0
注意这里的硬盘设备文件应该用字符设备文件
建立物理卷后,这块硬盘就可以被划入“卷组”中了。一个卷组是由一个或多个物理卷组成的,这些物理卷组成了一个磁盘空间池,可以把其中的存储空间分配给一个或多个逻辑卷。
卷组的定义同样遵循设备文件的命名规则。新定义的卷组在/dev下产生一个目录,在目录中产生一个组文件,类似于其它设备文件,通过它对卷组进行操作。例如,建立卷组1,将会产生:
/dev/vg01 ;卷组目录
/dev/vg01/group ;组文件
卷组vg00通常是默认的根卷组,包含默认的启动盘和HP_UX操作系统的主要部分。用以下命令建立卷组1:
mkdir /dev/vg01 ;建立组目录
mknod /dev/vg01/group c 64 0x010000 ;建立组文件。c指示此文件为
字符设备文件;64为设备驱动程
在内核中的代号;0x010000为物
理地址,其中前两位为组编号

vgcreate vg01 /dev/dsk/c0t3d0 将物理硬盘划入卷组
可以用vgdisplay命令查看已建立卷组的情况。

逻辑卷是用户最终可用的磁盘分区。同样,通过设备文件与其进行通信。在建立一个逻辑卷后,卷组目录下将产生两个文件:一个用于字符设备操作,另一个用于块设备操作。例如,建立逻辑卷1后将产生:
/dev/vg01/lvol1 ;块设备文件
/dev/vg01/rlvol1 ;字符设备文件,数据库的数据文件可利用的设备
用lvcreate命令建立逻辑卷:
lvcreate –L 100 /dev/vg01 ;在vg01下建立一个100MB的逻辑卷
可以用lvdisplay查看逻辑卷状况。
为了在新建的逻辑卷分区上安装系统或其它应用程序,需要对其进行文件系统的初始化。HP_UX主要使用两种文件系统:HFS和VxFS。在10.20版以后,除根分区和内核分区外其它分区推荐用VxFS文件系统。用newfs命令初始化文件系统。
newfs –F vxfs /dev/vg01/rlvol1 ;建立vxfs文件系统
这样这块硬盘就可以投入使用了。
当发现当前使用的分区容量不够了,需要扩容,又不能破坏原有的数据。HP提供了很好的扩容方案,可以对卷组、逻辑卷和文件系统按需要进行扩容:
对VG扩容
vgextend vg01 /dev/dsk/c0t5d0

对LV扩容
lvextend –L 200 /dev/vg01/lvol1

扩充文件系统
umount /myfs1
extendfs /dev/vg01/rlvol1
mount /myfs1
这样当前使用的分区就扩展完毕了,新增的容量使用当前的文件系统,在扩展文件系统之前需将分区先卸载下来,扩展完毕后再装上。以上这些操作过程最好在单用户模式下进行。
如果共享磁盘组上全部用作数据库的数据存放空间,可省略文件系统的建立,因为数据库的数据文件均可建立在字符设备上。

三、配置各节点的网络
各节点的网络一般包括心跳网络和应用网络,两种网络在主机上的配置完全一样。一台主机上至少有两块网卡,一块专门用于传送心跳信号,另一块用于对外服务。要了解主机上有几块可用网卡,可用lanscan命令来查看,lanscan命令会列出所有网卡的接口名,如:lan0、lan1、lan2等。配置各网卡的方法有两种:
1、ifconfig命令
用ifconfig配置网卡的格式为:
Ifconfig interface ip-addr netmask mask
其中interface为lanscan命令所得的接口名,ip-addr为网络地址,mask为子网掩码,如:
Ipconfig lan0 10.75.9.41 netmask 255.255.255.0
配置完成后,需手工修改/etc/hosts文件:
10.75.9.41 lan-alias comment
2、用sam工具
Sam为HP-UX提供的一个菜单界面的资源管理工具,其中一项为网络的配置,配置界面较为友好,并能自动修改/etc/hosts文件,所以,配置网络建议使用该工具。

四、建立并发布Cluster配置
HP-UX Cluster的配置也可以用sam工具来完成,但配置速度极慢。建议使用HP提供的配置模板来建立,模板文件一般为/etc/cmcluster/cmclconf.ascii,该文件为文本格式,可以用vi进行编辑,其全部内如下:
# **********************************************************************
# ********* HIGH AVAILABILITY CLUSTER CONFIGURATION FILE ***************
# ***** For complete details about cluster parameters and how to ****
# ***** set them, consult the cmquerycl(1m) manpage or your manual. ****
# **********************************************************************

# Enter a name for this cluster. This name will be used to identify the
# cluster when viewing or manipulating it.

CLUSTER_NAME cluster1 /*Cluster名字*/


# Cluster Lock Device Parameters. This is the volume group that
# holds the cluster lock which is used to break a cluster formation
# tie. This volume group should not be used by any other cluster
# as cluster lock device.

FIRST_CLUSTER_LOCK_VG /dev/LOCKVG /*Cluster锁盘设备,不能作为它用*/

# Definition of nodes in the cluster.
# Repeat node definitions as necessary for additional nodes.

NODE_NAME oracle1 /*节点1*/
NETWORK_INTERFACE lan0
HEARTBEAT_IP 10.75.9.41 /*心跳网络1地址*/
NETWORK_INTERFACE lan1 /*建议将所有可用网卡加入心跳网络*/
HEARTBEAT_IP 135.193.255.100 /*心跳网络2地址*/
NETWORK_INTERFACE lan2
HEARTBEAT_IP 10.75.8.41 /*心跳网络1地址*/
FIRST_CLUSTER_LOCK_PV /dev/dsk/c4t0d0 /*锁盘的物理硬盘设备*/
# List of serial device file names
# For example:
# SERIAL_DEVICE_FILE /dev/tty0p0

# Possible standby Network Interfaces for lan0: lan1.
# Warning: There are no standby network interfaces for lan2.

NODE_NAME oracle2 /*节点2,以下配置均同节点1*/
NETWORK_INTERFACE lan0
HEARTBEAT_IP 10.75.9.42
NETWORK_INTERFACE lan1
HEARTBEAT_IP 135.193.255.101
NETWORK_INTERFACE lan2
HEARTBEAT_IP 10.75.8.42
FIRST_CLUSTER_LOCK_PV /dev/dsk/c4t1d0
# List of serial device file names
# For example:
# SERIAL_DEVICE_FILE /dev/tty0p0

# Possible standby Network Interfaces for lan0: lan1.
# Warning: There are no standby network interfaces for lan2.
# Cluster Timing Parmeters (microseconds).

HEARTBEAT_INTERVAL 1000000 /*心跳信号传送间隔,单位微秒*/
NODE_TIMEOUT 2000000 /*节点是否在线检验时超:2秒,若在该单位时间内未有该节点的心跳信号,则认为该节点离线,若该节点为Cluster的主节点,将发生倒换*/

# Configuration/Reconfiguration Timing Parameters (microseconds).

AUTO_START_TIMEOUT 600000000 /*Cluster自动启动的时超:10分钟*/
NETWORK_POLLING_INTERVAL 2000000

# Package Configuration Parameters.
# Enter the maximum number of packages which will be configured in the cluster.
# You can not add packages beyond this limit.
# This parameter is required.
MAX_CONFIGURED_PACKAGES 5 /*Cluster最大允许管理程序包数量*/
# List of cluster aware Volume Groups. These volume groups will
# be used by package applications via the vgchange -a e command.
# For example:
# VOLUME_GROUP /dev/vgdatabase.
# VOLUME_GROUP /dev/vg02.

#VOLUME_GROUP /dev/LOCKVG
VOLUME_GROUP /dev/DATAVG /*需要Cluster管理的卷组*/
VOLUME_GROUP /dev/LOCKVG

以上/*....*/中间的本文的注释,将对应的项修改为你所配置的环境,即完成了Cluster的配置。
当完成上述配置完成后,可以用命令来检验你的配置文件是否与你环境相符合:
cmcheckconf -v -k -C /etc/cmcluster/cmclconf.ascii
注意该命令执行速度该慢,因为命令需要校验所配置的卷组是否合法,其执行的进度可以在/var/adm/syslog/syslog.log文件中查看。当命令执行无任何错误或警告返回时,才可以说配置完成,否则就需反复检查和修改配置文件。注意,该命令一定要加上-K参数,否则执行速度将极慢无比。
当cmcheckconf命令通过后,需将该配置文件发布到各节点上,使Cluster的配置生效,发布配置的命令是:
cmapplyconf -v -k -C /etc/cmcluster/cmclconf.ascii
该命令将把该配置自动形成二进制文件分发到配置文件里定义的所有节点上。注cmclconf.ascii文件并不会被分发。

五、建议并发布Cluster所管理的程序包的配置
经过前面三步的配置,Cluster已基本建立,因为Cluster已能管理所定义的节点和磁盘资源,但使用这些资源的应用程序尚未纳入Cluster的管理当中,下面这一步就要一工作。
HP-UX的Cluster提供了一定的编程机制,所有应用程序如遵循这些机制,都可以作为Cluster的程序包纳入Cluster的管理当中。Cluster的程序包配置也以模板的形式来完成:
1、在/etc/cmcluster下建立目录pkg1
2、在pkg1目录下配置模板文件/etc/cmcluster/pkg1/pkg1conf.ascii
/etc/cmcluster/pkg1conf.ascii模板的内容为(为了节省篇幅,我们省略了原模板中的大部分英文注释):

# Enter a name for this package. This name will be used to identify the
# package when viewing or manipulating it. It must be different from
# the other configured package names.
#程序包名称:
PACKAGE_NAME pkg1

#程序包转移策略:按所配置的顺序
FAILOVER_POLICY CONFIGURED_NODE

#程序包转移到Cluster的主节点的策略:手工。一般Cluster配置中一个节点定义为#Primary,另一个定义成Secondary,当资源(包括程序包)自动倒换到Secondary节
#点上后,该配置决定当Primary节点恢复后,是否需要自动将资源转移到Primary节
#点上来。
FAILBACK_POLICY MANUAL

#程序包运行的节点。
NODE_NAME oracle1
NODE_NAME oracle2

#定义加载和卸载程序包的shell脚本,超时参数
RUN_SCRIPT /etc/cmcluster/pkg1/control.sh
RUN_SCRIPT_TIMEOUT NO_TIMEOUT
HALT_SCRIPT /etc/cmcluster/pkg1/control.sh
HALT_SCRIPT_TIMEOUT NO_TIMEOUT

#程序包所使用及监测的子网
SUBNET 135.193.255.0

#程序包切换开关,当指定的程序包在当前节点状态为DOWN时是否发生切换
PKG_SWITCHING_ENABLED YES

#网络监测切换开关,当监测的网络故障时,是否发生切换,设为YES
NET_SWITCHING_ENABLED YES

#当有任何故障出现时,Cluster是否halt该节点上所有程序包,一般设为NO
NODE_FAIL_FAST_ENABLED NO

当配置完成该模板后,也可以用cmcheckconf来进行配置的检查:
cmcheckconf -v -k -P /etc/cmcluster/pkg1/pkg1conf.ascii
以上检查速度会很快。当检查完成后,我们就可以将该配置发布到各节点了:
cmapplyconf -v -k -P /etc/cmcluster/pkg1/pkg1conf.ascii
在上述的配置中,我们注意到文件中定义了程序包的加载和卸载shell脚本,下面我们就要配置该shell脚本,其需要修改的内容为:
# Set PATH to reference the appropriate directories.
#设置程序包的搜索路径
PATH=/usr/bin:/usr/sbin:/etc:/bin

# VOLUME GROUP ACTIVATION:
# Specify the method of activation for volume groups.
#设置卷组激活的命令及参数
VGCHANGE="vgchange -a e" # Default

# VOLUME GROUPS
# Specify which volume groups are used by this package. Uncomment VG[0]=""
#设置程序包所用到的卷组,注:该卷组一定是Cluster所管理的卷组
VG[0]=DATAVG


# FILESYSTEM UNMOUNT COUNT
# Specify the number of unmount attempts for each filesystem during package
# shutdown. The default is set to 1.
FS_UMOUNT_COUNT=1


# FILESYSTEM MOUNT RETRY COUNT.
# Specify the number of mount retrys for each filesystem.
FS_MOUNT_RETRY_COUNT=0


# IP ADDRESSES
# Specify the IP and Subnet address pairs which are used by this package.
# Hint: Run "netstat -i" to see the available subnets in the Network field.
#设置程序包所使用的子网和浮动IP,注该浮动IP就是对外服务的IP,当系统发生切#换时该IP自动附加到新的节点的程序包上,使服务不中断
IP[0]=135.193.255.99
SUBNET[0]=135.193.255.0

# SERVICE NAMES AND COMMANDS.
# Specify the service name, command, and restart parameters which are

function customer_defined_run_cmds
{
#定义程序包加载的方法,如本例为Oracle的实例及其listener启动的语句
su - oracle -c "dbstart"
su - oracle -c "lsnrctl start"
test_return 51
}

# This function is a place holder for customer define functions.
# You should define all actions you want to happen here, before the service is
# halted.

function customer_defined_halt_cmds
{
#定义程序包卸载的方法,如本例为Oracle的实例及其listener停止的语句
su - oracle -c "dbshut"
su - oracle -c "lsnrctl stop"
test_return 52
}
# END OF CUSTOMER DEFINED FUNCTIONS
以上修改在Cluster的一个节点上修改后,用ftp或rcp将该文件control.sh拷贝到相同目录,如本例,用Rcp在主机oracle1上完成拷贝:
Rcp /etc/cmcluster/pkg1/control.sh oracle2:/etc/cmcluster/pkg1/control.sh
经过以上四个步骤的配置,Cluster的整个应用就完成了,可以用命令来启动Cluster服务:
Cmruncl -v
当命令运行返回结果为“Complete without any warnning”时,恭喜,Cluster已正常工作了,为验证这一点可以用:
Cmviewcl -v|more
来进行查看Cluster的运行情况,正常时有如下显示:
CLUSTER STATUS
Cluster1 up

NODE STATUS STATE
Oracle1 up running

Network_Parameters:
INTERFACE STATUS PATH NAME
PRIMARY up 0/0/0/0 lan0
PRIMARY up 0/4/0/0 lan1
PRIMARY up 0/7/0/0 lan2

PACKAGE STATUS STATE PKG_SWITCH NODE
Pkg1 up running abled oracle1

Policy_Parameters:
POLICY_NAME CONFIGURED_VALUE
Failover configured_node
Failback manual

Script_Parameters:
ITEM STATUS MAX_RESTARTS RESTARTS NAME
Subnet up 135.193.255.0

Node_Switching_Parameters:
NODE_TYPE STATUS SWITCHING NAME
Primary up enabled oracle1 (current)
Alternate up enabled oracle2

NODE STATUS STATE
Oracle2 up running

Network_Parameters:
INTERFACE STATUS PATH NAME
PRIMARY up 0/0/0/0 lan0
PRIMARY up 0/4/0/0 lan1
PRIMARY up 0/7/0/0 lan2

以上信息显示Cluster1状态为UP,节点有Oracle1和Oracle2,两个节点上的心跳网络正常,Cluster当前资源由节点Oracle1管理,并且程序包PKG1正常运行在Oracle1节点上。
Cluster管理的命令除上述涉及到的以外,还有如下常用的命令:
停止Cluster的运行:
cmhaltcl -v -f
激活节点上的Cluster运行:
cmrunnode -v -f node_name
停止节点上的Cluster运行:
cmhaltnode -v -f node_name
在某一节点上运行程序包:
cmrunpkg -v -n node_name package_name
在某一节点上停止程序包的运行:
cmhaltpkg -v -n node_name package_name

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/653579/viewspace-907461/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/653579/viewspace-907461/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值