一、环境准备
a、
| 主服务器 | 备份服务器 |
计算机名 | BAO-001 | BAO-002 |
私网(心跳网络)设置 | IP=192.168.9.21 Mask=255.255.255.0 | IP=192.168.9.22 Mask=255.255.255.0 |
公网(应用网络)设置 | IP=192.168.9.11 Mask=255.255.255.0 | IP=192.168.9.12 Mask=255.255.255.0 |
虚拟IP地址 | 192.168.9.10 | |
本地磁盘 | C: | |
共享磁盘 | E: |
b、分别在两张网卡上 安装NetBEUI协议:
进入“网络与拨号连接”,选中顶层菜单“高级” -> “高级设置 (S)… ”
c、更改网卡名:
将“本地连接” — 用作私网(心跳网络),改名为“ heart ”
将“本地连接2”—用作公网(应用网络),改名为“net”
d、修改hosts文件(位于<系统目录>\system32\drivers\etc),加入主、备服务器地址及虚拟IP地址和用于访问虚拟IP地址的计算机名,如下:
192.168.9.11 bao-001
192.168.9.12 bao-002
192.168.9.21 bao-heart01
192.168.9.22 bao-heart02
192.168.9.10 bao-vip
e、 进入“磁盘管理”,验证磁盘在主、备服务器上具有相同的盘符“E:”并且磁盘类型为“基本磁盘”而非“动态”
二、lifekeeper安装
按照下列步骤分别在主、备服务器上安装 LifeKeeper:
1、安装LK (选 是)
安装完后(先不重启)
3、安装DK (基于netFramework-v3.5)
a、 安装netFramework-v3.5(大概231M,可以离线安装)。
安装完后先不重启
4:注册(需要用到system host id)本次用测试注册号
注意:如果用本人的测试号的,要将系统时间改为2012-4-15 ~ 2012-5-1号之间
dk的注册号是:steeleye-dkwstde_Chinese-42625-34170-43416-06415-15408-32768-16260-13833-03022-06262-52249-54646-47747-16234-29864-23847-23505-03852-27805-01427-226
lk的注册号是:steeleye-lkwce_Chinese-42625-34170-02176-12313-00060-45312-21921-13273-28886-02203-01549-41533-04994-51982-24648-32679-20805-09663-05094-77155
如下:
5:重启电脑
6:相关的服务有
7:创建通信路径 (文件--》连接到--》登录bao-002)
基本上都是下一步,配置完如下:
下一步
下一步(设置虚拟ip地址)
下一步 (设置外网卡)
9:创建资源层次(磁盘卷)
下一步(设置卷类型)
其它的就下一步安装
10:创建资源层次(通用应用程序)
准备工作:将restore.ksh、remove.ksh、quickchk.ksh放到c:/LK/目录下 ,脚本内容在附件下
下一步(还原脚本)
下一步(移除脚本)
下一步(快速检查脚本)
下一步(设置资源名)
其它的不填———》下一步-----》建完后如下
11:创建依赖关系(sql与虚拟ip的依赖关系)
下一步---》下一步
12:创建依赖关系(sql与磁盘卷的关系)
下一步-----》下一步---》建完后如下:
13:改属性(改成切换资源)
14:测试 (bao-001不正常关机,看看资源是否会自动切换到bao-002上)
实验前:
实验中:
实验后:
15:附件
restore.ksh脚本如下(可以在window下实用):
#!/bin/bash
LKBIN=$LKROOT/bin
PATH=$PATH:$LKBIN
sc start mssqlserver
sleep 15
sc start SQLSERVERAGENT
sleep 15
exit 0
remove.ksh脚本如下:
#!/bin/bash
LKBIN=$LKROOT/bin
PATH=$PATH:$LKBIN
sc stop SQLSERVERAGENT
sleep 15
sc stop mssqlserver
sleep 15
exit 0
quickchk.ksh脚本如下:
#!/bin/bash
LKBIN=$LKROOT/bin
PATH=$PATH:$LKBIN
STATE=`sc query SQLSERVERAGENT 2>NUL: | /bin/awk.exe '{if($1 == "STATE") print $3}'`
if [ "$STATE" = 4 ]
then
echo "SQLSERVERAGENT Serivce is running OK!"
else
echo $STATE
echo "SQLSERVERAGENT Serivce is Fail!!!"
exit 1
fi
STATE=`sc query MSSQLSERVER 2>NUL: | /bin/awk '{if($1 == "STATE") print $3}'`
if [ "$STATE" = 4 ]
then
echo "MSSQLSERVER Serivce is running OK!"
else
echo $STATE
echo "MSSQLSERVER Service is Fail!!!"
exit 1
fi
exit 0