这一章内容,是我看书之后的总结,也就是为了博主自己看的,也算是自己的心得吧,真不知道怎么学这个,网上教程也没有,就算有,太杂乱了= =
虚拟化
定义
虚拟化是一种将物理资源(如计算机硬件、存储设备、网络资源等)抽象为逻辑资源的技术手段;也可以理解为将计算单元在虚拟而不是真实的环境中运行,是一个为了简化管理,优化资源的解决方案。可以提高资源利用率、增强系统的灵活性和可扩展性、提供隔离和安全保障,为现代信息技术的发展提供了重要的支持
分类
桌面虚拟化,应用虚拟化,服务器虚拟化,网络虚拟化
三种网络模式
桥接模式
桥接模式就是将主机网卡和虚拟机的虚拟网卡,利用虚拟桥接进行通信。
两者能够相互ping通,理论上能够ping外网
能够ping外网需要配置虚拟机和主机在同一网段,dns,网关一致
学校内网好像不行,和老师讨论了下,应该是用户权限,或者是学校网络做了相关权限的控制
nat模式
nat模式,是主机网卡直接与虚拟nat设备相连,nat直接使用主机网卡分配的ip,能够ping通外网,两者能够相互ping通。
理论上nat模式下,nat网络能够ping通桥接,仅主机模式网络,但是反过来不行。因为在nat模式下,可以将主机网卡看作一台路由器,这台路由器为nat虚拟机提供网络转换服务,使得nat网络能和主机ping通,能够连接外网,当需要连接桥接,仅主机ip的时候,会转换至相应模式ip,所以nat模式能够ping仅主机,桥接模式ip。反过来,由于仅主机,桥接模式的原理,无法转换网络ip,所以无法ping至nat网络,仅主机,桥接之间也无法互相ping通。
手机热点的原理与之类似,当你手机开启热点的时候,你的手机就类似一个路由器,具有网络转换功能,其实每个人的手机都有属于自己的ip地址,当你连接热点的时候,手机路由器将你的私有ip转换至能够连接外部网络的ip。
仅主机模式
仅主机模式下,虚拟机只能与主机进行通信,不能直接访问外部网络。虚拟机和主机之间形成一个封闭的网络环境
所以仅主机最好理解,只能和处于主机网段下的ip互ping
kvm虚拟化技术
kvm
基本概念
KVM的全称是kernel-Based Virtual Machine ,KVM是基于linux内核实现的
KVM的核心模块——KVM.Ko,只用于管理虚拟CPU和内存
I/O的虚拟化(如存储和网络设备),由llinux内核和Qemu来实现
KVM框架
KVM核心模块:包括KVM虚拟化核心模块KVM.Ko,硬件相关的有KVM.intel与KVM_AMD模块
简而言之kvm负责提供对CPU,内存的虚拟化
Qemu设备模拟:Qemu是用户态工具,可以为客户机提供设备模拟的功能,包括BIOS,数据总线,磁盘,网卡,显卡,声卡,键盘,鼠标等
简而言之Qemu负责除CPU和内存外的其他设备的虚拟化以及各种虚拟化设备的创建与调用
kvm安装
关闭firewalld,关闭selinux,然后重启
建立挂载目录kvm,挂载本地yum源,配置本地yum源,清缓存,建立缓存
安装libvirt,qemu-kvm openssl
开启libvirtd服务
systemctl start libvirtd
systemctl enable libvirtd
列出当前虚拟机列表状态
virsh -c qemu:///system list
查看virsh版本
virsh -version
配置kvm虚拟机nat网络
配置kvm,cirros源iso,nat模式
上传iso镜像源到虚拟机中
上传cirros源到虚拟机/root下,作为启动源
添加kvm环境变量
创建nat脚本
#!/bin/bash
# qemu-ifup-nat script for QEMU/KVM with NAT netowrk mode
# set your bridge name
BRIDGE=virbr0
# Network information
NETWORK=192.168.122.0
NETMASK=255.255.255.0
# GATEWAY for internal guests is the bridge in host
GATEWAY=192.168.122.1
DHCPRANGE=192.168.122.2,192.168.122.254
# Optionally parameters to enable PXE support
TFTPROOT=
BOOTP=
function check_bridge()
{
if brctl show | grep "^$BRIDGE" &> /dev/null; then
return 1
else
return 0
fi
}
function create_bridge()
{
brctl addbr "$BRIDGE"
brctl stp "$BRIDGE" on
brctl setfd "$BRIDGE" 0
ifconfig "$BRIDGE" "$GATEWAY" netmask "$NETMASK" up
}
function enable_ip_forward()
{
echo 1 > /proc/sys/net/ipv4/ip_forward
}
function add_filter_rules()
{
iptables -t nat -A POSTROUTING -s "$NETWORK"/"$NETMASK" \
! -d "$NETWORK"/"$NETMASK" -j MASQUERADE
}
function start_dnsmasq()
{
# don't run dnsmasq repeatedly
ps -ef | grep "dnsmasq" | grep -v "grep" &> /dev/null
if [ $? -eq 0 ]; then
echo "Warning:dnsmasq is already running. No need to run it again."
return 1
fi
dnsmasq \
--strict-order \
--except-interface=lo \
--interface=$BRIDGE \
--listen-address=$GATEWAY \
--bind-interfaces \
--dhcp-range=$DHCPRANGE \
--conf-file="" \
--pid-file=/var/run/qemu-dnsmasq-$BRIDGE.pid \
--dhcp-leasefile=/var/run/qemu-dnsmasq-$BRIDGE.leases \
--dhcp-no-override \
${TFTPROOT:+"--enable-tftp"} \
${TFTPROOT:+"--tftp-root=$TFTPROOT"} \
${BOOTP:+"--dhcp-boot=$BOOTP"}
}
function setup_bridge_nat()
{
check_bridge "$BRIDGE"
if [ $? -eq 0 ]; then
create_bridge
fi
enable_ip_forward
add_filter_rules "$BRIDGE"
start_dnsmasq "$BRIDGE"
}
# need to check $1 arg before setup
if [ -n "$1" ]; then
setup_bridge_nat
ifconfig "$1" 0.0.0.0 up
brctl addif "$BRIDGE" "$1"
exit 0
else
echo "Error: no interface specified."
exit 1
fi
添加权限
运行脚本
qemu-kvm -m 1024 -drive file=cirros-0.6.1-x86_64-disk.img,if=virtio -net nic,model=virtio -net tap,script=/etc/qemu-ifup-NAT -nographic -vnc :1
查看ip
查看kvm虚拟机网络
配置kvm虚拟机桥接网络
上传 iso 镜像源到虚拟机中
添加 kvm 环境变量
创建 桥接 脚本
#!/bin/bash
switch=br0
if [ -n "$1" ]; then
ifconfig $1 up
sleep 1
brctl addif $switch $1
exit 0
else
echo 'error'
exit 1
fi
添加权限
创建bridge
创建桥接,使网卡br0绑定网卡ens33
编辑ens33
编辑br0
运行脚本
查看ip ping外网
查看网卡桥接
kvm中的openstack
使用centos 7 dvd 2009
chinaskills _cloud_iaas_v2.0.3.iso
就是脚本搭建openstack基础平台
网络配置
节点 | 网络 |
controller | 192.32.62.100 |
compute | 192.32.62.101 |
controller节点网络
compute节点网络
uuid不能一致,没有配dns,ping不了外网正常
创建分区
在compute节点下
首先添加一块硬盘,书上给的5G
依次输入:
parted /dev/sdb
mklabel gpt
mkpart cinder 0G 1.5G
mkpart swift 1.5G 3G
p
yum源配置
controller节点
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=file:///opt/iaas-repo
gpgcheck=0
enabled=1
~
compute节点
镜像挂载,只需在controller,将chinaskill_cloud_iaas_2.0.3iso文件上传
如果没有使用CentOS-7-X86_64-DVD-1804.iso镜像也需要上传,若是该镜像直接挂载media
首先挂载CentOS-7-X86_64-DVD-1804.iso,这里显示以磁盘为引导盘方式
mount /dev/sr0 /mnt/ 将sr0 内 的内容挂载到mnt下
cp -rvf /mnt/* /opt/ 递归复制mnt下的所有内容到opt下
复制完了后取消挂载
mount -o loop chinaskills_cloud_iaas_v2.0.3.iso /mnt/ 以loop方式挂载到mnt下
递归复制
查看iso源,取消挂载
ftp服务器搭建
使用共享服务器共享源文件,减少内存消耗