江湖医生一样的程序员

2009年7月27日星期一

### RoseHA for SCO OpenServer 5.0.7 网卡状态 ERR

File: rose-ha-sco-openserver-5.0.7.txt -*- Encoding: utf-8 -*-
Time-stamp: <luanma 07/26/2009 21:08:20>

### RoseHA for SCO OpenServer 5.0.7 网卡状态 ERR

最近为一个客户实施了一个信息管理系统的双机热备(HA).
客户要求使用 SCO OpenServer 5.0.7 操作系统, HA 软
件则选择了 RoseHA for SCO Unix. 像 SCO
OpenServer, RoseHA 这样的老旧软件, 我是极力提议不
再使用的, 为什么要部署这种从部署之日之前许久就已经
过时了的系统呢. 最关键的是, 这些老东西还很花真金
白银的. 如果你实在很有钱, 为什么不捐两个开源项目
呢.

GNU/Linux 是一个比 SCO Unix 在效率, 硬件支持, 软件
支持等各个方面都要优秀许多的系统, 各大 HA 软件也支
持 GNU/Linux 系统, 并且有 GPL 的(代表自由和基本上
代表免费) Linux HA(Heartbeat) 可以用. 不过客户有
他自己的理由, 客户所用的信息管理系统是运行在 SCO
OpenServer 5.0.7 的 Binary, 客户认为他没得选择.

当然, 我们可以看到, 客户的信息管理系统是整个信息系
统中最急需处理的部分, 而不是让系统的其它部分反过来
来适应这个老旧软件. 在老旧系统的迁移过程中, 可以
将它先跑到虚拟机上. 正如行军, 伤员走不快, 不能让
大家都走慢来将就, 甚至将非伤员也捅成伤员, 好让大家
统一步伐, 而应该将伤员弄个担架抬起, 大家跑步前进.

转入正题, 写写在 SCO OpenServer 5.0.7 上部署 Rose
HA 的坎坷历程.

首先, 我们几经周折, 安装好 SCO OpenServer 5.0.7,
才让它正确的支持我们的 RAID 卡和 SCSI 卡. 然后安
装了 Intel 的千兆网卡的驱动, 并设置网卡. 然后安装
RoseHA, 在我的 SCO OpenServer 5.0.7 上, 安装程序
将 /opt/roseha/bin/S999roseha 这个启动脚本复制到
/etc/rc3.d, 因为 /etc/rc3.d/ 这个目录并不存在, 所
以 cp /opt/roseha/bin/S999roseha /etc/rc3.d 这个命
令错误地创建 /etc/rc3.d 这个文件. 需要手动删除
/etc/rc3.d, 然后 cp /opt/roseha/bin/S999roseha /etc/rc2.d/
否则 RoseHA 的服务器进程无法开机自动启动. RoseHA
安装在 /opt/roseha 目录下, 需要设置 ROSEHA_ROOT 环
境变量值为 /opt/roseha, 建议将 /opt/roseha/bin 加
入 PATH. 生成 Host ID 之后, 向经销商申请 License
Key, 最好要求经销商将 License Key email 过来, 否则
320 个数字的 License Key 手动输入起来可不是那么好
玩的.

一般需要一个工作日才能拿到 License Key,
ps -ef | grep ha 确保 RoseHA 的服务器进程正常运行
(可以运行 hamond 手动启动 RoseHA), 然后可以运行
RoseHA 的管理软件开始配置 RoseHA. 建议使用 RoseHA
的 Java 的 GUI 管理软件将 License Key 复制粘贴到配置
License Key 的界面. 这里需要注意的是, License Key
需要在做 HA 的两台机器上都分别输入, 每台机器都要输
入两台机器的 License Key. 并且要先输入本机的 Host
ID 匹配的那台机器的 License Key. 输入 License Key
的时候 Hostname 一栏输入机器的实际 Hostname(也就是
hostname 命令的输出). 输入完毕之后, 会有提示是否
更新 License Key 信息, 选择 OK, 等待一会儿之后, 可
以看到 License Key 是否正确. 要确保 License Key
在两边都输入成功之后, 才能够开始配置心跳和服务.

我在输入 License Key 的时候, 是在 Windows XP 机器
上用 cygwin ssh 到 SCO OpenServer 的机器, 然
后运行 RoseHA 的字符终端管理程序 hacon, 在 Emacs
里边打开包含 License Key 的文本文件, 然后用键盘复
制, 在 cygterm 里边按鼠标右键粘贴. 整个过程方便快
捷, 爽(帅)到掉渣渣, 看得我边上的同事简直目瞪口呆.

用 RS232 连上两台机器之后, 很轻松就可以配置上心跳.
但是问题才刚刚开始, 在网络配置的时候 AutoGet(自动
获取). 能正确找到两台机器上的 4 张网卡(每台 2 张),
但是在 RoseHA 配置程序里显示的网卡状态始终为
ERR(错误). 重启 RoseHA 服务之后网卡状态偶尔会 OK
一小会儿, 但一小会儿之后还是会 ERR. 我一直都在
ssh 访问这两台机器, 在这两台机器之间也可以互相
ssh, ping, 所以我一点也不怀疑网卡怎么了, 并且由于
我对 RoseHA 等老旧软件的不信任, 我先入为主地认为是
RoseHA 的问题.

在联系了 Rose 的技术支持之后, 对方也没有拿出合理
的解决方案, 最后对方答应帮忙 ssh 看看. 后来和
Rose 的一个经销商的销售人员聊天, 对方提到是否是
网卡驱动的问题. 我到客户那边准备协调客户设置网络
以便 ssh 时候, 查看了一下 SCO OpenServer 所装的
网卡驱动(用 custom 命令即可查看), 然后再 Google 一
下 "SCO OpenServer 5.0.7 Intel Gigabyte Ethernet",
找到 SCO 官网上的提供的 Intel 千兆网卡的驱动. 哦,
天啊, 我们装的驱动版本是 2.x, 而最新的驱动是 5.x.
于是我下载了最新的驱动, 新驱动依赖于 SCO
OpenServer 5.0.7 的 Maintainance Pack 5, 下吧, 200
多兆的 tar 包, 倒也很快. 于是将下载的两个文件都分
别 scp 到这两台机器的 /tmp, 先解压 Maintainance
Pack 5 的 tar 包, 用 custom 安装. 然后用 custom
删除原来安装的 2.x 版本的网卡驱动, 再用 custom 安装
5.x 版本的网卡驱动, 然后重新配置网卡(在这个过程中, 需
要重启 N 次, 比 Windows 还要重启的过分).

重新启动 RoseHA 的服务, 用 hacon 连上一看, 嘿嘿,
网卡似乎不再 ERR 了, 不过 License Key 变的 invalid
了, 然后网卡也 ERR 了. 看看 /opt/roseha/bin/hostid
的输出, 完了, Host Id 变了, 第一个字母变了, 重新申
请 License Key 吧.

新 License Key 拿来之后, 我先 ha_kill ha 停掉
RoseHA 的服务, 直接 /etc/roseha/etc/config.ha 这个
文件更新了 License 信息(scp 拷下来, 用 Emacs 修改完
再 scp 回去). 但是启动 RoseHA 服务之后网卡状态还
是 ERR, 我基本上要被它折磨崩溃了, 结果, 我重启机器
之后, 网卡状态终于 OK 了, 并且是稳定的 OK 了. 于
是配上基于网卡的心跳, 再写完监控, 运行, 停止信息管
理系统的 Shell 脚本, 在 RoseHA 里新建服务, 测试,
一切正常. 噩梦终于结束了!

在这个过程中, 我没少骂娘, 所以请不要再购买这样的老
旧软件了, 除非您喜欢挨骂.

没有评论:

发表评论

没事儿就省省吧, 有事儿请给我发邮件.