阿里云上跑火车(安装 OpenStack Train 版本),猜猜最终花了多少钱?

前言

前面给大家提供了用虚拟机安装 OpenStack 的镜像,虽然已经很简便了,但还是略显笨重。一来镜像文件比较大,二来个人电脑资源比较有限,体验不是很好。

最最重要的是,使用个人电脑没法展示 Kolla 的真正实力,多节点安装

为了让大家能充分体验到云计算带来的便利,我把目光盯上了公有云。

本期先介绍基本操作,仍然是部署一个 All-In-One 的环境。

选择阿里云

国内首选的公有云当然是阿里云了,我其实很早就买了个阿里云的云服务器,但是一直没充分利用,这次虽然配置还不够来搭建环境,但是正好可以拿来构建镜像。

如果你是新用户当然要先去 阿里云 注册账号啦,新用户首购优惠幅度会比较大,可以等到促销的时候下手。

注意!!:本次演示用的是抢占式按量付费虚机,按照规则,在阿里云有任何消费,你就不属于新用户了。所以,如果你想利用新用户优惠买个云主机长期使用,务必请先把包年包月的服务器先买好,以免丧失了新用户的优惠资格。切记!切记!

准备出发!

准备工作

因为 Kolla 的镜像源存放在 docker hub,在云主机上直接访问是比较慢的(时间就是金钱啊!),并且没有提供最新的 OpenStack 版本 train 构建。

这次我是通过 kolla 自行构建了最新的镜像。并且上传到阿里云的容器镜像服务里,这样在阿里云的云主机里就可以享受内网的速度,非常快的拉取镜像了。

构建镜像还踩了点小坑,具体过程后续有机会再详述,就不在本文赘述了。

创建 ECS

选择计费方式

来到阿里云的 ECS 创建页面,可以看到有 3 种计费类型:

  • 包年包月
  • 按量付费
  • 抢占式实例

用 Kolla 部署 OpenStack 需要有 8GB 内存,按此配置,包年包月的价格其实不低了,也没那个必要。

按量付费,0.5 元/小时,已经能接受了。

别急,切换到抢占式实例,一个小时 0.07 元,不用四舍五入,这也等于不要钱好么!

果断升级到 4 vCPU 16 GiB 的配置吧。

相同的配置在不同的区域价格可能会有差别

选择镜像

选择最新的 CentOS 7.7 64位,取消勾选“安全加固”,我们只是临时测试,用不上:

选择 VPC 和交换机

默认情况下,阿里云为我们提供了默认的网络,但是这里虚机需要用到 2 块网卡,只有选择 VPC 网络后,才能支持添加弹性网卡。

VPC 网络和交换机参考下面的步骤创建。

创建 VPC 和交换机

依次填写信息:

  1. VPC 名字
  2. 交换机名字
  3. 交换机的可用区
  4. 交换机的地址段

VPC 每个区域内一个即可,所以地址段默认分的比较大,/16 ,交换机是每个可用区一个,地址段默认是 /24,每个可用区的地址段不能用冲突。多个可用区的交换机可以接到同一个 VPC 里面。

交换机必须和 ECS 在同一个可用区,如果 ECS 随机到了其它可用区,可以再去建一个交换机。

配置公网和安全组

必须要分配公网 IP,不然我们没法访问这个虚机了:

勾选公网 IP 后,会多出来收费方式。不用担心公网流量的费用,拉取镜像的时候都是走的内网流量。只有从云服务器流出的流量才会收费。所以可以忽略不记。

勾选安全组,放开 80443 端口:

注意,安全组的配置是独立于 ECS 的,下次再用到这个默认安全组的时候,就不用再次开启了。

增加辅助网卡

Kolla 必须要有 2 块网卡,所以我们这里必须要再增加一块弹性网卡:

实际测试中,并没有用到它,所以我们暂时不关心它的配置

密码和主机名配置

登录凭证按个人习惯,选择密钥对或者密码:

建议使用密钥方式,更安全也更方便一点。

配置实例名和主机名,实例名是在阿里云网页上看到的名字,主机名是虚机内部的 hostname,如果虚机有多个的情况下,还是有必要配置一下。

这次我们仍然是单节点 All-In-One,所以主机名无所谓。

其它配置无需修改,直接确认订单。

回到控制台,等待实例状态变成 运行中

安装部署工具

从 SSH 登录到云服务器里,开始下面的步骤。

安装 docker-ce

CentOS7 系统自带的软件源里的 docker 版本比较低,我们需要安装 docker-ce。先配置安装源。

先去 阿里云镜像站,选择 容器,然后选择 docker-ce,按照页面帮助操作即可:

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce # Step 4: 开启Docker服务
sudo service docker start

安装 Ansible

sudo yum install -y ansible

安装 kolla-ansible

因为我用的是最新的 kolla 构建的镜像,对应的 kolla-ansible 貌似还没有发布到 pypi 上,所以这里我们选择从源码安装。

到我发此文时,新版本的 kolla-ansible 已经发布,所以可以直接安装:

pip install kolla-ansible

原文仍保留,以作为参考

先安装 git

sudo yum -y install git

克隆 kolla-ansible 源码,从国内的镜像站下载:

git clone http://git.trystack.cn/openstack/kolla-ansible

# 下载完毕后直接安装
pip install kolla-ansible/

注意到后面的斜杠 /,表示针对本地目录安装

配置 Kolla

在前面的 iso 镜像中,一些基础配置被合入到了系统启动脚本里,这里必须要手动执行了。

拷贝 /etc/kolla

先把 kolla-ansible 安装后生成的配置文件拷贝到 /etc/kolla/ 下:

mkdir /etc/kolla
cp /usr/share/kolla-ansible/etc_examples/kolla/* /etc/kolla/

生成密码

执行:

kolla-genpwd

执行完成后,所有的密码会存在 /etc/kolla/passwords.yml 中。

注意: 我在这里遇到个版本问题:

这个错误在我后面的测试中没有出现,应该已经被修复了。保留内容供参考。

# kolla-genpwd
Traceback (most recent call last):
File "/usr/bin/kolla-genpwd", line 10, in <module>
sys.exit(main())
File "/usr/lib/python2.7/site-packages/kolla_ansible/cmd/genpwd.py", line 133, in main
fernet_keys, hmac_md5_keys)
File "/usr/lib/python2.7/site-packages/kolla_ansible/cmd/genpwd.py", line 67, in genpwd
private_key, public_key = generate_RSA()
File "/usr/lib/python2.7/site-packages/kolla_ansible/cmd/genpwd.py", line 52, in generate_RSA
format=serialization.PublicFormat.OpenSSH
File "/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/rsa.py", line 514, in public_bytes
self._rsa_cdata
File "/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/backend.py", line 1706, in _public_key_bytes
return self._openssh_public_key_bytes(key)
File "/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/backend.py", line 1740, in _openssh_public_key_bytes
serialization._ssh_write_mpint(public_numbers.e) +
AttributeError: 'module' object has no attribute '_ssh_write_string'

cryptography 最新版本(2.8)有点兼容问题,重新卸载安装一个比较旧的版本:

pip uninstall cryptography
pip install "cryptography==2.7"

配置 /etc/kolla/globals.yml

需要修改的配置项如下:

# Valid option is Docker repository tag
#openstack_release: ""
openstack_release: "train" # This should be a VIP, an unused IP on your network that will float between
# the hosts running keepalived for high-availability. If you want to run an
# All-In-One without haproxy and keepalived, you can set enable_haproxy to no
# in "OpenStack options" section, and set this value to the IP of your
# 'network_interface' as set in the Networking section below.
#kolla_internal_vip_address: "10.10.10.254"
kolla_internal_vip_address: "192.168.1.100" docker_registry: "registry.cn-shanghai.aliyuncs.com"
docker_namespace: "davycloud"
docker_registry_insecure: "no"

除了 kolla_internal_vip_address 地址段是和你创建 ECS 时选择的 VPC 对应,其它配置项必须保持一致。

注意 镜像是在阿里云的 华东2(上海) 中的虚机内创建的,所以当时上传到了 cn-shanghai 的 registry。如果虚机也在同一个 VPC,可以配置为 VPC 的内网地址 registry.cn-shanghai.aliyuncs.com

实际测试结果,阿里云内即使不在同一个 VPC 拉取速度也很快。

开始部署

整体的部署流程和前面是一样的,唯一的区别在于 docker 镜像需要从 registry 中拉取。

虽然这个步骤在 deploy 的阶段会自动执行,但是仍然推荐单独执行下面的子命令:

kolla-ansible pull

这样可以避免安装过程中再发现镜像拉取的问题,引起不必要的麻烦。默认情况下差不多几分钟即可完成。

具体哪些镜像会被拉取是由 /etc/kolla/globals.yml 中启用的服务决定的。

任务完成后,查看默认会拉取的镜像列表:

# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-nova-compute train bd289389e057 3 days ago 1.81GB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-glance-api train c5f4f437fe90 4 days ago 1.05GB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-nova-libvirt train c5afcfec7d0f 4 days ago 1.2GB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-placement-api train 56f706e9bd1a 4 days ago 1.05GB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-nova-novncproxy train 5fb9e0ab37ee 4 days ago 1.05GB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-nova-api train 3187c2156d8d 4 days ago 1.08GB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-nova-conductor train b0ec4052f082 4 days ago 1.05GB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-nova-ssh train 619985ecbd4c 4 days ago 1.05GB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-nova-scheduler train c2f8087e4786 4 days ago 1.05GB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-kolla-toolbox train efd325bc7752 4 days ago 831MB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-horizon train 24a60179a9d9 4 days ago 1.21GB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-neutron-l3-agent train b6affea43948 4 days ago 1.08GB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-neutron-openvswitch-agent train ee776c6af139 4 days ago 1.07GB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-neutron-server train 7c26e6b47bea 4 days ago 1.07GB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-neutron-metadata-agent train 1e5f0b221b41 4 days ago 1.04GB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-rabbitmq train 837b834dc195 4 days ago 486MB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-neutron-dhcp-agent train e143344ef32d 4 days ago 1.04GB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-openvswitch-db-server train f6b855451cb8 4 days ago 422MB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-openvswitch-vswitchd train de520a25d10c 4 days ago 422MB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-heat-api train ecddc82ba63d 4 days ago 1.07GB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-fluentd train 6f8d5a326d8e 4 days ago 687MB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-heat-engine train a4ec9714ecb3 4 days ago 1.07GB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-heat-api-cfn train 4a53a1160b75 4 days ago 1.07GB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-haproxy train a85706a03d0f 4 days ago 430MB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-keepalived train c3bddac3ceed 4 days ago 411MB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-memcached train 91eec81ebb43 4 days ago 405MB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-cron train 7586cd069cb3 4 days ago 405MB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-mariadb train 46fe8c756ebe 4 days ago 594MB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-chrony train 9984c83c211a 4 days ago 405MB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-keystone-fernet train e74fe5bdef6c 4 days ago 1.03GB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-keystone-ssh train f9744dcb500f 4 days ago 1.03GB
registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-keystone train 216e5b2be1af 4 days ago 1.03GB

注意,因为 kolla 中支持的镜像众多,不可能全部在阿里云上构建,所以如果你启用了其它服务,不能保证有对应的镜像存在。如果想要了解我是如何构建镜像的,请继续关注我。

其它部署命令和以前一样,就是 3 个命令依次执行即可:

kolla-ansible prechecks
kolla-ansible deploy
kolla-ansible post-deploy

整个安装过程就不赘述了。相较于在个人电脑上使用 VirtualBox,阿里云的 ECS 性能要好很多,deploy 耗时 10 分钟左右就搞定了。

这充分展示了,利用云平台真的可以显著得提高效率。复杂如 OpenStack 这样的系统也可以在云上快速完成搭建。虽然没什么实用,但是如果是作为演示或者是教学,显然要比自己去准备服务器好多了。

使用 openstack 客户端的方法

因为宿主机中没有安装 OpenStack 的客户端程序,所以我在自己构建的那个系统里加了一个 bash 脚本去模拟了 openstack 命令,其实也不用那么麻烦,一行命令就能搞定,先把镜像拉取下来:

docker pull registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-openstack-base:train

这个 centos-binary-openstack-base 镜像中包含了所有 OpenStack 相关的客户端,它也是所有 OpenStack 服务的基础镜像,换句话说,其它所有 OpenStack 服务容器中都是可以用 openstack 命令的,选择这个基础镜像只是为了避免无意中启动了其它不该运行的服务引起不必要的麻烦。

然后我们用下面这样一行命令即可启动一个临时容器:

docker run --rm -it -v /etc/kolla/admin-openrc.sh:/admin-openrc.sh:ro registry.cn-shanghai.aliyuncs.com/davycloud/centos-binary-openstack-base:train bash

# 下面是在容器内执行
()# source /admin-openrc.sh
()# openstack
(openstack) service list

简单介绍一下这几个选项:

  • --rm 退出容器的时候把容器删掉
  • -it 需要和容器在终端中交互的时候必须带上,别问,问我也解释不清
  • -v /etc/kolla/admin-openrc.sh:/admin-openrc.sh:ro 把宿主机上的文件挂载到容器内,:ro 表示容器对这个文件是只读的

其它方面也没有什么特别要介绍的了。可以愉快地玩耍了。

注意:计算节点的 virt_type = kvm 仍然需要修改,具体参考我前面的文章。

记得释放实例!

差点忘了最重要的事情,测试完成后别忘了去释放实例,以免一直扣费。

抢占式实例是保证实例有一个小时的稳定使用,不代表一个小时之后就会回收。如果供应比较大的情况下,系统可能会长期不回收你的实例,那就要一直扣费了!

记得释放实例!

记得释放实例!

记得释放实例!


对操作过程有不明的可以在 B站看视频

如果本文对你有帮助,请 点赞分享在看 来一波。

阿里云上安装 OpenStack 是什么体验的更多相关文章

  1. 阿里云上安装 Ubuntu + MariaDB

    阿里云上安装 Ubuntu + MariaDB 任务 安装第二个磁盘 设置第二个磁盘为数据盘 安装 MariaDB 配置 MariaDB 的数据文件目录 配置 MariaDB 远程访问 安装第二个磁盘 ...

  2. 阿里云上安装mysql步骤/ 阿里云ECS搭建Java+mysql+tomcat环境

    使用阿里云ECS挺长一段时间了.这两天碰巧朋友小白让我一步一步教他在ECS上搭建Java+mysql+tomcat环境,所以把在这里把步骤在这简单整理了一下,以便需要的人查阅. 我购买的阿里云服务器系 ...

  3. 阿里云上安装pip3(Ubuntu)

    安装pip3: 这个简单啊,到网上下载get-pip.py的脚本,然后scp到你的阿里云服务器上,python3 get-pip.py即可. 如果不会scp,哈哈,按照下面的几步: wget http ...

  4. 在阿里云上安装python3.4和pycharm

    一. 安装python3.4 二. 安装pycharm 三. 安装可视化界面和远程桌面连接 四. 启动和配置pycharm 五. 安装更多字体 六. 给pycharm设置桌面快捷方式 一. 安装pyt ...

  5. 阿里云上安装启动nginx 以及在个人电脑上通过公网ip访问遇到的问题

    1.安装依赖包 //一键安装上面四个依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 2.下载并解压安装包 ...

  6. 阿里云上安装vsftp笔记

    安装 ftp 1 ssh登录服务器       首先检查有没有安装运行 ps -ef |grep vsftpd         2 yum安装vsftpd        yum安装    yum in ...

  7. 阿里云部署Java web项目初体验(转)/linux 上配置jdk和安装tomcat

    摘要:本文主要讲了如何在阿里云上安装JDK.Tomcat以及其配置过程.最后以一个实例来演示在阿里云上部署Java web项目. 一.准备工作 购买了阿里云的云解析,和云服务器ecs. 2.下载put ...

  8. 阿里云上如何利用yum安装jenkins

    一. 安装jdk 确保安装jenkins前jdk已经安装,如何安装见<如何在阿里云上部署war包到tomcat服务器> 二. 安装jenkins 使用以下命令安装jenkins: wget ...

  9. 阿里云部署Java web项目初体验(转)

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要讲了如何在阿里云上安装JDK.Tomcat以及其配置过程.最后以一个实例来演示在 ...

随机推荐

  1. SFDC Trigger里before和after的区别

    最近项目开始用Trigger来进行Validation Check.也知道可以通过配置Object里的Validation Rule来进行Check,但是项目想如果有Trigger里就都在Trigge ...

  2. PAT (Advanced Level) Practice 1041 Be Unique (20 分) 凌宸1642

    PAT (Advanced Level) Practice 1041 Be Unique (20 分) 凌宸1642 题目描述: Being unique is so important to peo ...

  3. Kubernetes使用metric-server让HPA弹性伸缩运行

    监控架构概述 kubernetes监控指标大体可以分为两类:核心监控指标和自定义指标,核心监控指标是kubernetes内置稳定可靠监控指标,早期由heapster完成,现由metric-server ...

  4. jq分页功能。

    最近在写官网的分页功能.在网上找了很多案例都太复杂也太重.所以准备写一个简单一点的分页. 需求:把请求到的数据做分页. 准备:使用了网上一个简单的分页插件. 思路:分页相当于tab切换功能.具体实操把 ...

  5. 它来了!!!有史以来第一个64位Visual Studio(2022)预览版将在今夏发布!

    美国时间2021年4月19日,微软产品研发部一位负责人Amanda Silver在其博客上发布一则<Visual Studio 2022>的消息,表示将在今年(2021年)夏天发布Visu ...

  6. Vue CLI 是如何实现的 -- 终端命令行工具篇

    Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供了终端命令行工具.零配置脚手架.插件体系.图形化管理界面等.本文暂且只分析项目初始化部分,也就是终端命令行工具的实现. 0. 用法 ...

  7. 11. VUE 数组操作

    变异方法 Vue 包含一组观察数组的变异方法,所以它们也将会触发视图更新.这些方法如下: push() 添加元素 <ul id="example-1"> <li ...

  8. linux 在某个路径下,查找某个文件

    find /cephfs/netdisk/ -name "*.sql"

  9. Tensorflow Serving 参数

    Flags: --port=8500 int32 Port to listen on for gRPC API --grpc_socket_path="" string If no ...

  10. 《C++编程思想》部分章节学习笔记整理

    简介 此笔记为<C++编程思想>中部分章节的学习笔记,主要是第15章--多态性和虚函数 的学习笔记,此外还有少量其他章节的内容. 目录 文档:<C++编程思想>