云计算

1:什么是云计算?

云计算是一种按量付费的模式!云计算的底层是通过虚拟化技术来实现的!

KVM + openstack私有云

docker+k8s(管理平台)

2:云计算的服务类型

2.1 IAAS

基础设施即服务(infrastructure as an service)    虚拟机  ecs云主机

底层服务部署好,直接买esc  部署好数据就ok

2.2 PAAS

平台即服务(platform as an service ) php,java      容器

运行环境已经布置好,需要什么服务提供什么服务平台

2.3 SAAS 

软件即服务(software as an service )  企业邮箱服务  cdn服务  rds数据库 

直接使用,付钱使用 

3:为什么要用云计算

小公司:

10台  20w+ idc  5w/年 + 100M带宽  10W, 10台云主机,前期投入小,扩展灵活,风险小

大公司:

闲置服务器计算资源,虚拟机,出租(超卖)

64G 服务器  64台1G  320台1G      64台  大公司自己的业务  264台  租出去

国企,银行                      ----- 了解

公有云:  谁都可以租  (模式 KVM管理平台+收费系统)

私有云:  只有公司内部使用

混合云: 有自己的私有云 + 租的公有云

4:云计算的基础KVM虚拟化

环境

宿主机:内存4G+  纯净的系统CentOS-7(关闭selinux,firewalld和NetworkManager)

4.1:什么是虚拟化?

虚拟化,通过模拟计算机的硬件,来实现在同一台计算机上同时运行多个不同的操作系统的技术。

会造成一定程度的性能损耗,但能充分的利用资源

4.2 :linux虚拟化软件的差别

linux虚拟化软件:

qemu:  软件纯模拟全虚拟化软件,性能差!兼容性好,原生内核 可以跨cpu

xen(半) :性能特别好,需要使用定制的开源内核(劫持指令),兼容性差!

KVM (kernel-base vm --linux基于内核的虚拟机): 性能较好,兼容较好 。它有硬件支持cpu(开启主板虚拟化)原生内核

vmware workstations:  图形界面                         --linux版 体验差

virtual box:                   图形界面  Oracle            -- 体验一般

4.3 安装kvm虚拟化管理工具  --控制内核

主机名               ip地址                  内存                           虚拟机

kvm01           10.0.0.11              4G(后期调整到2G)   cpu开启vt虚拟化

kvm02           10.0.0.12              2G                            cpu开启vt虚拟化

环境要求:

centos 7.4  7.6  7.8(不要使用7.5)    VNC客户端

vmware  宿主机  kvm虚拟机

内存4G,cpu开启虚拟化

更新base源                                   curl -o /etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo

1.修改虚拟化配置

lsmod|grep kvm  查看虚拟化内核参数  --确认是否开启虚拟化

2.下载虚拟机管理程序机器软件

yum install libvirt virt-install qemu-kvm -y

KVM:Kernel-based Virtual Machine 

libvirt  作用:虚拟机的管理软件 开关机重启

libvirt 种类: kvm,xen,qemu,lxc....

virt  virt-install virt-clone  作用:虚拟机的安装工具和克隆工具 主要为了装虚拟机

qemu-kvm  qemu-img (qcow2,raw)作用:解决 img依赖 管理虚拟机的虚拟磁盘

4.4:安装一台kvm虚拟机

VNC-Viewer-6.19.325

微软的远程桌面

vnc:远程的桌面管理工具 向日葵 微软的远程桌面

systemctl start libvirtd.service systemctl status libvirtd.service

10.0.0.11  宿主机

建议虚拟机内存不要低于1024M,否则安装系统特别慢!

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1708.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

服务没启动
镜像名称错误

参数说明:

--virt-type kvm    虚拟化的类型(qemu)

--os-type=linux    系统类型

--os-variant rhel7 系统版本

--name centos7    虚拟机的名字 (必须唯一)

--memory 1024      虚拟机的内存

--vcpus 1          虚拟cpu的核数

--disk /opt/centos2.raw,format=raw,size=10(必须唯一)

--cdrom /opt/CentOS-7-x86_64-DVD-1708.iso 

--network network=default  使用默认NAT的网络

--graphics vnc,listen=0.0.0.0 

--noautoconsole (可有可无)

成功会出现 5900端口 netstat -lntup

vnc:10.0.0.11:5900    --使用5900端口用vnc连接

任意键进入安装步骤,不扫描按Esc键直接进入安装
设置磁盘分区 1
设置磁盘分区 2云主机都没有swap分区
语言设置支持中文简体
基础设置配置
设置root密码


等待安装完成    

注意:--vnc连接会断开 ,使用virsh命令启动虚拟机会重新建立连接

4.5:kvm虚拟机的virsh日常管理和配置 

虚拟机的简单构成

磁盘文件 在/opt(安装目录下)下

配置文件在/etc/libvirt/qemu/centos7.xml    --  可以升级硬件配置

常用命令  -开关重启

列表list(--all  全部)  virsh list --显示运行状态的虚拟机

virsh start centos7  启动命令 

shutdown 关闭命令(虚拟机有系统)

拔电源关机、强制关机destroy(无系统)

重启reboot(虚拟机有系统) 

导出虚拟机配置dumpxml 

virsh dumpxml centos7 >vm_centos7-off.xml

删除虚拟机undefine 

推荐:先destroy,在undefine

virsh undefine centos7

导入配置define 

virsh define  /opt/vm_centos7.xml

其他命令 修改、重命名 、挂起恢复、查询端口号

修改配置edit(自带语法检查)  虚拟关机再开,才生效

重命名domrename (低版本不支持)

virsh domrename 原名 改后名

挂起suspend 恢复resume    --  时间会暂停(chronyd服务重启时间会同步)

查询vnc端口号vncdisplay

virsh vncdisplay 虚拟机名

查看真实占用内存

du -smh *

free -m

kvm虚拟机开机启动

kvm运行业务程序 开机启动autostart  /etc/libvirt/qemu文件查看开机自启虚拟机,

前提:systemctl enable libvirtd;

取消开机启动autostart --disable

console 控制台 登录命令

1.进入centos7的kvm虚拟机:

2.执行下面命令

grubby --update-kernel=ALL --args="console=ttyS0,115200n8"

reboot

virsh console centos7

ctrl +]  --  宿主机和虚拟机之间进行切换

4.6:kvm虚拟机虚拟磁盘管理和快照管理

raw与pcow2区别

磁盘格式  占用空间           传输性能                              快照                  读写方式

raw           比较大              不方便,总50G,用1G传50G   不支持              连续读写,读写性能较好

qcow2       小                     方便,总50G,用1G传1G        支持                  随机读写,性能差一点

raw磁盘初始安装命令

virt-install--virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 **--disk /opt/centos2.raw,format=raw,size=10** --cdrom /opt/CentOS-7-x86_64-DVD-1708.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

qcow2磁盘初始安装命令

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 **--disk /opt/oldboy.qcow2,format=qcow2,size=10** --cdrom /data/CentOS-7.2-x86_64-DVD-1511.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

4.6.1 磁盘工具的常用命令

查、创建、增量、raw转qcow2过程(四步)

qemu-img  info,create,resize,convert

查看虚拟磁盘信息 qemu-img info  test.qcow2

创建一块qcow2格式的虚拟硬盘: qemu-img create -f qcow2 test.qcow2 2G

调整磁盘磁盘容量 qemu-img  resize  test.qcow2 +20G

raw转qcow2:

先转磁盘文件qemu-img  convert  -f raw  -O qcow2  oldboy.raw  oldboy.qcow2

-- 先关虚拟机  再改配置文件

# virsh shutdown centos7

# virsh edit centos7

导入配置

virsh destroy web01

启动生效

virsh start web01

4.6.2快照管理 

创建快照

virsh snapshot-create-as centos7 --name install_ok

查看快照

virshsnapshot-listcentos7

还原快照

virshsnapshot-revertcentos7--snapshotname 1516574134

删除快照

virshsnapshot-deletecentos7--snapshotname 1516636570

4.7:kvm虚拟机克隆

4.7.1:完整克隆

自动挡:

virt-clone --auto-clone -o  centos7 -n web01(完整克隆)

virt-clone --auto-clone -o  centos7 -n web01 --file /opt/web01.qcow2  --磁盘放的位置  ,不含快照‘

virt-clone --auto-clone -o  centos7 -n web02 --auto-clone

手动挡:

#手动完整克隆

#1磁盘文件的克隆

qemu-img convert -f qcow2 -O qcow2 -c web01.qcow2 web03.qcow2

#2修改配置文件

virsh dumpxml web01 >web03.xml

vim web03.xml

#修改虚拟机的名字

#删除虚拟机uuid

#删除mac地址mac add

#修改磁盘路径disk

#3导入数据并重启生效

virsh define web03.xml

virsh start web03

4.7.2 链接克隆

a:生成虚拟机磁盘文件

qemu-img  create  -f qcow2  -b  web03.qcow2  web04.qcow2

b:生成虚拟机的配置文件

virsh dumpxml web01 >web04.xml

vim web04.xml

#修改虚拟机的名字

web04

#删除虚拟机uuid

8e505e25-5175-46ab-a9f6-feaa096daaa4

#删除mac地址

#修改磁盘路径

c:导入虚拟机并进行启动测试

virsh define web04.xml 

virsh start web04

全自动链接克隆脚本:

[root@kvm01 scripts]# cat  vi link_clone.sh

i#!/bin/bash

old_vm=$1

new_vm=$2

#a:生成虚拟机磁盘文件

old_disk=virsh dumpxml $old_vm|grep "

disk_tmp=dirname $old_disk

qemu-img create -f qcow2 -b $old_disk  ${disk_tmp}/${new_vm}.qcow2

#b:生成虚拟机的配置文件

virsh dumpxml $old_vm >/tmp/${new_vm}.xml

#修改虚拟机的名字

sed -ri "s#()(.*)()#\1${new_vm}\3#g" /tmp/${new_vm}.xml

#删除虚拟机uuid

sed -i '//d' /tmp/${new_vm}.xml

#删除mac地址

sed -i '/

#修改磁盘路径

sed -ri "s#()#\1${disk_tmp}/${new_vm}.qcow2\3#g" /tmp/${new_vm}.xml

#c:导入虚拟机并进行启动测试

virsh define /tmp/${new_vm}.xml

virsh start ${new_vm}

4.8:kvm虚拟机的桥接网络

默认的虚拟机网络是NAT模式,网段192.168.122.0/24

net模式  桥接模式  网络流程

4.8.1:创建桥接网卡


创建桥接网卡命令 virsh iface-bridge eth0 br0桥接成功永久生效

取消桥接网卡命令 virsh iface-unbridge br0

dhclient  重启获取IP地址

4.8.2 新虚拟机使用桥接模式

默认NAT模式

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

桥接模式

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

问题1:

如果虚拟机获取不到ip地址:查看虚拟机编辑器是否打开DHCP模式

4.8.3 将已有虚拟机网络修改为桥接模式

1.:关机状态下修改虚拟机配置文件:

2.修改配置:

virsh edit centos7

3.:启动虚拟机生效

4.如果上层没有开启dhcp,需要配置

4.控制台直接登陆,查看是否配置成功

virsh console db01

lscpu |grep -i kvm

4.9:热添加技术

热添加硬盘、网卡、内存、cpu

4.9.1 kvm热添加硬盘并挂载

qcow磁盘的创建与挂载

创建过程

挂载

[root@localhost ~]# cp /etc/services /mnt/

[root@localhost ~]# ll /mnt/

total 656 -rw-r--r--. 1 root root 670293 Apr 12 23:04 services

raw硬盘操作

1.先创建一块硬盘

qemu- img create -f qcow2 /opt/web03_ add01. qcow2 2G

2.添加硬盘

3.拆除硬盘

临时立即生效

数据盘扩容:

1.虚拟机,umout取消挂载 宿主机 拆硬盘

2.扩容 ,附加硬盘

qemu-imgresizeweb03_add01.qcow2+2G

virshattach-diskweb03/opt/web03_add01.qcow2vdb--subdriver qcow2   ---临时生效

virshattach-diskweb03/opt/web03_add01.qcow2vdb--subdriver qcow2 --config  ---永久生效 (重启后生效)

3.虚拟机 重新挂载 ,刷新挂载空间

系统盘扩容

1.关机,调整vda的虚拟磁盘文件

#virshshutdownweb03

[root@kvm_01~]#virshdumpxmlweb03|grepqcow2

2.扩容

qemu-imgresizeweb03.qcow220G

qemu-imginfoweb03.qcow2--查看磁盘容量

3.启动虚拟机 进入控制台 ,重新对vda1分区,删掉分区表,重新创建分区表

virshstartweb03--启动

virshconsoleweb03--控制台登陆

fdisk-l--查看磁盘实际内存

fdisk/dev/vda--设置分区

p--显示分区

d--删除分区表

n--新建分区

p--建主分区

回车

回车

回车

p--打印显示分区

df-h--查看挂载实际内存是否同步

4.重启虚拟机,xfs_growfs生效

[root@localhost~]#reboot

[root@localhost~]#xfs_growfs/dev/vda1

4.9.2 热添加网卡

net模式

[root@kvm_01opt]#virshattach-interfaceweb03networkdefault---临时生效

Interfaceattachedsuccessfully

[root@kvm_01opt]#virshattach-interfaceweb03networkdefault--model e1000  

Interfaceattachedsuccessfully---指定网卡

[root@kvm_01opt]#virshattach-interfaceweb03networkdefault--config   ---永久生效

Interfaceattachedsuccessfully

桥接模式

[root@kvm_01opt]#virshattach-interfaceweb03bridgebr0--model rtl8139

Interfaceattachedsuccessfully

[root@kvm_01opt]#virshdomiflistweb03

InterfaceTypeSourceModelMAC

-------------------------------------------------------

vnet1networkdefaultvirtio52:54:00:2f:e8:2f

vnet2networkdefaultrtl813952:54:00:2f:37:ca

vnet3networkdefaulte100052:54:00:b3:af:27

vnet4bridgebr0rtl813952:54:00:b4:0b:fb

查看虚拟机网卡数、拆除网卡

[root@kvm_01opt]#virshdomiflistweb03

InterfaceTypeSourceModelMAC

-------------------------------------------------------

vnet1networkdefaultvirtio52:54:00:2f:e8:2f

vnet2networkdefaultrtl813952:54:00:2f:37:ca

vnet3networkdefaulte100052:54:00:b3:af:27

vnet4networkdefaultrtl813952:54:00:be:9d:0f

[root@kvm_01opt]#virshdetach-interfaceweb03network--mac 52:54:00:be:9d:0f

Interfacedetachedsuccessfully

4.9.3 kvm虚拟机在线热添加内存  (可扩可缩)

添加内存

[root@kvm_01opt]#virshsetmemweb032G---临时生效

[root@kvm_01opt]#virshsetmemweb032G---永久生效

[root@localhost~]#free-m

totalusedfreesharedbuff/cacheavailable

Mem:200189180481071788

Swap:000

内存不足报错

设置最大内存不能超过宿主机最大内存

4.9.4 kvm虚拟机在线热添加cpu

添加cpu

创建虚拟机时添加

virt-install--virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus 1,maxvcpus=10 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

热添加

[root@kvm_01opt]#^C

[root@kvm_01opt]#virshsetvcpusweb034

error:invalidargument:requestedvcpusisgreaterthanmaxallowablevcpusforthelivedomain:4>1---最大允许cpu颗数

[root@kvm_01opt]#virshsetvcpusweb03--maximum 4 --config   ---重启生效

[root@kvm_01opt]#virshsetvcpusweb032

[root@localhost~]#lscpu

Architecture:x86_64

CPUop-mode(s):32-bit,64-bit

ByteOrder:LittleEndian

CPU(s):2

4.10:kvm虚拟机热迁移(共享的网络文件系统)

环境准备

主机名                 ip                     内存                  网络软件需求                                       虚拟化

kvm01         10.0.0.11                 2G                   创建br0桥接网卡kvm和nfs                 开启虚拟化

kvm02         10.0.0.12                 2G                   创建br0桥接网卡kvm和nfs                 开启虚拟化

nfs01           10.0.0.31                 1G                   无nfs                                                   无

冷热迁移区别

名称                      状态                            具体方法

冷迁移               kvm虚拟机关机             配置文件,磁盘文件

热迁移               kvm虚拟机开机             配置文件,nfs共享

冷迁移

1.kvm02 修改IP地址主机名

2.下载软件

[root@kvm02~]#curl -o /etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo     --更新下载源

[root@kvm02~]#yum install libvirtqemu-kvmvirt -install -y

3.启动服务

[root@kvm02~]#systemctl start libvirtd

[root@kvm02~]#systemctl enable libvirtd

4.kvm01 将配置文件和磁盘文件发送到kvm02上

[root@kvm_01opt]#virsh dumpxml web03>vm_web03.xml

scp -rp /opt/vm_web03.xml /opt/web03.qcow2 [email protected]:/opt

#需要将web03处于关机状态,一定要保持在同一目录

#如有附加硬盘以统发送

[root@kvm_01opt]#scp -rp  /opt/web03_add01.qcow2  [email protected]:/opt

[email protected]'s password:

web03_add01.qcow2        100%     12MB        50.7MB/s            00:00

5.kvm02 导入配置文件 

#导入配置文件

[root@kvm02opt]#virsh  define  vm_web03.xml

Domain  web03  defined  from  vm_web03.xml

#启动web03虚拟机

virsh  start  web03

#注意:如有附加硬盘必须将附加硬盘一同发送过来,否则会报错如下图一

#两节点一定要保持环境一致,主节点做桥接,接收节点也需配置如下图二

[root@kvm02opt]#virsh  iface-bridge   eth0   br0

#进入控制台验证是否成功

[root@kvm02opt]#virsh  console  web03

Connected to domain  web03

Escape character  is ^]

localhost login: root

Password:

Last failed login: Wed Apr  14  20:40:23  CST 2021 onttyS0

There was 1 failed login attempt since thel ast successful login.

Last login: Tue Apr 13 21:38:35 on ttyS0

图一:附加硬盘未传输
图二:未做桥接

在线热迁移  ---需要环境一致

1.安装并配置(nfs)

#下载nfs  rpcbind服务

yum installnfs-utils rpcbind -y

#修改/etc/export文件

[root@kvm_01~]#vi /etc/exports

/data 10.0.0.0/24(rw,sync,no_root_squash,no_all_squash)

#重启并验证挂载是否设置成功

[root@kvm_01~]#systemctl restart rpcbind

[[root@kvm_01~]#systemctl enable nfs

Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

[root@kvm_01~]#showmount -e 10.0.0.11

Export list for 10.0.0.11:

/data 10.0.0.0/24

2.将磁盘文件移动到 /data目录下,并挂载共享目录

#我们nfs直接放在了lvm01上

mv /opt/* /data/

#kvm01和kvm02

mount -t nfs10.0.0.11:/data/opt

[root@kvm02opt]#ls /opt

centos7.qcow2    lb02.qcow2                                         web03_add01.qcow2

centos7.raw         nfs-utils-1.3.0-0.68.el7.x86_64.rpm   web03.qcow2

db01.qcow2         test.raw                                              web03.xml

db02.qcow2         vm_web03.xml                                   web04.qcow2

lb01.qcow2           web01.qcow2                                     web04.xml

3.在kvm启动一台虚拟机并进行热迁移  --必须开机状态

#临时迁移配置文件并没有过去

[root@kvm_01~]#virsh migrate --live  --verbose web03 qemu+ssh://10.0.0.12/system --unsafe

[email protected]'s password:

Migration:      [100%]

[root@kvm02opt]#virsh    list

Id                Name                   State

----------------------------------------------------

4                web03                  running

#永久迁移

[root@kvm_01~]#virsh migrate --live --verbose web03 qemu+ssh://10.0.0.12/system --unsafe --persistent --undefinesource

[email protected]'s   password:

Migration :  [100%]

#--verbose   显示进度条     --unsafe   强制迁移

解析不了kvm02,进行hosts解析

CPU不兼容 老版本向新版本服务器迁移

解决方法:

1.执行命令生成一个虚拟机

#从硬盘启动创建一个虚拟机

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web03 --memory 1024 --vcpus 1 --disk /opt/web03.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

2.导出配置文件 对比配置

[root@kvm_01opt]#virsh dumpxml web03>web03.xml

[root@kvm_01opt]#vimdiff web03.xml web01.xml

3.对比替换cpu配置,将缺少部分进行添加或修改

rtl8139、e1000、virtio 三种内核驱动区别

内核驱动 (ethtool eth0查看网卡速度)      rtl8139       e1000                virtio

网卡                                                        10/100Mb/s   1Gb/s              10Gb/s

兼容性                                                    最好               好                      差

网卡名称                                                ens                ens                      eth

生产厂家                                      Realtek(瑞昱(yù))   inter

扩展小技巧

· yum history 查看历史装了几次yum

  yum history info 4  查看第四次下载的具体信息

  yum history undo id号  下载后悔实现回滚

· setenforce 0  临时关闭selinux

· systemctl stop postfix 关闭邮件服务

· systemctl stop

· 思科模拟器:gns3  底层qemu模拟器

· 服务器:戴尔(性价比高)          --  够用节省成本

· 不同服务器 磁盘阵列的选择

lb服务:raid1    性能要求高

数据库:raid10  安全性要求高

web服务:raid5  访问体验要求高

备份服务:sata硬盘 、raid6 空间大就ok

· 起名字要见名知意

· 忘记密码 --挂载光盘修改密码

你可能感兴趣的:(云计算)