iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 18
0

主題

OpenStack Magnum

前言

當今最流行的虛擬化就是容器化,雖然容器化不太算是完整的虛擬化,但是站在部屬服務的服務端而言可是幫了不少的忙,因為它可以大大的減少虛擬化吃的大量資源,他是結合Docker的技術還有加上Heat的編配技術,所搭建出來的服務。

主要內容

容器(Container)簡介


很明顯地與VM的差距在於在於系統本身沒有進行隔離
但是光是這一點就可以為系統資源省下不少成本
但這是最大的優點也是最大的缺點
因為本身沒有與原系統做出明顯的隔離
但優點就是如果只要跑程式的話
這是一個不錯的方案

組件介紹

  • magnum : 本身自己擁有CLI可以進行控制
  • magnum-api : 一個可以提供外部訊息的控制點
  • magnum-conductor : 可以對外連結到Docker Swarm,Kubernets,Mesos

建立資料庫

1.登入資料庫

sudo  mysql -u root -p

2.建立資料庫

CREATE DATABASE magnum;

3.安全性設定

GRANT ALL PRIVILEGES ON magnum.* TO 'magnum'@'controller' IDENTIFIED BY 'MAGNUM資料庫密碼';
GRANT ALL PRIVILEGES ON magnum.* TO 'magnum'@'%' IDENTIFIED BY 'MAGNUM資料庫密碼';

新增使用者

1.登入admin管理者指令模式
2.新增使用者

openstack user create --domain default --password-prompt magnum

3.將使用者加入service群組

openstack role add --project service --user magnum admin

4.建立服務

openstack service create --name magnum --description "OpenStack Container Infrastructure Management Service" container-infra

5.建立API

openstack endpoint create --region RegionOne container-infra \
public http://CONTROLLER的IP:9511/v1
openstack endpoint create --region RegionOne container-infra \
internal http://CONTROLLER的IP:9511/v1
openstack endpoint create --region RegionOne container-infra \
admin http://CONTROLLER的IP:9511/v1

6.建立Domain

openstack domain create --description "Owns users and projects created by magnum" magnum

7.在這之中建立使用者

openstack user create --domain magnum --password-prompt magnum_domain_admin

8.將使用者加入Domain

openstack role add --domain magnum --user magnum_domain_admin admin

安裝及編輯套件

1.安裝套件

sudo DEBIAN_FRONTEND=noninteractive apt-get install magnum-api magnum-conductor -y

前面DEBIAN_FRONTEND=noninteractive是在做不用額外跳窗進入設定模式
2.編輯magnum.conf設定檔

sudo vim /etc/magnum/magnum.conf
[DEFAULT]
#訊息服務
transport_url = rabbit://openstack:AMQP密碼@controller

[api]
host = CONTROLLER的IP

#憑證管理
[certificates]
#如果有裝barbican可以填寫它,會在下一張寫到
cert_manager_type = x509keypair

[cinder_client]
region_name = RegionOne

[database]
connection = mysql+pymysql://magnum:MAGNUM資料庫密碼@controller/magnum

[keystone_authtoken]
memcached_servers = controller:11211
auth_version = v3
auth_uri = http://controller:5000/v3
project_domain_id = default
project_name = service
user_domain_id = default
password = MAGNUM密碼
username = magnum
auth_url = http://controller:35357
auth_type = password

[trust]
trustee_domain_name = magnum
trustee_domain_admin_name = magnum_domain_admin
trustee_domain_admin_password = Domain使用者密碼

[oslo_messaging_notifications]
driver = messaging

3.同步設定檔到資料庫

sudo su -s /bin/sh -c "magnum-db-manage upgrade" magnum

4.重啟服務

sudo service magnum-api restart
sudo service magnum-conductor restart

5.驗證服務

magnum service-list

測試服務

1.下載Fedora的映像檔

wget https://fedorapeople.org/groups/magnum/fedora-atomic-newton.qcow2

2.登入demo使用者指令模式
3.登入映像檔

openstack image create --disk-format=qcow2 --container-format=bare 
--file=fedora-atomic-newton.qcow2 --property os_distro='fedora-atomic' fedora-atomic-newton

4.從SSH金鑰建立連結金鑰

openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey

5.建立集群服務樣板

magnum cluster-template-create --name swarm-cluster-template --image-id fedora-atomic-newton \
--keypair-id mykey --external-network-id public --dns-nameserver 8.8.8.8 
--master-flavor-id m1.small --flavor-id m1.small --coe swarm
  • --external-network-id : 看一下網路設定中的虛擬網路名稱
  • --dns-nameserver : 可以改自己想要的喔

6.建立集群服務

magnum cluster-create --name swarm-cluster --cluster-template swarm-cluster-template \
--master-count 1 --node-count 1

7.檢查是否否成功

magnum cluster-list
magnum cluster-show swarm-cluster

8.將憑證服務套用至變數
8-1 建立資料夾

mkdir myclusterconfig

8-2 讀取設定檔

$(magnum cluster-config swarm-cluster --dir myclusterconfig)

9.建立BusyBox

docker run busybox echo "Hello from Docker!"

10.刪除container

magnum cluster-delete swarm-cluster

後記

我自己是本身就有使用Docker在部屬服務,這是我的一個興趣也是喜好,現在我有多一種方式可以幫我完成這一件事情了,大家可以試試看喔!
希望大家可以在這一個月中讀到非常多的應用技巧,那如果有問題可以以私訊我的方式是使用問題回復,我會盡可能地回答問題,那會在後面統一做回覆,或者如果有想知道的相關的應用也可以提出討論喔。

參考資料

Docker vs. VMs? Combining Both for Cloud Portability Nirvana
OpenStack Doc


上一篇
OpenStack Trove
下一篇
OpenStack Barbican
系列文
OpenStack-多到數不清的套件改36

尚未有邦友留言

立即登入留言