阿裡雲上跑火車(安裝 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 和交換機
依次填寫資訊:
- VPC 名字
- 交換機名字
- 交換機的可用區
- 交換機的位址段
VPC 每個區域内一個即可,是以位址段預設分的比較大,
/16
,交換機是每個可用區一個,位址段預設是
/24
,每個可用區的位址段不能用沖突。多個可用區的交換機可以接到同一個 VPC 裡面。
交換機必須和 ECS 在同一個可用區,如果 ECS 随機到了其它可用區,可以再去建一個交換機。
配置公網和安全組
必須要配置設定公網 IP,不然我們沒法通路這個虛機了:
勾選公網 IP 後,會多出來收費方式。不用擔心公網流量的費用,拉取鏡像的時候都是走的内網流量。隻有從雲伺服器流出的流量才會收費。是以可以忽略不記。
勾選安全組,放開
80
和
443
端口:
注意,安全組的配置是獨立于 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(上海)
的 registry。如果虛機也在同一個 VPC,可以配置為 VPC 的内網位址
cn-shanghai
實際測試結果,阿裡雲内即使不在同一個 VPC 拉取速度也很快。
registry.cn-shanghai.aliyuncs.com
開始部署
整體的部署流程和前面是一樣的,唯一的差別在于
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站看視訊如果本文對你有幫助,請 點贊、 分享、在看 來一波。