項目要求
目前可用的服務器資源只有兩臺,但實際上需要架設六種服務,而且也沒有
配備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虛擬支持