虚拟化-KVM
虚拟化-KVM
在centos7环境部署kvm虚拟化
应用场景:
1. 割接
使用新服务器替换老旧的服务器。
2. 迁移
如果坏了,多长时间你能修好?
开始部署:
安装之前,将vmware中虚拟机的虚拟化功能打开,勾选上即可
(生产环境中服务器不需要这样设置)
[root@kvm ~]# lftp 172.16.0.99
lftp 172.16.0.99:~> cd release/
lftp 172.16.0.99:/release> get epel-release-7-6.noarch.rpm
[root@kvm ~]# rpm -ivh epel-release-7-6.noarch.rpm
[root@kvm ~]# yum install -y libvirt-python virt-manager libguestfs-tools virt-install qemu-kvm libvirt bridge-utils kvm
准备一个虚拟机需要的资源:
-
CPU
直接从宿主机划分。 -
内存
直接从宿主机划分。 -
硬盘
使用lv分区方式
[root@kvm ~]# pvcreate /dev/sdb
[root@kvm ~]# vgcreate vgkvm /dev/sdb
[root@kvm ~]# lvcreate -L 50G -n lvkvm vgkvm
[root@kvm ~]# mkfs.xfs /dev/vgkvm/lvkvm
[root@kvm ~]# vim /etc/fstab
/dev/mapper/vgkvm-lvkvm /kvm xfs defaults 0 0
[root@kvm ~]# mkdir /kvm
[root@kvm ~]# mount -a
[root@kvm ~]# df -h | tail -1
/dev/mapper/vgkvm-lvkvm 50G 33M 50G 1% /kvm
做kvm虚拟机底层存储的有:
(1)分区
/dev/sda5 /dev/sda6
(2)lv
/dev/vgkvm/lv01 , lv02
使用物理层设备做存储,优点是读写速度快,缺点是不能迁移。
(3)文件
raw格式,默认的,基本不用
qcow2格式,用多少,占多少,直到上限 (使用这个方式比较好,跟虚拟机磁盘管理方式一样,用多少涨多少,到上限停止)
[root@kvm /kvm]# qemu-img create -f qcow2 /kvm/node.qcow2 200G
[root@kvm ~]# cd /kvm/
[root@kvm /kvm]# ls
node.qcow2
> lv,一会在使用的时候,会有警告。
- 网卡
创建网桥。
[root@kvm /etc/sysconfig/network-scripts]# cp ifcfg-ens32 ifcfg-br0
[root@kvm /etc/sysconfig/network-scripts]# vim ifcfg-ens32
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens32
DEVICE=ens32
ONBOOT=yes
BRIDGE=br0 <--- 改
[root@kvm /etc/sysconfig/network-scripts]# vim ifcfg-br0
TYPE=Bridge <--- 改
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=br0 <--- 改
DEVICE=br0 <--- 改
ONBOOT=yes
IPADDR=172.16.0.29
NETMASK=255.255.0.0
GATEWAY=172.16.0.254
DNS1=211.137.32.178
DNS2=202.96.64.68
[root@kvm ~]# /etc/init.d/network restart
[root@kvm ~]# ifconfig br0
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.0.29 netmask 255.255.0.0 broadcast 172.16.255.255
安装虚拟机:
[root@kvm ~]# virt-install --name=node --vcpus 1 --ram 4096 --disk path=/kvm/node.qcow2,device=disk,size=200,format=qcow2,bus=virtio --network bridge=br0 --os-type linux --location 'ftp://172.16.0.99/iso/C7464' --graphics none --console pty,target_type=serial --extra-args='ks=ftp://172.16.0.99/pub/ksC7464.cfg console=ttyS0,115200n8 serial'
--name 指定虚拟机的名字
与存储的名字一致
--vcpus cpu线程数
--ram 内存,M
--disk 硬盘参数
--network 网卡参数
--os-type 安装的系统类型
--location 安装源
--graphics 文本化安装
--console 控制接口参数
--extra-args 安装参数
按键 ctrl ]
退出虚拟控制接口 (相当于切换,正常情况需要先logout登出,然后再切换)
连接虚拟机:
1. 在宿主机连接console接口
只有1个控制台可以连接
[root@kvm ~]# virsh list
Id Name State
----------------------------------------------------
3 node running
查看正在运行的虚拟机
[root@kvm ~]# virsh list --all
查看所有的虚拟机
[root@kvm ~]# virsh console node
2次回车
ks1 login:
配置IP!!!
[root@ks1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens3
NAME="ens3"
DEVICE="ens3"
ONBOOT=yes
NETBOOT=yes
IPV6INIT=yes
BOOTPROTO=static
TYPE=Ethernet
IPADDR=172.16.0.239
NETMASK=255.255.0.0
GATEWAY=172.16.0.254
DNS1=211.137.32.178
[root@ks1 ~]# /etc/init.d/network restart
[root@ks1 ~]# ping www.baidu.com
PING www.a.shifen.com (39.156.66.18) 56(84) bytes of data.
64 bytes from 39.156.66.18 (39.156.66.18): icmp_seq=1 ttl=53 time=25.0 ms
记住!!!
退出console接口时,一定要退出虚拟机的登录。
ctrl d 按键
2. ssh
[c:~]$ ssh root@172.16.0.239
进行初始化操作。
虚拟机的开启和关闭:
关闭:
[root@kvm ~]# virsh shutdown node # 关机
[root@kvm ~]# virsh destroy node # 断开电源
启动:
[root@kvm ~]# virsh start node
虚拟机的文件:
[root@kvm /etc/libvirt/qemu]# ls
node.xml 配置文件
[root@kvm /kvm]# ls
node.qcow2 存储文件
解读配置文件:
[root@kvm /etc/libvirt/qemu]# vim node.xml
<domain type='kvm'> 类型
<name>node</name> 名字
<uuid>81a03bb4-0b4b-4192-ae26-7eca96172e56</uuid> UUID,唯一标识
<memory unit='KiB'>4194304</memory> 内存
<currentMemory unit='KiB'>4194304</currentMemory> 内存
<vcpu placement='static'>1</vcpu> CPU线程数
<clock offset='utc'> 改
utc改成localtime
<disk type='file' device='disk'> 硬盘配置
<driver name='qemu' type='qcow2'/>
<source file='/kvm/node.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk>
<interface type='bridge'> 网卡配置,类型桥接
<mac address='52:54:00:f6:b8:55'/>
<source bridge='br0'/>
<model type='rtl8139'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
需要的配置!!!
将内存修改为1G
时钟改成本地时区
修改虚拟机的配置,虚拟机一定是处于关机状态
[root@kvm ~]# virsh shutdown node <---先将虚拟机关机
[root@kvm ~]# virsh list --all <--- 查看列表中虚拟机的状态
[root@kvm ~]# export EDITOR=vim <--- 将EDITOR和vim关联,这样用edit编辑时会有颜色显示
[root@kvm ~]# virsh edit node <--- 编辑配置文件
<memory unit='GiB'>1</memory>
<currentMemory unit='GiB'>1</currentMemory>
<clock offset='localtime'>
[root@kvm ~]# virsh start node
[root@node ~]# grep -c "proc" /proc/cpuinfo
1
[root@node ~]# free -m
total
Mem: 992
[root@node ~]# cat /proc/partitions
major minor #blocks name
252 0 209715200 vda
252 1 204800 vda1
252 2 209509376 vda2
253 0 10485760 dm-0
253 1 524288 dm-1
- 克隆
nginx
tomcat
mysql
…
方案1:
node完成初始化的centos7,满足公司内部环境的需求;
满足线上条件,还需要做安全方面的设置。
使用node克隆出所有的虚拟机,然后使用服务的一键安装脚本进行软件部署。
方案2:用这个!
node–第一代模板机
克隆
nginx-temp tomcat-temp mysql-temp …
第二代模板机
用第二代模板机,克隆出需要的节点
操作步骤:
(1)制作二代模板机
(2)使用二代模板机克隆出需要的节点
修改虚拟机的IP 主机名
修改虚拟机的CPU和内存
(3)单机一键启动和关闭
(4)分发虚拟机
(5)虚拟机的启动控制脚本
sshpass
(1)制作二代模板机
手动克隆:
virt-clone -o 模板机名字 -n 虚拟机名字 -f 虚拟机的存储文件的绝对路径
虚拟机必须是关机状态!!!
[root@kvm ~]# virsh shutdown node
[root@kvm ~]# virsh list
[root@kvm ~]# virt-clone -o node -n nginx-temp -f /kvm/nginx-temp.qcow2
[root@kvm ~]# virt-clone -o node -n tomcat-temp -f /kvm/tomcat-temp.qcow2
[root@kvm ~]# virt-clone -o node -n mysql-temp -f /kvm/mysql-temp.qcow2
[root@kvm ~]# virsh start nginx-temp
[root@kvm ~]# virsh start tomcat-temp
[root@kvm ~]# virsh start mysql-temp
console连接,修改IP
xshell连接,运行nginx、tomcat、mysql的一键安装脚本。
使用二代模板机之前,你要把所有需要准备的东西都想好。
[root@kvm ~]# virsh list --all
Id Name State
-
mysql-temp shut off
-
nginx-temp shut off
-
node shut off
-
tomcat-temp shut off
(2)使用二代模板机克隆出需要的节点
修改虚拟机的IP 主机名
修改虚拟机的CPU和内存
构建一个节点信息表格。
虚拟机的命名
阶段-功能IP地址最后一位
阶段:DEV UAT PDT
nginx11
nginx12
开始克隆:
脚本1:批量克隆
[root@kvm ~]# mkdir clone-sh
[root@kvm ~]# cd clone-sh/
[root@kvm ~/clone-sh]# ls
[root@kvm ~/clone-sh]# vim vmfile
UAT-nginx31 nginx-temp
UAT-nginx32 nginx-temp
UAT-tomcat41 tomcat-temp
UAT-tomcat42 tomcat-temp
UAT-MySQLA mysql-temp
UAT-MySQLB mysql-temp
UAT-NFS61 node
UAT-NFS62 node
[root@kvm ~/clone-sh]# vim 1-clone-forum.sh
#!/bin/bash
# 克隆出论坛项目需要的虚拟机
qcow2Dir="/kvm"
dir=`pwd`
file="${dir}/vmfile"
while read line
do
vmname=$(echo $line | awk '{print $1}')
tempname=$(echo $line | awk '{print $2}')
virt-clone -o $tempname -n $vmname -f ${qcow2Dir}/${vmname}.qcow2
done < $file
sync
sleep 2
virsh list --all
(3)单机一键启动和关闭
来源:CSDN
作者:Yeoman_Wayne
链接:https://blog.csdn.net/weixin_42502744/article/details/103602106