操作场景
在线下环境中,很多用户使用OpenStack构建云环境。为了降低成本,部分用户选择将线下OpenStack环境迁移至云服务商。此次场景将模拟OpenStack线下环境的云主机迁移到天翼云上,利用天翼云提供的服务提高资源运维管理能力,缩小成本。
架构迁移图示:
操作步骤
本文将介绍如何使用VMWare在本地搭建一套OpenStack环境,以模拟迁移和导入的过程。
模拟环境如下:
- OS:CentOS Linux release 7.9.2009
- VMWare Workstation:16.1.0
- 模拟流程包含如下步骤:
- 安装OpenStack环境
- 创建云主机
- 导出云主机
- 导入天翼云
- 创建云主机(天翼云环境)
安装OpenStack环境。
OpenStack能够创建云主机,我们需要保障如下要求符合:
(1) CPU支持虚拟化
(2) 内存至少8G以上
步骤1:检查CPU是否支持虚拟化
下载LeoMoon CPU-V,并双击打开。
步骤2:如果结果如下图所示,表明已经支持虚拟化。
步骤3: 在虚拟机中安装OpenStack(all-in-one)。
本次使用packstack自动安装rocky版本,准备工作如下:
1)执行以下命令,禁止使用NetworkManager,配置静态IP。
systemctl stop NetworkManager && systemctl disable NetworkManager
vim /etc/sysconfig/network-scripts/ifcfg-ens33
在配置文件中修改IP如下图后保存。
2)执行以下命令,修改主机名。
hostname set-hostname controller
3)如下图所示,将主机名与IP映射写入hosts。
4) 执行以下命令,禁用firewalld。
hostname set-hostname controller
systemctl stop firewalld && systemctl disable firewalld
setenforce 0
5)修改selinux配置文件,将SELINUX设置为disabled。
6)执行以下命令,配置yum源。
[root@controller yum.repos.d(keystone_admin)]# cat CentOS-Base.repo
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
[root@controller yum.repos.d(keystone_admin)]# cat epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
# It is much more secure to use the metalink, but if you wish to use a local mirror
# place its address here.
#baseurl=http://download.example/pub/epel/7/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch&infra=$infra&content=$contentdir
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
# It is much more secure to use the metalink, but if you wish to use a local mirror
# place its address here.
#baseurl=http://download.example/pub/epel/7/$basearch/debug
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch&infra=$infra&content=$contentdir
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1
[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
# It is much more secure to use the metalink, but if you wish to use a local mirror
# place it's address here.
#baseurl=http://download.example/pub/epel/7/source/tree/
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch&infra=$infra&content=$contentdir
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1
[root@controller yum.repos.d(keystone_admin)]# cat CentOS-OpenStack-rocky.repo
[centotack-rocky]
name=openstack-rocky
baseurl=https://mirrors.aliyun.com/centos/7/cloud/x86_64/openstack-rocky/
enabled=1
gpgcheck=0
[qume-kvm]
name=qemu-kvm
baseurl= https://mirrors.aliyun.com/centos/7/virt/x86_64/kvm-common/
enabled=1
gpgcheck=0
7) 执行以下命令,安装packstack。
#安装leatherman
yum -y install leatherman
#安装packstack
yum -y install openstack-utils openstack-packstack
8) 执行以下命令,生成应答文件并编辑配置文件。
packstack --gen-answer-file=/root/openstack.ini
vim openstack.ini
#除修改以下所列项外,其他项不保持变(密码字段,可根据需要自行修改,这里全部配置为了 123456)
CONFIG_DEFAULT_PASSWORD=123456
CONFIG_AODH_INSTALL=n
CONFIG_MARIADB_USER=root
CONFIG_MARIADB_PW=123456
CONFIG_KEYSTONE_DB_PW=123456
CONFIG_KEYSTONE_ADMIN_EMAIL=root@localhost
CONFIG_KEYSTONE_ADMIN_USERNAME=admin
CONFIG_KEYSTONE_ADMIN_PW=123456
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vxlan,flat
CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vxlan
CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch
CONFIG_NEUTRON_L2_AGENT=openvswitch
CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=extnet:br-ex
CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0
CONFIG_NEUTRON_OVS_EXTERNAL_PHYSNET=extnet
CONFIG_PROVISION_DEMO=n
9)执行以下命令,通过应答文件进行安装。
packstack --answer-file=/root/openstack.ini
10)打开浏览器,输入http://IP,本示例为http://192.168.43.128/,登录OpenStack管理页面。
11)执行以下命令,导入镜像。
openstack image create "centos" --file centos.img --disk-format qcow2 --container-format bare --public
12)执行以下命令,创建网络。
openstack create net vnet
openstack network create --provider-network-type=flat --provider-physical-network=extnet --external --share ext_net
13)执行以下命令,创建子网。
openstack subnet create subnet1 --network int --subnet-range 172.16.1.0/24 --gateway 172.16.1.1
openstack subnet create ex --network ext_net --gateway 192.168.101.254 --allocation-pool start=192.168.101.200,end=192.168.101.205 --subnet-range 192.168.101.0/24
14)执行以下命令,创建路由。
openstack router create route
openstack router add subnet route ex
openstack router add subnet route subnet1
15)执行以下命令,创建规格。
openstack flavor create --vcpus 1 --ram 512 --disk 10 test1
16)执行以下命令,创建密钥。
openstack keypair create cy
17)执行以下命令,创建虚拟机。
openstack server create --flavor test1 --image centos --nic net-id=cc9d7710-d82e-4109-9412-56ae02a18d7d --security-group default --key-name cy test
18)执行以下命令,连接虚拟机并上传qemu-ga、cloudinit以及virtio组件。
下载路径在“镜像服务”>“私有镜像”>“创建私有镜像”页面中连接下载。
根据说明文档安装后关闭虚拟机。
19)执行以下命令,将云主机转为image。
openstack server image create 1b1d3411-b755-4980-9da6-db01d8331600 --name cytestimg
20)执行以下命令,将image保存到本地(此时的镜像为raw格式)。
openstack server image create 1b1d3411-b755-4980-9da6-db01d8331600 --name cytestimg
21)执行以下命令,将镜像转换为qcow2格式(防止镜像过大,上传到桶失败)。
qemu-img convert -f raw -o qcow2 cytestimg centos.qcow2
22)将镜像上传到天翼云。
进入对象存储原生版,创建桶后,上传镜像到桶中(镜像较大建议通过oss api上传)。
23)创建私有镜像。
通过“镜像服务”>“私有镜像”>“创建私有镜像”,选择镜像文件并填写对象的地址,然后转为私有镜像。
其中,地址可以在对象存储控制台中的“更多”>“复制URL”选项中复制获得。
24)创建成功后,“弹性云主机”>“创建云主机”,镜像处选择私有镜像。创建完成后可进入云主机查看数据完整性。