目錄
1、安裝環境說明
OS:Ubuntu 14.04 LTS
Controller
- IP:10.0.0.11 / 24
- Gateway:10.0.0.1
Network
- Management IP:10.0.0.21 / 24 (eth0)
- Gateway:10.0.0.1
- Instance Tunnel IP:10.0.1.21 / 24 (eth1)
- External Interface (eth2)
- IP:不指定 IP
- 設定方式如下:(修改 /etc/network/interfaces)
auto eth2
iface eth2 inet manual
up ip link set dev $IFACE up
down ip link set dev $IFACE down
Compute 1
- Management IP:10.0.0.31 / 24
- Gateway:10.0.0.1
- Instance Tunnel IP:10.0.1.31
修改每個 node 的 /etc/hosts 檔案,並加入以下內容:
10.0.0.11 controller
10.0.0.21 network
10.0.0.31 compute1
- 使用者身分:root
2、前言
截至目前為止,一共安裝了 OpenStack 的服務包含以下:
- Identity Service (Keystone)
- Image Service (Glance)
- Compute Service (Nova)
- Networking Service (Neutron)
若要啟動一個 VM instance,其實最少只要以上服務即可,接著以下來試著啟動一個 VM instance。
3、產生金鑰對(keypair)
大部分雲端系統支援公開金鑰認證(public key authentication)而並非簡單的帳號密碼認證,因此在啟動 VM instance 之前,我們要透過 ssh-keygen 工具來產生金鑰並加入 OpenStack 環境中使用。
以下命令在 controller node 上執行
# 以 demo 的身分執行
controller# source ~/OpenStack/demo-openrc.sh
# 產生金鑰對
controller# ssh-keygen
# 將產生的金鑰(公開)加入 OpenStack 環境中,並設定名稱為 demo-key
controller# nova keypair-add --pub-key /root/.ssh/id_rsa.pub demo-key
# 驗證公開金鑰是否已經匯入 OpenStack 環境中
controller# nova keypair-list
+----------+-------------------------------------------------+
| Name | Fingerprint |
+----------+-------------------------------------------------+
| demo-key | 61:fe:66:8b:ee:dc:05:c9:3f:b0:7f:c4:92:34:df:a6 |
+----------+-------------------------------------------------+
4、佈署 & 啟動第一台 VM
在開始佈署 VM instance 之前,有幾個部分是必須先確定的,包含 flavor(VM 的類型)、映像檔、網路、security group、公開金鑰、instance name …. 等等。
4.1 flavor
flavor 表示一群 VM 資源定義的集合,而定義中包含 VM 所使用的 vCPU 數量、記憶體大小、儲存空間 … 等資訊,以下列出目前預先定義好的 flavor 資訊:
controller# nova flavor-list
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 1 | m1.tiny | 512 | 1 | 0 | | 1 | 1.0 | True |
| 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True |
| 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True |
| 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True |
| 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
從上表可以看到,flavor 的類型從 m1.tiny 到 m1.xlarge 都有,使用者可以根據需求決定要啟動的 VM instance 屬於哪種 flavor。
以下範例我們將會以 m1.tiny 作示範。
4.2 映像檔
以下列出目前可用的映像檔:
controller# nova image-list
+--------------------------------------+---------------------+--------+--------+
| ID | Name | Status | Server |
+--------------------------------------+---------------------+--------+--------+
| 0985b2f3-058e-4ab9-84e3-65c51f849408 | cirros-0.3.3-x86_64 | ACTIVE | |
| 77c0d5f8-1bcc-4937-932c-72f4b0eccbc3 | cirros-0.3.3-x86_64 | ACTIVE | |
+--------------------------------------+---------------------+--------+--------+
以下範例我們將會以 ID 為 77c0d5f8-1bcc-4937-932c-72f4b0eccbc3 的映像檔作示範。
4.3 網路
以下列出可用的網路區段:
controller# neutron net-list
+--------------------------------------+----------+------------------------------------------------------+
| id | name | subnets |
+--------------------------------------+----------+------------------------------------------------------+
| 629c575d-5d2e-4258-bb96-d2def517aa04 | ext-net | 4af846a3-3e14-450d-b620-134cb1479e0d 192.168.20.0/24 |
| 65c99acc-6438-493e-bbde-b3c0def3f575 | demo-net | eb46a51b-c1b0-4df9-9046-a19612fa532f 192.168.3.0/24 |
+--------------------------------------+----------+------------------------------------------------------+
以下範例我們將會使用 demo-net(192.168.3.0/24) 作示範。
4.4 Security Group
以下列出目前所有的 security group:
controller# nova secgroup-list
+--------------------------------------+---------+-------------+
| Id | Name | Description |
+--------------------------------------+---------+-------------+
| 909f974a-771d-4087-ae83-b6ed3aa88e56 | default | default |
+--------------------------------------+---------+-------------+
因為我們先前沒有設定 security group,因此這邊只有 default 一項,而 default 這個群組的設定會阻擋所有來自遠端對 VM instance 的存取。
4.5 啟動 VM instance
所有必要條件都確認後,透過以下指令啟動 VM instance:
nova boot --flavor m1.tiny --image 77c0d5f8-1bcc-4937-932c-72f4b0eccbc3 --nic net-id=65c99acc-6438-493e-bbde-b3c0def3f575 --security-group default --key-name demo-key demo-instance1
+--------------------------------------+------------------------------------------------------------+
| Property | Value |
+--------------------------------------+------------------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | nova |
| OS-EXT-STS:power_state | 0 |
| OS-EXT-STS:task_state | scheduling |
| OS-EXT-STS:vm_state | building |
| OS-SRV-USG:launched_at | - |
| OS-SRV-USG:terminated_at | - |
| accessIPv4 | |
| accessIPv6 | |
| adminPass | gzkYV2K7nsHc |
| config_drive | |
| created | 2014-10-04T04:21:56Z |
| flavor | m1.tiny (1) |
| hostId | |
| id | 29706374-fa90-4082-b51b-ca6a6cdf2a5e |
| image | cirros-0.3.3-x86_64 (77c0d5f8-1bcc-4937-932c-72f4b0eccbc3) |
| key_name | demo-key |
| metadata | {} |
| name | demo-instance1 |
| os-extended-volumes:volumes_attached | [] |
| progress | 0 |
| security_groups | default |
| status | BUILD |
| tenant_id | 7539436331ca4f9783bf93163e2a2e0f |
| updated | 2014-10-04T04:21:56Z |
| user_id | bc1ae50e167f45edb064e582702c5792 |
+--------------------------------------+------------------------------------------------------------+
4.6 確認 VM 狀態
上述指令完成後,Nova Scheduler 會尋找合適的 compute node 將 VM instance 啟動,可以透過以下指令檢查一下目前 VM instance 的狀態:
controller# nova list
+--------------------------------------+----------------+--------+------------+-------------+----------------------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+----------------+--------+------------+-------------+----------------------+
| 29706374-fa90-4082-b51b-ca6a6cdf2a5e | demo-instance1 | ACTIVE | - | Running | demo-net=192.168.3.3 |
+--------------------------------------+----------------+--------+------------+-------------+----------------------+
從上面可以看到 VM instance 的 ID、Network、Status、IP …. 等資訊。
5、存取 VM instance 並測試
因為我們在之前有設定 noVNC,可透過 browser 連線到目前運行中的 VM instance,可透過以下指令取得 noVNC 的連線網址:
controller# nova get-vnc-console demo-instance1 novnc
+-------+---------------------------------------------------------------------------------+
| Type | Url |
+-------+---------------------------------------------------------------------------------+
| novnc | http://controller:6080/vnc_auto.html?token=9395dcbd-b9e8-457b-b6fe-c7e07a268ba9 |
+-------+---------------------------------------------------------------------------------+
有了以上的網址後,就可以透過 browser 以 noVNC 的方式連線到 VM instance 內。
6、問題排除
6.1 無法解析 domain name
透過 noVNC 連線到剛佈署好的 VM 後,可以連到 internet,但 DNS 忘了設定…..導致於 domain name 無法解析,因此我們在 controller node 加入以下設定來解決:
# 顯示目前的 subnet
controller# neutron subnet-list
+--------------------------------------+-------------+-----------------+----------------------------------------------------+
| id | name | cidr | allocation_pools |
+--------------------------------------+-------------+-----------------+----------------------------------------------------+
| 4af846a3-3e14-450d-b620-134cb1479e0d | ext-subnet | 192.168.20.0/24 | {"start": "192.168.20.11", "end": "192.168.20.30"} |
| eb46a51b-c1b0-4df9-9046-a19612fa532f | demo-subnet | 192.168.3.0/24 | {"start": "192.168.3.1", "end": "192.168.3.253"} |
+--------------------------------------+-------------+-----------------+----------------------------------------------------+
# 為 subnet 補上 domain name server 資訊
controller# neutron subnet-update demo-subnet --dns_nameservers list=true 8.8.8.8 8.8.4.4
如此一來,之後產生的 VM 就可以解析 domain name 囉!
沒有留言:
張貼留言