天天看點

在阿裡雲上安裝OpenStack是什麼體驗

阿裡雲上跑火車(安裝 OpenStack Train 版本),體驗超預期!

前言

前面給大家提供了用虛拟機安裝 OpenStack 的鏡像,雖然已經很簡便了,但還是略顯笨重。一來鏡像檔案比較大,二來個人電腦資源比較有限,體驗不是很好。

最最重要的是,使用個人電腦沒法展示

Kolla

的真正實力,多節點安裝。

為了讓大家能充分體驗到雲計算帶來的便利,我把目光盯上了公有雲。

本期先介紹基本操作,仍然是部署一個

All-In-One

的環境。

選擇阿裡雲

國内首選的公有雲當然是阿裡雲了,我其實很早就買了個阿裡雲的雲伺服器,但是一直沒充分利用,這次雖然配置還不夠來搭建環境,但是正好可以拿來建構鏡像。

如果你是新使用者當然要先去

阿裡雲

新增賬號啦,

新使用者首購優惠

幅度會比較大,可以等到促銷的時候下手。

注意!!:本次示範用的是搶占式按量付費虛機,按照規則,在阿裡雲有任何消費,你就不屬于新使用者了。是以,如果你想利用新使用者優惠買個雲主機長期使用,務必請先把包年包月的伺服器先買好,以免喪失了新使用者的優惠資格。切記!切記!

準備出發!

準備工作

因為

Kolla

的鏡像源存放在

docker hub

,在雲主機上直接通路是比較慢的(時間就是金錢啊!),并且沒有提供最新的 OpenStack 版本

train

建構。

這次我是通過

kolla

自行建構了最新的鏡像。并且上傳到阿裡雲的容器鏡像服務裡,這樣在阿裡雲的雲主機裡就可以享受内網的速度,非常快的拉取鏡像了。

建構鏡像還踩了點小坑,具體過程後續有機會再詳述,就不在本文贅述了。

建立 ECS

選擇計費方式

來到阿裡雲的 ECS 建立頁面,可以看到有 3 種計費類型:

  • 包年包月
  • 按量付費
  • 搶占式執行個體

用 Kolla 部署 OpenStack 需要有

8GB

記憶體,按此配置,包年包月的價格其實不低了,也沒那個必要。

按量付費,

0.5

元/小時,已經能接受了。

别急,切換到搶占式執行個體,一個小時

0.07

元,不用四舍五入,這也等于不要錢好麼!

在阿裡雲上安裝OpenStack是什麼體驗

果斷更新到

4 vCPU 16 GiB

的配置吧。

相同的配置在不同的區域價格可能會有差别

選擇鏡像

選擇最新的

CentOS 7.7 64位

,取消勾選“安全加強”,我們隻是臨時測試,用不上:

在阿裡雲上安裝OpenStack是什麼體驗

選擇 VPC 和交換機

預設情況下,阿裡雲為我們提供了預設的網絡,但是這裡虛機需要用到 2 塊網卡,隻有選擇 VPC 網絡後,才能支援添加彈性網卡。

在阿裡雲上安裝OpenStack是什麼體驗

VPC 網絡和交換機參考下面的步驟建立。

建立 VPC 和交換機

依次填寫資訊:

  1. VPC 名字
  2. 交換機名字
  3. 交換機的可用區
  4. 交換機的位址段
在阿裡雲上安裝OpenStack是什麼體驗

VPC 每個區域内一個即可,是以位址段預設分的比較大,

/16

,交換機是每個可用區一個,位址段預設是

/24

,每個可用區的位址段不能用沖突。多個可用區的交換機可以接到同一個 VPC 裡面。

交換機必須和 ECS 在同一個可用區,如果 ECS 随機到了其它可用區,可以再去建一個交換機。

配置公網和安全組

必須要配置設定公網 IP,不然我們沒法通路這個虛機了:

在阿裡雲上安裝OpenStack是什麼體驗

勾選公網 IP 後,會多出來收費方式。不用擔心公網流量的費用,拉取鏡像的時候都是走的内網流量。隻有從雲伺服器流出的流量才會收費。是以可以忽略不記。

勾選安全組,放開

80

443

端口:

在阿裡雲上安裝OpenStack是什麼體驗
注意,安全組的配置是獨立于 ECS 的,下次再用到這個預設安全組的時候,就不用再次開啟了。

增加輔助網卡

Kolla 必須要有 2 塊網卡,是以我們這裡必須要再增加一塊彈性網卡:

在阿裡雲上安裝OpenStack是什麼體驗
實際測試中,并沒有用到它,是以我們暫時不關心它的配置

密碼和主機名配置

登入憑證按個人習慣,選擇密鑰對或者密碼:

在阿裡雲上安裝OpenStack是什麼體驗
建議使用密鑰方式,更安全也更友善一點。

配置執行個體名和主機名,執行個體名是在阿裡雲網頁上看到的名字,主機名是虛機内部的

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站看視訊

如果本文對你有幫助,請 點贊、 分享、在看 來一波。