Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18096
  • 博文数量: 4
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 77
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-07 10:15
文章分类
文章存档

2013年(4)

我的朋友

分类: LINUX

2013-06-07 10:24:16

NewStart HA是一款支持多种Linux平台的双机高可用软件,具有稳定可靠,简约易用等特性。在很多电信级服务器中都有用。本文关于提供NewStart HA的典型配置技巧。

 

1、             业务需求(oracle服务器)

公司需搭建一个oracle服务器运行关键业务,同时要求该服务器“稳定”、“可靠”、“有效”、“持续运行”,能提供247的不间断服务;经过一系列筛选后,最终选择SLES 11 + NewStart HA的双机高可用集群方案。

 

2、             前期准备:

2.1 硬件需求:

(两台物理机AB,以下硬件配置相同,型号品牌无限制,不详列)

服务器A

数量

用途

硬盘

1

安装Linux操作系统,/var可用空间预留不少于1GB

网卡

3

bond0用于工作链路(两张千兆网卡eth0/1,mode =1,也可以使用单张网卡)

eth2用于心跳链路(百兆网卡以上)

串口(可选)

1

用于心跳链路(HA包装盒里面有串口线)

磁盘阵列

1

存放共享数据,手动划分两个区,共享数据存放于/dev/sdb2

HA提供一个仲裁盘的数据安全保障机制,需要在磁盘上划分一块小空间,需30M左右,不需格式化,手动划分/dev/sdb1

   

2.2软件需求:

软件名称

版本

说明

SLES 11

Sp1

操作系统

Oracle

10g

数据库软件

Newstart HA

3.0.1.07

newstartha高可用软件

 

3、             安装配置

两台物理机子操作系统(suse11 sp1)和业务软件(oracle)已部署好,各自都运行正常,其中oracle的数据库已存放于共享磁阵/dev/sdb2中,挂载目录为/home/db

 

最新商用NewStart HA版本(如3.0.1.07)已下载,附上查询最新版本地址:

 

31 安装NewStart HA

 

把网上下载的iso文件用二进制(bin)传输方式分别上传到两台服务器/home/目录,挂载iso文件到/mnt子目录:

# mount -o loop  /home/xxxx.iso /mnt

 

执行安装脚本开始安装:

# /mnt/install

HA Version:

       1)New Version:3.0.1.07

       2)Cancel

 

please select Version [1-2]?1

                NewStart HA Installation Program

                Version: 3.0.1.07

                Support email:  ha-support@gd-linux.com

 

        1)NewStart HA Server Program and CLI Administrative Tool 1

        2)Web-based Administrative Tool (options)(version: 20121101) 2

        3)All components3

        4)Cancel

 

select the components to be installed [1-4]?

说明:

1.                 安装主程序包和cli管理工具(命令行)

2.                 安装Web管理工具

3.                 安装所有模块

 

安装过程:

select the components to be installed [1-4]?3

Checking NewStart HA ...                NOT running

 

Installing ...

Installing the

 /mnt/nsha/x86/sles9/newstartha-3.0.1.07-20130107.i586.rpm ...

Preparing...    ########################################### [100%]

1:newstartha    ########################################### [100%]

newstartha      0:off  1:off  2:off  3:on   4:off  5:on   6:off

Installing liblvm2clusterlock.so ok.

输入产品许可号(下面为试用SN

please enter the SN: 00TB24-FC0TCF-629A1H-B00D46

 

Make /etc/ha.d/lic/newstartha.key succeeded.

                                                                        [OK]

 

web-based administrative tool install, deploying, please wait...

jdk installed ok!

tomcat installed ok!

web-based administrative tool installed ok!

 

Create keys(/usr/lib/newstartha/keystore.exp 1), please wait...

Create tomcat.keystore OK.

 

Do you want to start web-based administrative tool automatically as a system service? y(es) or n(o)? y 系统启动时是否自动启动Web管理工具

 

Starting Web-based Administrative Tool Service ...

[OK]

Please remember to change the default web password immediately!

 

The component(s) is installed completely.

至此,HA程序安装完成,两台机器都执行完上述操作后继续往下配置。

 

32 申请license文件

HA启动会验证keylicense文件有效性,需按以下方法进行license申请。

 

1、  把两台机子上的/etc/ha.d/lic/newstartha.key文件打包(名字区分好,如newstartha.key_node1/2二进制(bin)方式下载,然后发送到邮箱: 进行license文件的申请。

2、  收到的license文件后改名为newstartha.lic,用二进制(bin)方式上传到服务器,放到/etc/ha.d/lic/目录,因为每个节点newstartha.lic内容不同,key文件与license文件一一对应,所以不要搞混,否则HA无法启动。

申请完成,如node1

#ls -l /etc/ha.d/lic

-rw-r--r-- 1 root root    502 Mar 29 11:40 newstartha.key

-rw-r--r-- 1 root root     52 Mar 29 15:14 newstartha.lic

 

33 编写用于管控oracleHA脚本

HA脚本功能类似于/etc/init.d/目录下的脚本,主要是规定如何启动、停止和检测业务程序HA软件也提供了主流应用的相关脚本模版供参考,如apachetomcatoraclesybase等,位于/etc/ha.d/resource.d目录下,其中oracle模版oracle_example.ps正符合此次需求。

进入上述目录,复制oracle_example.ps模版,重命名为oracle.ps,然后拷贝到/home/script/下,最后编缉oracle.ps开头几个变量即可搞定,如:

#The following three variant should be set to proper value

ORACLE_HOME="/home/oracle_home"

ORACLE_SID="orcl"

ALERTLOG="${ORACLE_HOME}/admin/${ORACLE_SID}/bdump/alert_${ORACLE_SID}.log"

 

虽然脚本编写轻松完成,但现网中还是需要验证该脚本是否能完全管控oracle应用,下面附上手动调试过程(主要是startstopestatus状态,其中关键是status状态,返回0表示running,非0stoped.):

1、 挂载磁阵:mount /dev/sdb2 /home/db

 

2、 测试脚本:

 

2.1  业务启动:

# /home/script/oracle.ps start;echo $?

(省略)

0            返回0,表示执行start成功

 

2.2  业务状态检测:(重点)

# /home/script/oracle.ps status;echo $?

(省略)

0    返回0,表示应用running

 

2.3   业务停止:

# /home/script/oracle.ps stop;echo $?

(省略)

0          返回0,表示执行stop成功

 

2.4   业务状态检测:(重点)

# /home/script/oracle.ps status;echo $?

(省略)

1   返回1,表示应用stoped

 

另一机子执行上述操作后,HA脚本编写环节就完成,接下来是核心部份,配置集群及服务。

 

34 配置NewStart HA(重点)

主要是两方面初始化配置:分别为集群初始化和服务初始化,必须按照以上顺序进行初始化

HA支持命令行(cli)及web两种管理工具进行配置,下面是cli工具的配置过程。不过在配置之前,有些事情还是要提前做好的,列一下:

1.     确定两台机子的主机名称(等于命令uname -n结果),配置中用到;

2.     两台机子的心跳和工作链路的网卡名对应并且相同,并配置好所有网卡的固定IP

3.     确定业务的浮动IP地址;

4.     确定HA脚本位置;(3.3小节已确定:/home/script/oracle.ps

5.     清楚两个节点的mount目录;(前面安装oracle时已建好,/home/db

6.     确定第三方IP列表:HA建议配置35IP,这些IP会长时间存在的(比如交换机IP等),这些IP与工作网卡属于相同网段,但不要配成双方节点的IP,作为是检测自身网络正常与否。

 

规划的情况如下,其中双机集群的两节点分别为suse11-sp1-1suse11-sp1-2

 

suse11-sp1-1

suse11-sp1-2

说明

网口链路

bond0

192.168.1.192

192.168.1.193

工作链路,IP为物理IP,可通过公网访问服务器的集群软件,进行数据配置等操作

网口链路

eth2

192.168.111.192

192.168.111.193

心跳链路,用于集群间通讯(不能与工作链路同一网段)

串口心跳

/dev/ttyS0

/dev/ttyS0

心跳链路,直连,用于集群间通讯

浮动IP

192.168.1.196

集群启动后,会自动加载到主节点(服务运行节点)工作链路网卡上,该IP需和工作链路网卡同一网段

第三方IP列表

192.168.1.190192.168.1.200192.168.1.201

一般配置与工作链路同一网段,配置不少于两个

 

341 集群初始化,格式:cluster-init

运行cli指令,进入cli管理工具,然后运行cluster-init

cli:~>cluster-init

 

======================================

    Cluster Initialization Utility   

======================================

 

    Built: Mon Jan  7 00:04:15 2013

 

This utility sets up the initialization information of a 2-node cluster.

It prompts you for the following information:

        - Hostname

        - Information about the heartbeat channels

        - How long between heartbeat

        - How long to declare heartbeat fails

        - Watchdog configuration

        - Lock disk configuration

 

Please input cluster name:oracle_cluster

Input the first  node name and IP:suse11-sp1-1 192.168.1.192

Input the second node name and IP:suse11-sp1-2 192.168.1.193 

How long between heartbeats(in seconds)[1]:直接回车

How long to declare heartbeat has broken(in seconds)[60]: 直接回车

Do you want to enable watchdog device ? (yes/no)[no]: 直接回车

Please choose multicast heartbeat channel:

        0) eth2

        1) bond0

Select a multicast heartbeat channel [0, 1]:0

Another multicast heartbeat channel? (yes/no)[yes]:no

Do you want to add a serial heartbeat channel? (yes/no)[yes]: 直接回车

Input serial heartbeat channel[/dev/ttyS0]: 直接回车

Another serial heartbeat channel? (yes/no)[yes]:no

Do you want to enable worklink_hb ? (yes/no)[yes]: 直接回车

Do you want to add third-party ip list ? [recommended 3-5 ip]  (yes/no)[yes]: 直接回车

Please input a third-party ip address:192.168.1.190

Another thirdpart ip address? (yes/no)[yes]: 直接回车

Please input a third-party ip address:192.168.1.200

Another thirdpart ip address? (yes/no)[yes]: 直接回车

Please input a third-party ip address:192.168.1.201

Another thirdpart ip address? (yes/no)[yes]:no

Do you want to add a lock disk(recommend) ? (yes/no)[yes]: 直接回车

Please input the partition name (/dev/sdb):/dev/sdb1 这是最安磁阵规划时划分出来的仲裁盘,数据安全保障机制的一种,是可选,但推荐配置。

 

Warning:All data in /dev/sdb1 will be destroyed, sure to format it? (yes/no)[no]:yes

Do you want to enable kernel panic ? (yes/no)[no]: 直接回车

Please run service-init to initialize you services.

 

到这里cluster-init集群参数初始化已经完成,这里可执行cluster-show查看配置结果。如上述配置结果如下:

cli:~>cluster-show

 

Configuration of the cluster:

 

        clustername: oracle_cluster

        node: suse11-sp1-1 192.168.1.192

        node: suse11-sp1-2 192.168.1.193

        logfile: /var/log/ha-log

        keepalive: 1

        deadtime: 60

        watchdog: off

        mcast: eth2 226.0.86.236 694 1 0

        serial: /dev/ttyS0

        worklink_hb: on

        thirdparty: 192.168.1.190

        thirdparty: 192.168.1.200

        thirdparty: 192.168.1.201

        qdisk: /dev/sdb1

        kernel_panic: off

 

342 服务初始化,格式:service-init

cli管理工具中运行service-init.

cli:~>service-init

 

======================================

    Service Initialization Utility   

======================================

 

This utility sets up the initialization information of the service in the HA system.

It prompts you for the following information:

        - Service information

        - Application resource information

        - Public net work interface information

        - Floating IP address information.

        - Block Disk information

        - Mount information

        - Raw Disk information

 

Input service name:oracle

Is it enabled?(yes/no)[yes]:

Do you want to configure preferred node ? (yes/no)[no]:yes

Please choose preferred node:

        0) suse11-sp1-1

        1) suse11-sp1-2

Select a node: [0, 1]:0

Input start time out[60]: 直接回车

Input stop time out[120]: 直接回车

Input check interval[30]: 直接回车

Input check time out[60]: 直接回车

Input max error count[1]: 直接回车

Restart after check result is failed?(yes/no)[no]: 直接回车

Start service anyway when float IP exist?(yes/no)[no]: 直接回车

Do you want to add a application? (yes/no)[yes]: 直接回车

 

====== Application ======

Input name of application[oracle_app_0]: 直接回车

Input script of application

[/etc/ha.d/resource.d/oracle]:/home/script/oracle.ps  管控oracle脚本

Is resource critical?[yes]: 直接回车

Is resource enable?[yes]: 直接回车

Add another application? (yes/no)[no]: 直接回车

Do you want to add a pubnic? (yes/no)[yes]: 直接回车

 

====== PubNIC ======

Input PubNIC name[oracle_net_card_0]: 直接回车

Is resource critical?[yes]: 直接回车

Please choose network device:

        0) eth2

        1) bond0

Select a network device [0, 1]:1

Add another pubnic? (yes/no)[no]: 直接回车

 

====== IP ======

Input IP name[oracle_ip_0]: 直接回车

Input IP address:192.168.1.196    浮点/业务IP

Input netmask[255.255.255.0]:

PubNIC of service:

     0) oracle_net_card_0    suse11-sp1-1:bond0    suse11-sp1-2:bond0

Select a PubNIC: [0, 0]:0

Is resource critical?[yes]: 直接回车

Add another IP? (yes/no)[no]: 直接回车

Do you want to add a raw disk? (yes/no)[no]:   直接回车

Do you want to add a diskmount? (yes/no)[no]:yes

 

====== diskmount ======

Input diskmount name[oracle_diskmount_1]: 直接回车

Is resource critical?[yes]: 直接回车

Is resource enable?[yes]: 直接回车

        0) disk   支持普通的块设备,/dev/sdb2

        1) nfs    支持nfs设备

        2) lvm    支持逻辑卷设备,如/dev/vg01/lv01

        3) cancel

please choose a disk type? [0, 3]:0

Input block disk device[/dev/hda1]:/dev/sdb2(共享数据所在设备)

Input mountpoint:/home/db (挂载目录)

Input type of file system[ext3]: 直接回车

Input user[root]:oracle (挂载目录的操作用户)

Input group[root]:oinstall(操作用户的群组)

Input mode[755]: 直接回车

Input options[rw]: 直接回车

Input the quota of the device[90]: 直接回车

do you want to stop service when the disk is readonly?[yes]: 直接回车

Add another diskmount? (yes/no)[no]: 直接回车

Add another service? (yes/no)[no]: 直接回车

Please run cluster-start to start the HA system,

or run cluster-restart to restart the HA system.

 

服务初始化完成,可运行service-show查看配置结果。

cli:~>service-show

Current service:

        0) name: oracle

        1) cancel

Select a(n) service [0, 1]:0

 

service

------

  name: oracle

  enabled: yes

  preferrednode: suse11-sp1-1

  starttimeout: 60

  stoptimeout: 120

  checkinterval: 30

  checktimeout: 60

  maxerrcount: 1

  restartaftercheckfail: no

  startanyway: no

 

  Application

  ------

    displayname: oracle_app_0

    script: /home/script/oracle.ps

    enable: yes

    critical: yes

 

  PubNIC

  ------

    displayname: oracle_net_card_0

    critical: yes

 

    member

    ------

      nodename: suse11-sp1-1

      device: bond0

 

    member

    ------

      nodename: suse11-sp1-2

      device: bond0

 

  IP

  ------

    displayname: oracle_ip_0

    ipaddr: 192.168.1.196

    netmask: 255.255.255.0

    PubNICResName: oracle_net_card_0

    critical: yes

 

  DiskMount

  -------

        displayname: oracle_diskmount_1

        critical: yes

        enable: yes

        type: disk

        device: /dev/sdb2

        mountpoint: /home/db

        fstype: ext3

        user: oracle

        group: oinstall

        mode: 755

        options: rw

        limitation: 90

        stopWhenRO: yes

 

Show other service? (yes/no)[no]:

至此,HA配置完成,接下来是集群启动和调试。

 

35 启动集群

Cli管理工具中输入指令:cluster-start

cli:~>cluster-start

[suse11-sp1-1]Starting High-Availability services:

Configuration file checked ok.

..done

 

.

Configuration file checked ok.

[suse11-sp1-2]Starting High-Availability services:

..done

 

.

集群启动成功。

 

36 查询集群状态

集群状态包括节点、心跳链路,工作链路和服务状态,在cli管理工具中输入指令:cluster-start(动态周期性刷新),show-status(显示一次当前状态).

 

cli中输入指令cluster-stat:

cli:~>cluster-stat

                Press Ctrl-C or 'Q' to exit

                Date: Wed Apr 10 09:45:13 2013

 

 Member                  status

 suse11-sp1-1            UP

 suse11-sp1-2            UP

 

 WorkLink                suse11-sp1-1            suse11-sp1-2           

 bond0                   ONLINE                  ONLINE 

 

 HeartbeatLink        suse11-sp1-1         suse11-sp1-2       status 

 network              eth2                 eth2               ONLINE

 serial               /dev/ttyS0           /dev/ttyS0         ONLINE

 LockDisk             /dev/sdb1            /dev/sdb1          ONLINE 

 

 ServiceName          suse11-sp1-1         suse11-sp1-2       Enable 

*oracle               running              stopped            YES

 

 

 

cli中输入指令show-status:

cli:~>show-status

Member                  status 

--------                --------

suse11-sp1-1            UP     

suse11-sp1-2            UP     

 

WorkLink                suse11-sp1-1            suse11-sp1-2           

--------                --------                --------

bond0                   ONLINE                  ONLINE                 

 

HeartbeatLink       suse11-sp1-1       suse11-sp1-2       status 

--------             --------        --------           --------

network              eth2             eth2              ONLINE 

serial              /dev/ttyS0        /dev/ttyS0        ONLINE

LockDisk            /dev/sdb1         /dev/sdb1         ONLINE 

 

ServiceName         suse11-sp1-1       suse11-sp1-2        Enable 

--------            --------          --------            -------

oracle              running             stopped             YES

从上述集群状态图可以看出,节点(Member)状态都是UP(正常),工作链路(WorkLinkbond0都是ONLINE(正常),心跳链路(HeartbeatLink)都是ONLINE(正常),接下来重点来了,就是服务oracle的状态,现成功运行(running)在suse11-sp1-1, suse11-sp1-2节点状态是stoped,即充当备用机子的状态存在,当主节点上的业务发生异常时就会接管过来,保障业务持续运行,后面的Enable表示该服务是受HA管控。

 

37 集群测试验证

这是最后一个环节,就是测试当主节点故障(如业务异常,机子挂掉等)时,备机能否成功接管,实现业务持续运行;这里模拟两种现网中比较常见故障:

1、 主节点业务故障(模拟方式:杀掉oracle进程),备机能否接管。

l       查看双机状态:

cli:~>cluster-stat

                Press Ctrl-C or 'Q' to exit

                Date: Wed Apr 10 11:21:13 2013

 

 Member                  status

 suse11-sp1-1            UP

 suse11-sp1-2            UP

 

 WorkLink                suse11-sp1-1            suse11-sp1-2           

 bond0                   ONLINE                  ONLINE 

 

 HeartbeatLink     suse11-sp1-1         suse11-sp1-2       status 

 network           eth2                 eth2               ONLINE

 serial            /dev/ttyS0           /dev/ttyS0         ONLINE

 LockDisk          /dev/sdb1            /dev/sdb1          ONLINE 

 

 ServiceName       suse11-sp1-1         suse11-sp1-2       Enable 

*oracle            running              stopped            YES

 

l       杀掉主节点suse11-sp1-1上的oracle关键进程,kill -9 2245pmon进程号)

l       持续查看备机suse11-sp1-2的集群状态,cluster-stat.

cli:~>cluster-stat

Press Ctrl-C or 'Q' to exit

              Date: Wed Apr 10 11:40:10 2013

 

Member                  status

suse11-sp1-1            UP

suse11-sp1-2            UP

 

WorkLink                suse11-sp1-1             suse11-sp1-2           

 bond0                   ONLINE                    ONLINE 

 

HeartbeatLink      suse11-sp1-1        suse11-sp1-2        status 

network            eth2                eth2                ONLINE

serial             /dev/ttyS0          /dev/ttyS0          ONLINE

LockDisk           /dev/sdb1           /dev/sdb1           ONLINE 

 

ServiceName        suse11-sp1-1       suse11-sp1-2         Enable 

*oracle            stopped:stu(A)      running              YES

 

str start fail, stp stop fail, stu status fail, op operation fail

A Application, I IP, M Mount, S Storage, W Work link, B Split Brain

 P Ping, T Time out, L Lock or unlock fail

几分钟后查看oracle的状态,其中的stu(A)表示1节点运行的业务检测到异常并停止,2节点running表示服务已接管过来。

 

2、 主节点机器故障(模拟方式:关机),备机能否接管。

l       继续上面的集群状态,服务oraclesuse11-sp1-2上运行(见上图)。

l       use11-sp1-2上运行shutdown指令

# shutdown -h now

 

Broadcast message from root (pts/1) (Wed Apr 10 13:40:26 2013):

 

The system is going down for system halt NOW!

l       持续查看use11-sp1-1的集群运行状态,cluster-stat

cli:~>cluster-stat

 

               Press Ctrl-C or 'Q' to exit

                Date: Wed Apr 10 13:49:09 2013

 

 Member                  status

 suse11-sp1-1            UP

 suse11-sp1-2            DOWN   

 

 WorkLink                suse11-sp1-1            suse11-sp1-2           

 bond0                   ONLINE                  UNKNOWN

 

 HeartbeatLink       suse11-sp1-1       suse11-sp1-2       status 

 network              eth2              eth2               OFFLINE

 serial               /dev/ttyS0        /dev/ttyS0         OFFLINE

 LockDisk             /dev/sdb1         /dev/sdb1          OFFLINE

 

 ServiceName         suse11-sp1-1       suse11-sp1-2        Enable 

*oracle               running            unknown            YES

1节点集群状态图来看,oracle已在上面运行(running),说明已成功接管服务;同时,2节点显示已down掉,其它链路及服务状态显示显示也是正常。

 

总结:上述常见故障中,HA能够保障业务持续运行,达到预期要求。

 

 

4、附录:

4一些操作技巧:

1、    cli中双按tab键,能把所有命令列出;输入help + 命令可查看其用法;

2、    ha运行日志位于/var/log/ha-log,按需查看;

3、    web工具的访问方式如下,建议用于后期维护:

地址:   缺省帐户/密码:SuperAdmin/123456

  

 

阅读(2481) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:Newstart HA常见使用场景

给主人留下些什么吧!~~