Centos 6.4 KVM安装配置与组建内网

测试机使用环境:

组装机

 

CPU型号

i5-3450

物理CPU颗数

1

内存大小

4GB*2

磁盘型号

WDC WD10EZEX-00ZF5A0

主板型号

P8H61-M LX3 PLUS R2.0

系统

CentOS release 6.4_x64(最小化安装)

 

安装、克隆总计8台虚拟机

虚拟机

主机名

IP

lvs1

lvs1

192.168.2.210

lvs2

lvs2

192.168.2.211

web1

web1

192.168.2.212

web2

web2

192.168.2.213

db1

db1

192.168.2.214

db2

db2

192.168.2.215

nfs

nfs

192.168.2.216

 

检查CPU是否支持虚拟化

在主板BIOS中开启CPU的VirtualizationTechnology

Linux 2.6.20以上内核已经集成KVM

[root@test ~]# uname -a
Linux test 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

查看CPU是否支持虚拟化

[root@test ~]# grep -E -o 'vmx|svm' /proc/cpuinfo
vmx
vmx
vmx
vmx

系统优化

执行一下脚本,执行完成后重启系统

#!/bin/bash
#profile
echo  "alias vi='vim'"  >> /etc/profile
echo "export  HISTTIMEFORMAT='%F %T '" >> /etc/profile
source /etc/profile
#add the epel repo
rpm -i http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
#add the rpmforge repo
rpm -i \
 http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
#yum install sysstat
yum -y install gcc gcc-c++ vim-enhanced unzip unrar sysstat ntp rar
#set the ntp
echo "*/30 * * * * ntpdate ntp.api.bz >>/dev/null 2>&1" >> /var/spool/cron/root
ntpdate ntp.api.bz
service crond restart
#ssh
sed -i 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/' /etc/ssh/sshd_config
sed -i 's/GSSAPICleanupCredentials yes/GSSAPICleanupCredentials no/' /etc/ssh/sshd_config 
sed -i '$a \\UseDNS no' /etc/ssh/sshd_config
sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config
sed -i 's/#AuthorizedKeysFile/AuthorizedKeysFile/' /etc/ssh/sshd_config
sed -i 's/#PermitEmptyPasswords no/PermitEmptyPasswords no/' /etc/ssh/sshd_config
service sshd restart
#language
echo 'LANG="en_US.UTF-8"' > /etc/sysconfig/i18n
source /etc/sysconfig/i18n
#disabled ipv6
cat <<EOF>>/etc/modprobe.d/dist.conf
options ipv6 disable=1
EOF
echo 'NETWORKING_IPV6=off' >>  /etc/sysconfig/network
#set sysctl 
cat >> /etc/sysctl.conf << EOF
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304 
net.ipv4.tcp_wmem = 4096 16384 4194304 
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000 
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 1024 65535 
EOF
/sbin/sysctl -p 
# file descriptors 
ulimit -HSn 65535 
echo -ne " 
* soft nofile 65536 
* hard nofile 65536 
" >>/etc/security/limits.conf
#close ctrl+alt+del 
sed -i 's/exec/#exec/' /etc/init/control-alt-delete.conf
sed  -i 's/\[1-6\]/\[1-2\]/' /etc/sysconfig/init
#disabled selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
#service stop
a=$(chkconfig --list | awk '{print $1}')
for i in $a
do
chkconfig $i off
done
chkconfig crond on
chkconfig lvm2-monitor on
chkconfig network on
chkconfig rsyslog on
chkconfig sshd on

安装kvm

安装kvm,完成后重启系统

[root@test ~]#yum -y install qemu-kvm libvirt python-virtinst bridge-utils

查看模块是否启用

[root@test ~]# lsmod |grep kvm
kvm_intel              53484  0
kvm                   316506  1 kvm_intel

查看路由

[root@test ~]# ip route list
192.168.2.0/24 dev eth0  proto kernel  scope link  src 192.168.2.243
192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1
169.254.0.0/16 dev eth0  scope link  metric 1002
default via 192.168.2.1 dev eth0

查看虚拟网卡

[root@test ~]# brctl show
bridge name    bridge id        STP enabled    interfaces
virbr0            8000.52540050ca18       yes          virbr0-nic

配置桥接网卡

[root@test ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0  \
/etc/sysconfig/network-scripts/ifcfg-br0
[root@test ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
UUID=54f183fc-ba3f-4a65-a0c1-2e42133e43f3
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
HWADDR=08:60:6E:56:8A:EF
BRIDGE=br0
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
[root@test ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.2.243
PREFIX=24
GATEWAY=192.168.2.1
DNS1=123.125.225.29
DOMAIN=114.114.114.114

确认文件无误后重启网络

创建虚拟机

使用安装工具virt-install

创建安装iso目录

[root@test ~]# mkdir -p /data/kvm/iso

创建存储镜像目录

[root@test ~]# mkdir -p /data/kvm/vm

创建存储镜像

[root@test iso]# qemu-img create -f qcow2 /data/kvm/vm/lvs1.qcow2 80G
Formatting '/data/kvm/vm/lvs1.qcow2', fmt=qcow2 size=85899345920 encryption=off cluster_size=65536
[root@test iso]# qemu-img info -f qcow2 /data/kvm/vm/lvs1.qcow2
image: /data/kvm/vm/lvs1.qcow2
file format: qcow2
virtual size: 80G (85899345920 bytes)
disk size: 136K
cluster_size: 65536

安装操作系统,命令执行完成后,虚拟机自动开始安装进程,使用vnc连接进行安装

[root@test ~]#virt-install  \
--name=lvs1  \
--ram=1024  \
--vcpus=1 \
--disk path=/data/kvm/vm/lvs1.qcow2,device=disk,format=qcow2,bus=virtio,cache=none,size=80  \
--os-type=linux  \
--os-variant=rhel6  \
--hvm  \
--cdrom=/data/kvm/iso/CentOS-6.4.iso  \
--boot cdrom,hd,menu=on   \
--network bridge=br0  \
--vnc  \
--vncport=5991  \
--vnclisten=0.0.0.0

a.参数解析

##下面对virt-install命令做简单介绍,详细可以查看virt-install  –help

–connect=URI

##连接到虚拟机管理程序与libvirt的URI,如qemu:///system

-r MEMORY, –ram=MEMORY

##分配虚拟机实例(Guest)内存,单位为M

-n NAME, –name=NAME

##虚拟机实例(Guest)的名称

–vcpus=VCPUS

##配置实例(Guest)CPU数目

–disk path=DISKFILE

##指定实例(Guest)存储路径及其镜像

-c CDROM, –cdrom=CDROM

##指定安装镜像所在位置和名称, 它可以是一个ISO映像的路径, 它也可以是一

##个URL,从中提取/访问的最小引导ISO映像。

–vnc

##启用VNC远程管理,该选项不被赞同,可以用"–graphics vnc,…"代替

–vnclisten=VNCLISTEN

##可以用"–graphics vnc,listen=LISTEN,…" 代替

–vncport=VNCPORT

##可以用"–graphics vnc,port=PORT,…"代替

–os-type=OS_TYPE

##优化实例(Guest)配置操作系统类型如linux或windows

–hvm

##要求使用完全虚拟化

-w NETWORK, –network=NETWORK,opt1=val1,opt2=val2

## 实例(Guest)连接到主机的网络, 网桥–network bridge=br0,用nat路由出站

##–network network=default

b.使用管理工具virsh

##列表(Guest) test1

virsh -c qemu:///system list –all

##启动Guest) test1

virsh -c qemu:///system start test1

##关闭(Guest) test1

virsh -c qemu:///system destroy test1

##编辑(Guest) test1配置文件xml

virsh -c qemu:///system edit test1

##删除(Guest) test1

virsh -c qemu:///system undefine test1

##man virsh 可以了解命令

克隆虚拟机

[root@test vm]# virt-clone --connect qemu:///system --original=lvs1 --name=lvs2 --file=/data/kvm/vm/lvs2.qcow2
[root@test vm]# virt-clone --connect qemu:///system --original=lvs1 --name=web1 --file=/data/kvm/vm/web1.qcow2
[root@test vm]# virt-clone --connect qemu:///system --original=lvs1 --name=web2 --file=/data/kvm/vm/web2.qcow2
[root@test vm]# virt-clone --connect qemu:///system --original=lvs1 --name=db1 --file=/data/kvm/vm/db1.qcow2
[root@test vm]# virt-clone --connect qemu:///system --original=lvs1 --name=db2 --file=/data/kvm/vm/db2.qcow2
[root@test vm]# virt-clone --connect qemu:///system --original=lvs1 --name=nfs --file=/data/kvm/vm/nfs.qcow2

克隆完成后修改虚拟机的配置文件中vnc端口

[root@test vm]# virsh -c qemu:///system edit lvs2
    <graphics type='vnc' port='5992' autoport='no' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
   </graphics>

启动虚拟机修改ip和主机名,更新系统时间

kvm虚拟机克隆后网卡无法启动解决办法:
1 修改/etc/udev/rules.d/70-persistent-net.rules文件,删除第一个网卡记录,并将第二个的NAME="eth1"改为NAME="eth0"
2 修改/etc/sysconfig/network-scripts/ifcfg-eth0文件,主要是修改IP  子网掩码 网关 MAC地址

开始搭建高可用负载均衡WEB集群

参考资料

1. RHEL6.2平台利用KVM虚拟机搭建高可用负载均衡WEB集群(keepalived+lvs+iscsi+gfs)

2. Centos 6.4 KVM安装和配置

3. CentOS6.2 KVM 虚拟机命令行安装配置

4.在 CentOS 6.2 上安装和配置 KVM

5. kvm 虚拟化采用 virtio 驱动的方法

6. KVM下virtio驱动虚拟机XML配置文件分析

发表评论

电子邮件地址不会被公开。 必填项已用*标注