弹性云主机

线下OpenStack环境导入公有云环境

2025-10-27 06:34:52

操作场景

在线下环境中,很多用户使用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)创建成功后,“弹性云主机”>“创建云主机”,镜像处选择私有镜像。创建完成后可进入云主机查看数据完整性。

 

 


FK6HdDgZhY.w