硬件:HP ProLiant BL685c G7 两笼刀片机
ILO版本:ILO3
目的:通过IPMI软件调用HP ILO3相关功能
原因:配置RHCS存储集群需要使用HP ILO设备作为fence设备
科普:IPMI 介绍 http://zh.wikipedia.org/wiki/IPMI
问题描述:
建议你也是遇到这样的问题再来看这篇文章,因为如果你不是在自己很郁闷得遇到这些问题,而看到这篇文章的话,我觉得气氛是不对的,因为这个问题在我整个项目中起着很大的作用,而这个问题困扰了我好几天,简直就是崩溃。
简单描述一下我为何写这篇文章,我现在的项目是CloudStack + KVM的实施项目,客户提供了30TB的FC SAN 存储,关于存储的挂载以及RHEL识别这些设备的问题已经成功解决,本文暂时不详细阐述,这些问题会在整个项目结束之后进行相应的总结。
现在我准备好了:
1. 30TB的SAN存储,30个1TB的LUN
2. 15片安装了 QEMU/KVM的RHEL6U3操作系统,并且成功识别30个新设备(30TB未格式化的"盘")
CloudStack 跟 KVM的集合,在进行主存储创建的时候,需要选择如下协议:
NFS协议:使用最简单,但是有单点故障
CLVM: LVM的Cluster版本,是红帽RHCS套件中的组件,之前接触过,也比较好用,界面如下:
剩下的两个就接触不多了,RBD是什么分布式块设备,这个我之前没有搞过,也不去介绍了,反正就是分布式存储相关的东东,大概解释一下ShareMountPoint吧
ShareMountPoint文档说的是所有的KVM节点都将共享存储格式化成OCFS2文件系统,当然GFS2估计也是没有问题的,然后每个节点都将格式化之后的设备都挂载到同一个名称的目录下面,然后选择这个协议,填写相关信息,如:
3. 我现在需要做的就是将 所有的KVM主机(也就是RHEL6U3主机)加入到一个 RHCS存储中,然后添加fence设备,最终将CLVM提供给CloudStack进行纳管。
现在问题出在fence设备上面了,玩过RHCS的朋友知道我这边说的fence设备是用来对故障节点进行关机或者重启相关操作,将故障节点从集群中剔除,使得其他节点照样正常工作,否则,每个节点都会去不断检测集群状态,集群中其他节点的状态,产生所谓的“脑裂”状态,本人测试,故障节点不能被成功fence掉【重启或者关机,一般来说会重启】,在其他节点上面执行lvs跟pvs,会被锁定,一直不能执行成功,同时负载会变得超级大,通过uptime查看,load average会持续飚,远远大于3了。
所以现在回到我们最初的讨论上面,需要一个fence节点,RHCS集群可以使用HP的 ILO设备作为fence节点,其他正常节点通过连接故障节点的ILO设备将故障节点进行重启,将其从集群中剔除,待其重启成功,再重新加入集群。
怎么通过RHCS添加节点,fence设备在本文不作相关说明,本文现在去KVM主机上面安装用于支持ILO设备相关操作的软件IPMI,我们再次将ILO设备理解成IPMI协议的一种实现方式,因为ILO是属于HP的设备,DELL等其他服务器有其他的实现方式。
1. 检查主机是否有相关IPMI硬件支持
[root@fence01 ~]# dmidecode |grep -C 6 IPMI |tail -n 7
IPMI Device Information
Interface Type: KCS (Keyboard Control Style)
Specification Version: 2.0
I2C Slave Address: 0x10
NV Storage Device: Not Present
Base Address: 0x0000000000000CA2 (I/O)
Register Spacing: Successive Byte Boundaries
2.安装软件支持
OpenIPMI-2.0.16-12.el6.x86_64.rpm
OpenIPMI-devel-2.0.16-12.el6.x86_64.rpm
OpenIPMI-libs-2.0.16-12.el6.x86_64.rpm
ipmitool-1.8.11-13.el6.x86_64.rpm
以上三个需要去下载,最后面一个ipmitool-1.8.11-13.el6.x86_64.rpm是RHEL6U3系统自带的。
全部安装完成之后,启动服务
1
2[root@SJC42KVM01 ~]# service ipmi start ; service ipmievd start
[root@SJC42KVM01 ~]# chkconfig ipmi on ; chkconfig ipmievd on
3. 检查是否安装启动成功
本地检测:
[root@fence01 ~]# for i in `seq 1 14` \
do ipmitool lan print $i 2>/dev/null | grep -q ^Set && echo \
Channel $i; done //查看有效channel
Channel 2
[root@fence01 ~]# ipmitool lan print 2 //查看ilo相关配置
Set in Progress : Set Complete
Auth Type Support :
IP Address Source : DHCP Address
IP Address : 10.197.202.43
Subnet Mask : 255.255.255.0
MAC Address : 38:ea:a7:a1:fd:76
BMC ARP Control : ARP Responses Enabled, Gratuitous ARP Disabled
Default Gateway IP : 10.197.202.254
802.1q VLAN ID : Disabled
802.1q VLAN Priority : 0
Cipher Suite Priv Max : Not Available
[root@fence01 ~]# ipmitool channel info 2
Channel 0x2 info:
Channel Medium Type : 802.3 LAN
Channel Protocol Type : IPMB-1.0
Session Support : session-based
Active Session Count : 63
Protocol Vendor ID : 7154
Volatile(active) Settings
Alerting : disabled
Per-message Auth : disabled
User Level Auth : enabled
Access Mode : always available
Non-Volatile Settings
Alerting : disabled
Per-message Auth : disabled
User Level Auth : enabled
Access Mode : always available
远程检测:
1
2[root@fence02 ~]# ipmitool -H 10.197.202.43 -I lanplus -U Administrator -P password power status
Chassis Power is on
说明:
从fence02主机上面进行远程命令的执行
-H: 主机的IP地址或者被解析过得主机名
-I : 使用的接口类型
-U: 管理用户名
-P: 管理用户明码
power status: 查看电源状态,可以是power start ,power reset 等操作
必须远程检测成功才能说明是真正的成功,因为故障节点总其他节点给fence的。
这个配置成功之后,在 RHCS中进行fence设备的添加,才能真正起作用,否则,没门!