项目要求
目前可用的服务器资源只有两台,但实际上需要架设六种服务,而且也没有
配备SAN或者磁盘阵列之类的存储设备。综合考虑,决定使用KVM虚拟技术。
一种服务一台虚拟机,一块硬盘,磁盘通过LVM动态分配挂载。内存和cpu
平均分配,包括宿主机正好充分利用资源。实际的运行性能需要上线之后做
监控分析。
拓扑图
服务器配置
data_master
cpu model:Xeon E5645
cpu cores:六核超线程
memory:16G
disk:300G*4
father:192.168.121.55
merge:57
wms:58
mongo:59
data_slave
cpu model:Xeon E3-1230
cpu cores:四核超线程
memory:8G
disk:300G*4
father:192.168.121.50
merge:51
wms:52
mongo:53
基本知识
1.KVM虚拟机三大存储模式
一般情况下我们通常使用KVM存储池或者LVM逻辑卷的方式存储,个人觉得LVM逻辑卷
的方式对磁盘的动态扩展会非常方便,而且在性能方面也非常的好。
2.KVM镜像存储格式
一般使用raw和qcow2,具体区别可以查阅相关资料
CPU检测
egrep "vmx" /proc/cpuinfo 如果不支持则无法使用KVM技术,基本上都支持
安装KVM
yum -y install bridge-utils qemu-kvm libvirt virt-manager
网桥设置
vim ifcfg-eth0
DEVICE=eth0
HWADDR=00:1E:67:8B:CC:15
TYPE=Ethernet
#UUID=65f347a8-cdfa-48f0-bfe2-2048225cb913
ONBOOT=yes
#NM_CONTROLLED=yes
#BOOTPROTO=static
#IPADDR=192.168.121.50
#GATEWAY=192.168.121.1
#PREFIX=24
BRIDGR=br0 通过连接桥接器br0
vim ifcfg-br0 br0是一个桥接器,相当于一个路由
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.121.50 这个就是实际机器的ip
GATEWAY=192.168.121.1 实际网关
PREFIX=24
brctl addif br0 eth0 把eth0加入br0桥接器
brctl show 出现下面的对应关系说明配置成功
安装KVM虚拟机
qemu-img create -f qcow2 /app/kvm/cenots.img 10G
virt-install -n centos_mdmerge_slave -r 2048 --accelerate --vcpus=1 -c /app/iso/CentOS-6.5-x86_64-minimal.iso --os-type=linux --disk path=/app/kvm/cenots.img,size=10,format=qcow2 --network bridge=br0,model=virtio --graphics vnc
这里有一点要提到的是,第一次我用的方法是--disk path直接指定存储在LVM逻辑卷上,没有创建
一个镜像文件,这种方法导致的两个问题就是虚拟机IO性能很差还有不能指定格式为qcow2,而起
装系统时也不能够自定义布局。之后便把系统存储在镜像文件里,然后采用挂载LVM逻辑的方式
来存储其它数据,这样这个硬盘只要不损坏就可已挂载在任意服务器上。
accelerate 加速
model=virtio 不然虚拟机无法访问外网
vnc 使用vnc安装
VNC链接
使用CRT软件端口转发, netstat -antup 查看qemu-kvm监听端口(5900),转发到本地一个端口
通过VNC软件链接安装系统,链接是ip为127.0.0.1,端口为转发端口
创建快照
qemu-img snapshot -c merge_data_slave_bak1.img merge_data_slave.img 快照文件在原来镜像文件里面,不会新生成文件
qemu-img snapshot -l merge_data_slave.img
复制虚拟机
virt-clone -o merge_data_slave -n wms_data_slave -f /app/kvm/wms_data_slave.img --force
虚拟机网络配置
像普通机器一样配置即可
虚拟机多网卡配置
虚拟机磁盘扩展
动态扩展
virsh attach-disk merge_data_slave /dev/VGroup00/lv00 hdb
mkfs.ext4 /dev/vda
mount /dev/vda /home/
echo "mount /dev/vda /home/" >>/etc/rc.local
静态扩展,永久保存
virsh edit merge_data_slave
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/VGroup00/test'/>
<target dev='hdb' bus='ide'/>
<address type='drive' controller='0' bus='0' target='0' unit='1'/>
</disk>
KVM进阶和高可用
1.ISCSI 和SAN技术实现KVM的高可用性
2.存储格式性能区别
http://www.cnblogs.com/feisky/archive/2012/07/03/2575167.html
3.sheepdog实现KVM集群高可用
http://zhumeng8337797.blog.163.com/blog/static/100768914201284105140361/
4.ISCSI+KVM+DRBD 实现高可用
问题总结
1.宿主服务器重启之后 GRUP 损坏
不知道和KVM有没有关系,升级系统,选择安装引导文件,解决了,数据完好
2.Duplicate ID 'drive-ide0-0-0' for drive
disk drive id 重复, unit='1',unit 设成不一样的数字
3.Bringing up interface eth0: device eth0 does not seem present, delaying initialization.
主要是因为网卡MAC地址重复导致的,删除该文件:/etc/udev/rules.d/70-persistent-net.rules
重启之后,会自动生成新的MAC地址,但是会指定在当前没有使用的网卡上,例如eth0已经在
使用了,MAC新地址会分配给eth1,如果想仍然使用eth0网卡,只要把eth0哪一行删掉,把eth1
该成0即可。
更高级的设置,请使用kickstart无人执守方案
4.ERROR Failed to connect socket to '/var/run/libvirt/libvirt-sock'
libvirtd -d 开启 libvirtd 服务
5.lsmod |grep kvm_intel 没有被加载
开启服务器CPU虚拟支持Virtualization
6.WARNING KVM acceleration not available, using 'qemu'
开启CPU虚拟支持