支持kvm虚拟化
必须是rhel6_x86_64平台
# yum install kvm -y
# yum install virt-manager libvirt libvirt-python python-virtinst libvirt-client virt-viewer -y
使用kvm,确保libvirtd服务开始
# service libvirtd restart
# lsmod | grep kvm
kvm_intel 45674 0
kvm 291811 1 kvm_intel
例子1:通过图形界面安装虚拟机
1、配置桥接网络
# vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.1.1.232
NETMASK=255.255.255.0
TYPE=Bridge
NM_CONTROLLED="no"
# mii-tool
eth0: no link
eth1: negotiated 100baseTx-FD, link ok 《----
# vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
BOOTPROTO="none"
HWADDR="40:16:9F:E9:11:64"
NM_CONTROLLED="no" 《----
ONBOOT="yes"
BRIDGE=br0
# service network restart
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.40169fe91164 no eth1 <----
virbr0 8000.000000000000 yes
# virt-manager &
/var/lib/libvirt/p_w_picpaths/node1.img
例子2: 命令行安装
# virt-install -n "node2" -r 512 --vcpus=1 --pxe --os-type=linux --os-variant="rhel5" --disk=/var/lib/libvirt/p_w_picpaths/node2.img,size=5 --network bridge=br0 --vnc --hvm --virt-type=kvm
# virsh --help
如何实现xen客户机迁移到kvm ?
rhel5的xen客户机迁移到 rhel6.0的kvm中
=======================================================================
使用xen虚拟化实现高可用
client
|
vip
|--------------------------------------|
node1 <----RHCS-----> node2 <---DomU,客户机机器
|--------------------------------------|
|
NFS(共享存储) <---- Dom0,同时充当fence
备注:Dom0宿主机器通过xen虚拟化接口,模拟成fence设备,供ha集群中的node1,node2使用。
一、自定义xen的桥接网络
首先把原本的桥接网络关闭和删除
# ifconfig xenbr0 down
# brctl delbr xenbr0
改xen配置文件,不再使用默认桥接网络配置脚本
# service xend stop
# service libvirtd stop
shell> vim /etc/xen/xend-config.sxp
# (network-script network-bridge netdev=eth0)
#(network-script network-custom)
(network-script /bin/true) <----启用
建立自定义桥接网络的接口配置文件
# vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.1.1.22
NETMASK=255.255.255.0
TYPE=Bridge
NM_CONTROLLED="no"
修改被桥接的物理网卡的配置
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
HWADDR=00:D0:B7:D3:10:A2
BRIDGE=br0
# service xend start
# service libvirtd start
# service network restart
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.00d0b7d310a2 no eth0 《---
virbr0 8000.000000000000 yes
# ifconfig br0
测试:如果建立好桥接网卡能够正常通信,那么说明OK
实在不能通信,可以重启计算试一下。
二、把所有原本桥接到xenbr0的客户机机全部修改成br0
修改
vif = [ "mac=00:16:36:71:fc:f4,bridge=xenbr0,script=vif-bridge" ]
为
vif = [ "mac=00:16:36:71:fc:f4,bridge=br0" ]
启动客户机,把IP设定成跟宿主机器同一个网络,验证一下网络的可通性。
准备:
Dom0:
dev.upl.com 10.1.1.22
DomU:
node1.upl.com 10.1.1.23 domain:node1
node2.upl.com 10.1.1.24 domain:node2
三、宿主机器、HA中两个客户机器节点都安装集群套件
# yum groupinstall "Clustering" "Cluster Storage" -y
客户机器需要手工安装的:
# yum install kmod-gnbd-xen kmod-gfs-xen kmod-cmirror-xen -y
四、在宿主机器进行配置,模拟成为fence设备
1、建立一个只有自己成为节点的集群
# system-config-cluster &
集群名字一定不能和别人一样
编辑集群的属性
Run XVM Daemon <---打勾
把自己添加到集群中
2、建立fence设备与节点之间通信的密钥
# dd if=/dev/random of=/etc/cluster/fence_xvm.key bs=1 count=4096
测试的时候,可以把硬盘数据作为密钥的内容
# dd if=/dev/sda2 of=/etc/cluster/fence_xvm.key bs=1 count=4096
把密钥同步到各个客户节点
# rsync -alvR /etc/cluster/fence_xvm.key 10.1.1.23:/
# rsync -alvR /etc/cluster/fence_xvm.key 10.1.1.24:/
3、修改宿主机器的cman启动脚本
. /etc/init.d/functions
FENCE_XVMD_OPTS="-I br0" 《--添加一行
4、启动
# service cman start
测试fence设备是否工作:
# fence_xvm -H node2
Remote: Operation was successful
五、在客户机器上配置HA集群
# system-config-cluster &
集群属性: Post Join Delay: 12 否则启动集群的时候,很容易出现重启
成员:
node1.upl.com
node2.upl.com
fence:
Virtual Machine Fencing ,名字随意
连接fence:
domain: node1或者node2 <-- xm list看到客户机的名字
启动集群
cman
rgmanager
查看集群中节点被fence过:
# cman_tool nodes -f
Node Sts Inc Joined Name
1 M 12 2011-09-26 15:23:34 node1.upl.com
2 M 16 2011-09-26 15:23:37 node2.upl.com
关闭node2的网卡,node1会通知fence设备去重启node2
node2重启之后,应该启动cman,rgmanager
# cman_tool nodes -f
Node Sts Inc Joined Name
1 M 12 2011-09-26 15:23:34 node1.upl.com
2 M 24 2011-09-26 15:29:28 node2.upl.com <--列出了最后一次被fence的情况
Last fenced: 2011-09-26 15:26:38 by fencexvm
在客户机节点上手工fence其他节点
# fence_node node1.upl.com <---写主机名字
《---留意日志
为了避免同一个局域网出现多个集群造成组播混乱,配置混乱,相互干扰:
手工修改客户集群中的配置文件:
<cman expected_votes="1" two_node="1" cluster_id="4562" keyfile="/etc/openais.key" >
<multicast addr="225.1.8.88"/>
</cman>
可能配置文件会这种形式
<cman expected_votes="1" two_node="1" cluster_id="4562" keyfile="/etc/openais.key" />
openais.key 路径随意,生成的方法:
# dd if=/dev/random of=/etc/openais.key bs=1 count=4096
把系统的keyfile同步同一个集群中的其他节点