###### tags: `雲端技術實務` # 安裝OpenStack並建置虛擬機 :writing_hand: (1084906 高于婷) ## 1. 緣由 在「雲端技術實務」課程中,學習安裝OpenStack和建置虛擬機是必要的,因此我寫了這篇筆記以便未來快速查閱。在這篇筆記中,我記錄了安裝OpenStack和建置虛擬機的流程,並加入了一些自己的理解和注意事項,來幫助我更好的掌握這些知識和技術,同時也讓我對OpenStack有更深入的了解。我希望這份筆記能為其他有需要的人提供幫助,讓他們也能更快速的掌握OpenStack和虛擬機建置的技巧~ ## 2. 系統簡介 使用的設備 : 電算中心教室的h11伺服器 伺服器的IP : 10.2.200.211 伺服器的OS : Ubuntu 22.04 LTS (Server版) Gateway : 10.2.200.239 ### OpenStack是什麼 OpenStack是一個自由、開源的雲端運算平台,它是由多個微服務 (micro service) 組成,而使用者可以根據其應用情境去組合這些服務以達到自己的需求,這些服務基本上是透過 REST API 提供 OpenStack作為一套用於IaaS服務的平台,它的核心任務就是管理基礎設施,主要包括三個方面:計算(Compute)、存儲(Storage)、網路(Network) ### OpenStack架構圖  [圖片來源](https://www.openstack.org/software/) ### OpenStack的核心服務 : | 服務名稱 | 類別 | 功能 | Amazon AWS相似的服務 | | -------- | ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | | Nova | 運算服務 (Compute Service) | 提供建立與管理虛擬機的功能。Nova提供了一套API,工程師可利用這些API開發雲端應用程式,而IT管理人員則可以透過網頁的介面來查看或管理資源狀態 | EC2 | | Keystone | 身分識別服務 (Identity Service) | 負責對所有 OpenStack 服務進行身份驗證和授權,它提供了多種驗證方式,包括使用者帳號密碼、Token, | IAM | | Neutron | 網路服務 (Networking) | 提供網路虛擬化的服務,讓虛擬機可以上網,它允許部署和管理其他網路服務,像是入侵偵測系統(IDS)、負載平衡、防火牆、VPN等 | VPC | | Cinder | 區塊儲存服務 (Block Storage) | 提供 Block Storage 管理服務,為虛擬機提供 volume (就是負責掛載硬碟到虛擬機上,讓虛擬機有儲存空間),也提供 volume 快照和備份的功能 | EBS | | Swift | 物件儲存服務 (Object Storage) | 提供可擴展的分散式儲存平臺,以防止單點故障的情況產生,可存放非結構化的資料,像是圖片、網頁、網誌等 | S3 | | Glance | 映像檔管理服務 (Image Service) | 負責映像檔(image) 管理,包含查詢與存取虛擬機映像檔 | VM Import/Export | | Horizon | 儀錶板 (Dashboard) | 提供一套圖形化的網頁介面,讓使用者可以不用以指令來操作 Openstack | Console | | Heat | 編排模板服務 (Orchestration) | 當需要管理的資源太多時,一個一個手動設定會很麻煩,可以透過 Heat 來自動化部署或配置,比如自動創建虛擬機、自動掛載 volume 等 | None | | Ceilometer | 資料監控計量服務(Telemetry) | 負責監控資源用量和用戶信息收集 | None | ## 3. 安裝過程(虛擬機建立hostname改為學號,IP設定正確並確認網路可通) ### (1) 使用Devstack安裝Openstack **Step1 : 更新系統** ``` 輸入指令 : sudo apt-get update && sudo apt-get upgrade -y ``` **Step2 : 新增一個名為stack的使用者**(用以安裝OpenStack) ``` 輸入指令 : sudo useradd -s /bin/bash -d /opt/stack -m stack ```  **Step3 : 提高/opt/stack這個路徑的權限**(避免之後安裝的時候出現下載權限的問題) ``` 輸入指令 : sudo chmod +x /opt/stack ```  **Step4 : 讓stack這個使用者具有root的權限,並且在使用各種指令的時候不用輸入密碼** ``` 輸入指令 : echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack ```  **Step5 : 切換到stack使用者**(然後可以輸入指令「whoami」用以確認目前使用者的名稱是否為stack) ``` 輸入指令 : sudo -u stack -i ```  **Step6 : 安裝git套件** ``` 輸入指令 : sudo apt-get install -y git ``` **Step7 : 下載devstack** ``` 輸入指令 : git clone https://opendev.org/openstack/devstack ```  **Step8 : 下載完之後切換到devstack目錄底下** ``` 輸入指令 : cd devstack ```  **Step9 : 使用vim指令建立一個 local.conf 檔案並在檔案中添加以下的內容** ``` 輸入指令 : vim local.conf ```  **Step10 : 開始安裝openstack並等待** ``` 輸入指令 : ./stack.sh ```  下圖是安裝成功後所顯示的內容,要注意的是default user是`admin`和`demo`  **Step11 : 安裝完成後,前往登入openstack的網址為<font color="#f00">http://10.2.200.211/dashboard</font>** 其中10.2.200.211為自己機器的ip位址,接著`User name`輸入admin,`Password`輸入剛剛在local.conf檔案中配置的密碼,這樣就可以登入了  下圖為登入後的畫面  ### (2) 建置虛擬機 **Step1 : 建立router** 在左側選單中選擇`Routers`,並點擊右上角的`Create Router`按鈕  在`Router Name`中輸入Router的名稱(這裡叫student-router),然後在下方的`External Network`中選擇`public`,這表示連接外部的網路,最後按下`Create Router`的按鈕來建立router  目前Network Topology(網路拓樸)的長相,其中public表示外網,可以看到剛剛建立的router已經與外網連在一起了  **Step2 : 建立自己的內部網路** 在左側選單中選擇`Networks`,並點擊右上角的`Create Network`按鈕  接著在`Network Name`中輸入Network的名稱(這裡叫student-net),然後按`Next`按鈕  接著在`Subnet Name`中輸入名稱(這裡叫student-subnet),`Network Address`中輸入`10.2.200.212/25`(伺服器第二組IP),`Gateway IP`中輸入`10.2.200.239`(為學校的Gateway),然後按`Next`按鈕  記得要勾選`Enable DHCP`,`Allocation Pools`中輸入`10.2.200.212,10.2.200.215`,而`DNS Name Servers`中輸入`8.8.8.8`,然後按`Create`按鈕  建立後可以看到在Network Topology中多了`student-net`的網段,也就是自己的網路  **Step3 : Add Interface** 接著點擊`student-router`這個router,然後按`Add Interface` 來新增網路介面連接`student-subnet`  接著在`Subnet`中選擇`student-net: 10.2.200.128/25(student-subnet)`,而`IP Address`不用輸入,然後按`Submit`按鈕  接著可以看到在Network Topology中會顯示`student-router`連接著`student-net`  **Step4 : 改變Security Groups的規則** 接著點擊`Security Groups`,並按下`Manage Rules`按鈕  接著按右上方的`Add Rule`按鈕,新增兩條規則分別是 SSH 和 ICMP  接著在`Rule`中選擇`SSH`,然後按`Add`按鈕,新增SSH Rule  接著在`Rule`中選擇`All ICMP`,然後按`Add`按鈕,新增ICMP Rule  可以看到成功新增這兩條規則  **Step5 : 建立Instance** 在左側選單中選擇`Instance`,並點擊右上角的`Launch instance`按鈕  接著點擊左側的`Details`選單,在`Instance Name`中輸入`s1084906`(學號)  接著點擊左側的`Source`選單,設定虛擬機要安裝的image檔  接著點擊左側的`Flavor`選單,選擇合適的硬體配置模板(這裡選擇m1.nano)  接著點擊左側的`Networks`選單,選擇網路(這裡選擇student-net)  接著點擊左側的`Security Groups`選單,這裡選擇default  其他的頁面依照原本設定即可,最後按下`Launch instance` 接著可以看到剛建好的虛擬機  **Step6 : 設定Floating IP** 點擊`Create Snapshot`後選擇`Allocate Floating IP` 接著在`Pool`中選擇`public`,然後按`Allocate IP`按鈕,  完成後可以看到以下的畫面  最後Network Topology(網路拓樸)的長相   ### (3) 檢查連線狀態並連入虛擬機 **Step1 : 連線到cirros虛擬機** 先進入到學校主機H11的目錄下,再利用ssh連線到cirros虛擬機 ``` 輸入指令 : ssh cirros@172.24.4.47 ```  **Step2 : 測試虛擬機是否可以連到外網** ``` 輸入指令 : ping 8.8.8.8 ```  ### (4) 查看cirros虛擬機的網路和hostname **查看網路資訊** ``` 輸入指令 : ip addr ```  **查看hostname** ``` 輸入指令 : hostname ```  ## 4. 結論 這次的作業讓我深刻體驗到在實作OpenStack時的挑戰,由於一開始對OpenStack的運作不太熟悉,因此在實作的過程中遇到了不少的問題,特別是在設定網路的部分,重複嘗試了很多次才成功。不過透過這次的作業,我學會了如何安裝OpenStack並建置虛擬機,同時也對OpenStack有更深入的認識 ## 參考網址 1. [安裝OpenStack](https://docs.openstack.org/devstack/latest/) 2. [虛擬機網路設定](https://hkitblog.com/%E7%AC%AC%E5%85%AB%E7%AF%87-openstack-%E9%85%8D%E7%BD%AE%E8%A4%87%E9%9B%9C%E5%88%B0%E3%80%8C%E8%B7%8C%E6%B8%A3%E3%80%8D%EF%BC%81rdo-%E6%87%B6%E4%BA%BA%E5%8C%85%E8%A7%A3%E6%B1%BA%E4%B8%80%E5%88%87/?doing_wp_cron=1683987596.3871738910675048828125) 3. [建立instance](https://hkitblog.com/%e7%ac%ac%e4%ba%94%e7%af%87-openstack-%e9%85%8d%e7%bd%ae%e8%a4%87%e9%9b%9c%e5%88%b0%e3%80%8c%e8%b7%8c%e6%b8%a3%e3%80%8d%ef%bc%81rdo-%e6%87%b6%e4%ba%ba%e5%8c%85%e8%a7%a3%e6%b1%ba%e4%b8%80%e5%88%87/?doing_wp_cron=1684036551.1248500347137451171875) 4. [OpenStack使用 Horizon Web 介面佈署](https://linux.onlinedoc.tw/2015/12/rhel-openstack-horizon-web.html) 5. [OpenStack介紹](https://igene.tw/openstack-intro-1) 6. [OpenStack架構](https://www.ithome.com.tw/tech/81095) 7. [OpenStack架構與介紹](https://hackmd.io/@109213067/BkECVRMbn#OpenStack-%E6%98%AF%E4%BB%80%E9%BA%BC)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up