支持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同步同一个集群中的其他节点