Openstack之九:openstack制作镜像
一、制作镜像介绍
通过KVM安装虚Centos 和Windwos 2008 R2_x86_64操作系统步骤并将磁盘文件作为镜像上传到openstack glance,作为批量创建虚拟机的镜像文件,其中windowsn 2008安装virtio 半虚拟化驱动,以实现网络IO和磁盘IO的半虚拟化提升速度,Centos 7默认即支持半虚拟化,不需要安装驱动,Virtio最初由澳大利亚的一个天才级程序员Rusty Russell编写,是一个在hypervisor之上的抽象API接口,让客户机知道自己运行在虚拟化环境中,从而与hypervisor根据 virtio 标准协作,从而在客户机中达到更好的性能(特别是I/O性能),目前,有不少虚拟机都采用了virtio半虚拟化驱动来提高性能。具体过程如下:
二、网络环境准备:
在一台linux服务器上修改网卡配置,做一个br0的网卡桥接,但是不更改也不影响安装虚拟机与制作模板,但是虚拟机要连接外网需要通过桥接或者nat,当虚拟机数量较多的时候nat就会出现瓶颈,所以使用桥接比较稳定:
网卡绑定案例,先做绑定,然后再把绑定后的网卡配置成桥接:
#因镜像虚拟机需要连接外网安装rpm包,需要网络桥接,因此将bondX桥接到brX:
[root@linux-image ~]# hostname linux-image.exmaple.com [root@linux-host5 ~]# yum install bridge-utils –y #安装网卡桥接工具
单网卡绑定方法:
eth0的配置:
# cd /etc/sysconfig/network-scripts/ # cp ifcfg-eth0 ifcfg-br0 # vim ifcfg-eth0 BOOTPROTO=static DEVICE=eth0 ONBOOT=yes BRIDGE=br0 #删除其他的IP/MAC/网关信息,增加一行桥接的配置 NM_CONTROLLED=no #不使用NetworkManager管理服务
br0的配置:
# vim ifcfg-br0 #编辑桥接网卡配置 TYPE=Bridge #类型为桥接 BOOTPROTO=static #静态获取IP IPV4_FAILURE_FATAL=no NAME=br0 #网卡名称 DEVICE=br0 #设备名称 ONBOOT=yes IPADDR=192.168.10.128 NETMASK=255.255.255.0 GATEWAY=192.168.10.2 DNS1=192.168.10.2
双网卡绑定方法:
1.1:第一组配置,将eth1和eth5绑定为bond0:
1.1.1:先创建bond0配置那文件步骤及内容如下:
[root@linux-host1 ~]# cd /etc/sysconfig/network-scripts/ [root@linux-host1 network-scripts]# cp ifcfg-eth0 ifcfg-bond0 [root@linux-host1 network-scripts]# cat ifcfg-bond0 #内容如下: BOOTPROTO=static NAME=bond0 DEVICE=bond0 ONBOOT=yes BONDING_MASTER=yes BONDING_OPTS="mode=1 miimon=100" #指定绑定类型为1及链路状态监测间隔时间 BRIDGE=br0 #桥接到br0
1.1.2:配置br0:
TYPE=Bridge BOOTPROTO=static IPV4_FAILURE_FATAL=no NAME=br0 DEVICE=br0 ONBOOT=yes IPADDR=X.X.X.X NETMASK=255.255.255.0 GATEWAY=X.X.X.X
1.1.3:eth1配置:
[root@linux-host1 network-scripts]# vim ifcfg-eth1 BOOTPROTO=static NAME=eth1 DEVICE=eth1 ONBOOT=yes NM_CONTROLLED=no MASTER=bond0 USERCTL=no SLAVE=yes
1.1.4:eth5的配置:
[root@linux-host1 network-scripts]# cp ifcfg-eth1 ifcfg-eth5 [root@linux-host1 network-scripts]# vim ifcfg-eth5 BOOTPROTO=static NAME=eth5 DEVICE=eth5 ONBOOT=yes NM_CONTROLLED=no MASTER=bond0 USERCTL=no SLAVE=yes
1.1.5:重启网络服务:
[root@linux-host1 network-scripts]# systemctl restart network
三、Windows Server 2008 R2镜像制作:
windows镜像下载官网:https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/
1:安装基础环境:
[root@linux-host1 ~]# yum install -y qemu-kvm qemu-kvm-tools libvirt virt-manager virt-install
2、创建系统磁盘:
[root@linux-image ~]# qemu-img create -f qcow2 /os/images/Windows-2008-r2-x86_64.qcow2 100G
3、使用命令安装windows 2008:
# virt-install --virt-type kvm --name Win_2008_r2-x86_64 --ram 3072 --vcpus=2 --os-type=windows \ --cdrom=/usr/local/src/windows_server_2008_r2.iso --disk path=/var/lib/libvirt/images/Windows-2008_r2-x86_64.qcow2,format=qcow2,bus=virtio \ --disk path=/usr/local/src/virtio-win-0.1.141_amd64.vfd,device=floppy --network bridge=br0,model=virtio \ --graphics vnc,listen=0.0.0.0 --noautoconsole
4、用命令进行安装操作
# virt-manager
5、开始加载中:
6、安装界面:
7、开始安装:
8、选择安装版本:
9、创建分区:
10、安装过程中:
11、安装完成:
#首次登陆提示必须更改密码:
12、新添加网卡:
#建议先把虚拟机关机再添加网卡
13、验证网络通信:
14、开启远程连接:
15、关闭防火墙:
16、重新封装虚拟机:
# 系统自带封装工具:
开始封装:
将磁盘镜像scp至openstack控制端:
# openstack image create "windows_server_2008_r2" --file Windows-2008-r2-linux36.qcow2 --disk-format qcow2 --container-format bare --public
在openstack的web界面进行创建镜像,并在openstack安全组打开RDP规则,就可以远程连接windows界面。
四、基于手动安装Centos 7.x 镜像制作:
#做镜像就是在宿主机最小化安装系统并配置优化,做完配置之后将虚拟机关机,然后将虚拟机磁盘文件上传至glance即可启动虚拟机。
也可以在centos官网下载制作好的镜像:http://cloud.centos.org/centos/7/images/
1:安装基础环境:
[root@linux-host1 ~]# yum install -y qemu-kvm qemu-kvm-tools libvirt virt-manager virt-install
2、创建磁盘:
类型为qcow2,跟使用量动态增长,也可以是raw格式,openstack 支持很多类型的磁盘格式。
[root@linux-image ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/CentOS-7-x86_64.qcow2 10G
3、验证磁盘文件:
[root@linux-image ~]# file /var/lib/libvirt/images/CentOS-7-x86_64.qcow2 /var/lib/libvirt/images/CentOS-7-x86_64.qcow2: QEMU QCOW Image (v3), 10737418240 bytes [root@linux-image ~]# ll -h /var/lib/libvirt/images/CentOS-7-x86_64.qcow2 -rw-r--r-- 1 root root 193K Sep 28 09:21 /var/lib/libvirt/images/CentOS-7-x86_64.qcow2
4、下载ISO镜像并安装:
[root@linux-image ~]# virt-install --virt-type kvm --name CentOS7-x86_64 --ram 1024 --cdrom=/opt/CentOS-7-x86_64-Minimal-1511.iso \
--disk path=/var/lib/libvirt/images/CentOS7-x86_64.qcow2 \ --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
5、验证端口:
6、使用VNC 客户端连接虚拟机端口:
7、连接后状态如下:
8、传递内核参数重命名网卡:
9、磁盘分区
10、安装过程
11、添加一个网卡:
虚拟机安装完成系统重启之后给虚拟机新添加一块网卡,最终实现镜像虚拟机有两块网卡以实现内外双网通信。
12、打开控制台:
[root@linux-image images]# virt-manager
进入虚拟机控制界面:
点击添加硬件:
添加网卡:
最终状态:
更改yum源:
1、安装下载软件
[root@bogon ~]# yum install wget –y
2、配置yum 源
[root@bogon ~]# cd /etc/yum.repos.d/ [root@bogon yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo [root@bogon yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
3、安装常用命令
[root@bogon yum.repos.d]# yum install -y net-tools vim lrzsz tree screen lsof ntpdate telnet acpid
4、关闭防火墙及selinux
[root@bogon yum.repos.d]# systemctl disable NetworkManager [root@bogon yum.repos.d]# systemctl disable firewalld [root@bogon yum.repos.d]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
五、官方GenericCloud 7.2.X镜像制作
# 镜像下载地址:http://cloud.centos.org/centos/7/images/
下载官方镜像
[root@linux-image iso]# wget http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1511.qcow2.xz [root@linux-image iso]# xz -d CentOS-7-x86_64-GenericCloud-1511.qcow2.xz [root@linux-image iso]# mv CentOS-7-x86_64-GenericCloud-1511.qcow2 /var/lib/libvirt/images/
安装修改密码工具:
[root@linux-image iso]# yum install libguestfs-tools -y
使用命令开始安装镜像:
virt-install --virt-type kvm --name CentOS-GenericCloud --ram 1024 \ --cdrom=/usr/local/src/CentOS-7-x86_64-Minimal-1511.iso \ --disk path=/var/lib/libvirt/images/CentOS-7-x86_64-GenericCloud-1905.qcow2 \ --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole \
控制台打开控制端
# virt-manager
强制关机:
修改密码:
# virt-customize -a /var/lib/libvirt/images/CentOS-7-x86_64-GenericCloud-1905.qcow2 --root-password password:123456
修改完密码后启动虚拟机
# virt-manager
使用root远程ssh登录,默认ssh服务没有打开密码登陆,需要打开
# vim /etc/ssh/sshd_config PasswordAuthentication yes #打开密码登陆
重启sshd服务
# systemctl restart sshd
此时就可以ssh远程登录root用户
关闭防护墙和selinux:
[root@localhost ~]# systemctl disable firewalld [root@localhost ~]# vim /etc/selinux/config SELINUX=disabled [root@localhost ~]#systemctl stop NetworkManager [root@localhost ~]#systemctl disable NetworkManager
安装常用命令
# yum install vim iotop bc gcc gcc-c++ glibc glibc-devel pcre \ pcre-devel openssl openssl-devel zip unzip zlib-devel net-tools \ lrzsz tree ntpdate telnet lsof tcpdump wget libevent libevent-devel \ bc systemd-devel bash-completion traceroute -y
将启动服务关闭,避免开机启动慢
# systemctl disable cloud-init
修改文件,将不需要的文件注释掉
# vim /etc/cloud/cloud.conf
打开宿主机控制台
进入详情界面:
点击添加硬件:
添加网卡:
创建免秘钥登录:
1、在控制端创建公钥
[root@computer-1 ~]# ssh-gen -bash: ssh-gen: command not found [root@computer-1 ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:vPOCUyQ9Xhf4bxx60G9SxULOjdhrPsY2f+o6USSdm/o root@computer-1 The key's randomart image is: +---[RSA 2048]----+ | . o.o | | . o==oo| | . ..==+o| | ..+ . + *..| | +So . Bo+ | | o. ++* o| | oo =Bo | | o .o .oE+.| | . .. .+o.o| +----[SHA256]-----+
2、将控制端的公钥复制到制作镜像的系统中
ssh-copy-id 192.168.7.100 #IP地址为制作镜像后获取的IP地址
将制作好的镜像关机,然后将制作好的centos镜像传到openstack上
# openstack image create "centos7.2" --file CentOS-7-x86_64-GenericCloud-1905.qcow2 \ --disk-format qcow2 --container-format bare --public
创建Cenots 虚拟机:
定义名称:
选择镜像源:
选择类型:
虚拟机创建过程中:
创建完成:
验证虚拟机可以访问外网:
磁盘使用情况:
从镜像创建windows 2008云主机:
创建云主机:
选择镜像源:
选择类型:
调度中:
创建中:
创建完成,验证是否激活:
验证外网连接:
磁盘使用情况: