操作場景
在線下環境中,很多用戶使用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=//mirrors.aliyun.com/centos/$releasever/os/$basearch/
//mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
//mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=//mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=//mirrors.aliyun.com/centos/$releasever/updates/$basearch/
//mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
//mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=//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=//mirrors.aliyun.com/centos/$releasever/extras/$basearch/
//mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
//mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=//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=//mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
//mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
//mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=//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=//download.example/pub/epel/7/$basearch
metalink=//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=//download.example/pub/epel/7/$basearch/debug
metalink=//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=//download.example/pub/epel/7/source/tree/
metalink=//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=//mirrors.aliyun.com/centos/7/cloud/x86_64/openstack-rocky/
enabled=1
gpgcheck=0
[qume-kvm]
name=qemu-kvm
baseurl= //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)打開瀏覽器,輸入//IP,本示例為//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)創建成功后,“彈性云主機”>“創建云主機”,鏡像處選擇私有鏡像。創建完成后可進入云主機查看數據完整性。