1. 程式人生 > >學習OpenStack之(5):在Mac上部署Juno版本OpenStack 四節點環境

學習OpenStack之(5):在Mac上部署Juno版本OpenStack 四節點環境

0. 前沿

經過一段時間的折騰,終於在自己的Mac上裝好了Juno版本的四節點環境。這過程中,花了大量的時間,碰到了許多問題,學到不少知識,折騰過不少其實不需要折騰的東西,本文試著來對這過程做個總結。

1. 初始環境

說明:

安裝的是14.04 server 版本,裝好後:

(1)修改 /etc/apt/sources.list 來使用廈大的源
deb http://mirrors.xmu.edu.cn/ubuntu/archive/ trusty main restricted universe multiverse
deb http://mirrors.xmu.edu.cn/ubuntu/archive/ trusty-backports restricted universe multiverse
deb http://mirrors.xmu.edu.cn/ubuntu/archive/ trusty-proposed main restricted universe multiverse deb http://mirrors.xmu.edu.cn/ubuntu/archive/ trusty-security main restricted universe multiverse deb http://mirrors.xmu.edu.cn/ubuntu/archive/ trusty-updates main restricted universe multiverse deb-src http://mirrors.xmu.edu.cn/ubuntu/archive/ trusty main restricted universe multiverse
deb-src http://mirrors.xmu.edu.cn/ubuntu/archive/ trusty-backports main restricted universe multiverse deb-src http://mirrors.xmu.edu.cn/ubuntu/archive/ trusty-proposed main restricted universe multiverse deb-src http://mirrors.xmu.edu.cn/ubuntu/archive/ trusty-security main restricted universe multiverse deb
-src http://mirrors.xmu.edu.cn/ubuntu/archive/ trusty-updates main restricted universe multiverse
(2)執行:     echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu"  "trusty-updates/juno main" > /etc/apt/sources.list.d/cloudarchive-juno.list     apt-get update     apt-get upgrade     add-apt-repository cloud-archive:juno apt-get dist-upgrade

2. 我的環境中,最缺乏的是記憶體,偏偏OpenStack很佔用記憶體,特別是Controller節點,MySql和RabbitMQ都佔了1G多的記憶體,所以每個節點的記憶體都是看著差不多剛剛好來分配的。同時也感嘆下VirtualBox的好用,Ubuntu配置很方便,啟動非常迅速,可能也是Mac使用SSD的緣故。

3。設定management 網路能訪問外網,是為了安裝方便。

4. 為什麼storage network和VM traffic network用同一個網路,下文會有說明。

配置好了初始網路環境,接下來就是安裝各個OpenStack node了。 

 備註:

(3). Ubuntu 對 OpenStack 版本的支援採取 Cloud Archive 方案。每個 LTS (long term support)版本在釋出的 image 中就包含了某個 OpenStack 版本(見上圖,14.04 中包含了 IceHouse,16.04 包含了 Mitaka),此時使用者可以直接安裝該版本的 OpenStack。在新的 OpenStack 版本釋出後,Ubuntu 會在老的版本中增加對新的 OpenStack 版本的支援。比如,在 14.04 LTS 版本中增加支援Juno 和 Kilo,此時,使用者需要手工新增 Cloud Archive 中的該版本的 repository,比如 add-apt-repository cloud-archive:juno。更詳細的資訊,可以參考 Configuring Ubuntu Cloud Archive for OpenStack

2. 安裝

安裝OpenStack是按照Juno的正式安裝文件進行的,過程不再重複,安裝結果見下圖:

3.配置

配置基本上是參考標準官方文件,詳細過程不再重複。下面就一些重要的配置做下說明:

3.1 Cinder 配置

1. 使用volume group,Cinder會在該volume group裡面建立virtual volume來建立volume。

[email protected]:/home/s1# vgs
  VG             #PV #LV #SN Attr   VSize VFree
  cinder-volumes   1   2   0 wz--n- 5.34g 3.36g   system           1   2   0 wz--n- 3.72g    0 

 2. 通過LVMISCSIDriver來使用本地硬碟,使用tgtadm做為iscsi helper。

預設的LVMISCSIDriver沒有提供介面來讓使用者配置iSCSI使用的IP地址,所以它就自動使用management network的網絡卡來建立iSCSI session了。其它的一些Vendor提供的iSCSI實現可以使用其它的網絡卡,因此storage network可以與management network分離。

[email protected]:/home/s1# iscsiadm -m session
tcp: [2] 192.168.1.24:3260,1 iqn.2010-10.org.openstack:volume-870d464f-5c2f-4220-869f-92039f766758 tcp: [3] 192.168.1.24:3260,1 iqn.2010-10.org.openstack:volume-15d76291-d1a7-423f-82f0-14bd52652a7c 3. 沒有使用multiple backend,所以不需要使用volume type。

3.2 Nova配置

1. 因為機器的CPU不支援針對虛機的硬體加速,因此配置libvirt使用qumu。

3.3 Neutron配置

1. 在nova中配置使用neutron,而不是預設的nova-network。

network_api_class = nova.network.neutronv2.api.APIsecurity_group_api = neutron
linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver

2. 在ml2配置中,使用flat,gre,和 openvswitch。

4. 執行

0.確保所有的service都正常執行

[email protected]:/home/s1# cinder service-list
+------------------+------------+------+---------+-------+----------------------------+-----------------+
|      Binary      |    Host    | Zone |  Status | State |         Updated_at         | Disabled Reason |
+------------------+------------+------+---------+-------+----------------------------+-----------------+
| cinder-scheduler | controller | nova | enabled |   up  | 2014-12-28T16:00:28.000000 |       None      |
|  cinder-volume   |   block1   | nova | enabled |   up  | 2014-12-28T16:00:28.000000 |       None      |
|  cinder-volume   | controller | nova | enabled |  down | 2014-12-28T14:25:29.000000 |       None      | +------------------+------------+------+---------+-------+----------------------------+-----------------+ [email protected]:/home/s1# nova service-list
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary           | Host       | Zone     | Status  | State | Updated_at                 | Disabled Reason |
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+
| 1  | nova-cert            | controller | internal | enabled | up    | 2014-12-28T16:00:45.000000 | -               |
| 2  | nova-consoleauth | controller | internal | enabled | up    | 2014-12-28T16:00:46.000000 | -               |
| 3  | nova-scheduler    | controller | internal | enabled | up    | 2014-12-28T16:00:45.000000 | -               |
| 4  | nova-conductor   | controller | internal | enabled | up    | 2014-12-28T16:00:43.000000 | -               |
| 5  | nova-compute     | compute1   | nova   | enabled | up    | 2014-12-28T16:00:42.000000 | -               | +----+------------------+------------+----------+---------+-------+----------------------------+-----------------+ [email protected]:/home/s1# neutron agent-list
+--------------------------------------+--------------------+----------+-------+----------------+---------------------------+
| id                                   | agent_type         | host     | alive | admin_state_up | binary                    |
+--------------------------------------+--------------------+----------+-------+----------------+---------------------------+
| 262b412c-0c3c-446d-8e9f-313a09970a8b | Open vSwitch agent | compute1 | :-)   | True           | neutron-openvswitch-agent |
| 3c7067be-6711-4479-8f64-7162a889feb1 | Metadata agent        | network  | :-)    | True           | neutron-metadata-agent    |
| 465b0881-dcb3-4adc-9df3-3035fca02661 | DHCP agent             | network  | :-)     | True           | neutron-dhcp-agent        |
| 79fbacd2-5b08-4b34-b252-d0094d2b99fd | Open vSwitch agent | network  | :-)    | True           | neutron-openvswitch-agent |
| bc276c9d-63c5-4918-86c9-fe83edc31901 | L3 agent                  | network  | :-)    | True           | neutron-l3-agent          |
+--------------------------------------+--------------------+----------+-------+----------------+---------------------------+

1. 因為資源有限,建立一個比m1.tiny更少系統要求的flavor tiny:

[email protected]:/home/s1# 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      |
| a0317e03-d265-4dd3-a9e4-275a2b25c100 | tiny      | 300       | 1    | 0         |      | 1     | 1.0         | True      | +--------------------------------------+-----------+-----------+------+-----------+------+-------+-------------+-----------+ 2. 建立neutron 網路 [email protected]:/home/s1# neutron net-list
+--------------------------------------+----------+-----------------------------------------------------+
| id                                   | name     | subnets                                             |
+--------------------------------------+----------+-----------------------------------------------------+
| 2e068976-92b2-4a50-bbcb-14b70d4195af | ext-net     | a04711a2-0917-4d1b-9f93-cc2691c22517 192.168.1.0/24 |
| 0a4cd030-d951-401a-8202-937b788bea43 | demo-net  | 08b53624-63a7-4c99-97b0-c8bae3b3cbce 10.0.1.0/24    |
|                                                               | demo-net2  |5598bdf9-2de4-4a4e-9054-2070102e0f1f 10.0.0.0/24    | +--------------------------------------+----------+-----------------------------------------------------+ [email protected]:/home/s1# neutron subnet-list
+--------------------------------------+--------------+----------------+----------------------------------------------------+
| id                                   | name         | cidr           | allocation_pools                                   |
+--------------------------------------+--------------+----------------+----------------------------------------------------+
| a04711a2-0917-4d1b-9f93-cc2691c22517 | ext-subnet   | 192.168.1.0/24 | {"start": "192.168.1.100", "end": "192.168.1.200"} |
| 08b53624-63a7-4c99-97b0-c8bae3b3cbce | demo-subnet  | 10.0.1.0/24    | {"start": "10.0.1.2", "end": "10.0.1.254"}         |
| 5598bdf9-2de4-4a4e-9054-2070102e0f1f | demo-subnet2 | 10.0.0.0/24    | {"start": "10.0.0.2", "end": "10.0.0.254"}         |
+--------------------------------------+--------------+----------------+----------------------------------------------------+ [email protected]:/home/s1# neutron router-list
+--------------------------------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-------+
| id                                   | name        | external_gateway_info                                                                                                                                                                     | distributed | ha    |
+--------------------------------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-------+
| 9ba04071-f32b-435e-8f44-e32936568102 | demo-router | {"network_id": "2e068976-92b2-4a50-bbcb-14b70d4195af", "enable_snat": true, "external_fixed_ips": [{"subnet_id": "a04711a2-0917-4d1b-9f93-cc2691c22517", "ip_address": "192.168.1.100"}]} | False       | False |
+--------------------------------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-------+ 3. 建立volume [email protected]:/home/s1# cinder list
+--------------------------------------+--------+--------------+------+-------------+----------+--------------------------------------+
|                  ID                  | Status | Display Name | Size | Volume Type | Bootable |             Attached to              |
+--------------------------------------+--------+--------------+------+-------------+----------+--------------------------------------+
| 15d76291-d1a7-423f-82f0-14bd52652a7c | in-use |    vol22     |  1   |     None    |   true   | 9ff3776b-6835-4a4e-8b11-b440591ca9b9 |
| 870d464f-5c2f-4220-869f-92039f766758 | in-use |    vol33     |  1   |     None    |   true   | 20c011e1-de8f-4ac8-ac6a-5ba0f9dd9b42 | +--------------------------------------+--------+--------------+------+-------------+----------+--------------------------------------+ 4. 從volume建立虛機 5. 檢查虛機 1. VM可使用 2. VM可以互相訪問 3. 虛機可以訪問外網 6. 建立虛機後的網路

5. 遇到過的問題及解決辦法

5.1 Ubuntu安裝失敗

現象:VirtualBox無法辨識ubuntu iso檔案

原因:iso檔案有問題,需要重新下載iso檔案,注意確保下載的iso檔案的md5值和伺服器上iso的md5值相同,不同則表示下載有問題。

5.2 建立虛機失敗

日誌:Filter RamFilter returned 0 hosts

原因:nova-scheduler找不到符合flavor要求的host來建立虛機

解決:減小flavor要求

5.3 虛機無法啟動 console:Boot failed,not a bootable disk。No bootable device。 原因:啟動虛機的volume的image不含boot loader。 5.4 虛機build失敗 日誌:  BuildAbortException: Build of instance 66fbb471-21a9-4f45-9ca7-37a6e4606179 aborted: Failed to allocate the network(s), not rescheduling. RemoteError: Remote error: OperationalError (OperationalError) (1048, “Column 'instance_uuid' cannot be null”)  原因:nova更新資料庫表instance_extra失敗。開了一個bug給OpenStack,https://bugs.launchpad.net/nova/+bug/1405741,但是還沒有人理我。 解決:修改code,註釋掉出錯地方的程式碼,重新執行,結果是虛機的狀態一直停留在building狀態,可手動修改資料庫記錄將其變為active。 update instances set vm_state='active' where uuid='9ff3776b-6835-4a4e-8b11-b440591ca9b9';

6. 感想

1.學習OpenStack,得從搭環境開始,devstack是不夠的。

2. open source的產品的一大好處是可以按需修改程式碼

3. 在config檔案中設定debug=True,可以得到最詳細的日誌,編譯除錯。

5. OpenStack要學的東西很多。。。

6. 其它的想到再加過來吧 TBD

相關推薦

學習OpenStack5Mac部署Juno版本OpenStack 節點環境

0. 前沿 經過一段時間的折騰,終於在自己的Mac上裝好了Juno版本的四節點環境。這過程中,花了大量的時間,碰到了許多問題,學到不少知識,折騰過不少其實不需要折騰的東西,本文試著來對這過程做個總結。 1. 初始環境 說明: 安裝的是14.04 server 版本,裝好後: (1)修改

學習OpenStack6Neutron 深入學習 OVS + GRE Compute node 篇

0.環境 OpenStack網路配置:一個tenant, 2個虛機 Type driver: GRE, Mechanism driver: OVS 一個public network: ext-net 和相應的subnet ext-subnet 一個VM network:demo-net 和相應

探索 OpenStack 7Neutron 深入探索 Open vSwitch (OVS) + GRE Neutron節點

0. 測試環境 OpenStack配置: tenant:三個tenant:demo,tenant-one,tenant-two network:三個tenanet公用public network,每個tenant擁有自己的subnet,都有一個router連線自己的subnet到public n

探索 OpenStack 8Neutron 深入探索 OVS + GRE 完整網路流程 篇

前兩篇博文分別研究了Compute節點和Neutron節點內部的網路架構。本文通過一些典型流程案例來分析具體網路流程過程。 0. 環境 簡單總結一下: Compute 節點上由Neutron-OVS-Agent負責: br-int:每個虛機都通過一個Linux brige連到該OVS橋上

python實戰筆記5使用Redis+Flask維護動態代理池

在做爬蟲的時候,可能會遇到IP被封的問題,利用代理就可以偽裝自己的IP進行爬蟲請求。在做爬蟲請求的時候需要很多代理IP,所以我們可以建立一個代理池,對代理池中的IP進行定期的檢查和更新,保證裡面所有的代理都是可用的。這裡我們使用Redis和Flask維護一個代理池,Redis

機器學習回顧篇5樸素貝葉斯演算法

1 引言 說到樸素貝葉斯演算法,很自然地就會想到貝葉斯概率公式,這是我們在高中的時候就學過的只是,沒錯,這也真是樸素貝葉斯演算法的核心,今天我們也從貝葉斯概率公式開始,全面擼一擼樸素貝葉斯演算法。 2 貝葉斯概率公式 2.1 聯合概率與全概率公式 定義1:完備事件組 ${A_1} \cup {A_2

學習路-RabbitMQMac安裝RabbitMQ

1.安裝: RabbitMQ:brew install rabbitmq 2.RabbitMQ的安裝位置: /usr/local/Cellar/rabbitmq/3.7.9 3.配置環境變數: cd~ vi .bash_profile export RABBIT_HOME=/usr/loca

es6學習5數值的擴充套件

1.Number.isFinite(), Number.isNaN() ES6 在 Number 物件上,新提供了Number.isFinite()和Number.isNaN()兩個方法。Number.isFinite()用來檢查一個數值是否為有限的( finite )。

Java學習筆記53.面向物件方法詳解

  方法是類或物件的行為特徵的抽象,方法是類或物件最重要的組成成分。但從功能上看,方法完全類似於傳統結構化程式設計裡的函式。值得指出的是,Java裡的方法不能獨立存在,所有的方法必須定義在類裡。方法在邏輯上要麼屬於類,要麼屬於物件。 1.方法的所屬性   永遠不要把方法當成

【SSH旅】一步步學習Hibernate框架關於持久化

stc localhost 對象 schema hbm.xml java let pass [] 在不引用不論什麽框架下,我們會通過平庸的代碼不停的對數據庫進行操作,產生了非常多冗余的可是又有規律的底層代碼,這樣頻繁的操作數據庫和大量的底層代碼的反復

Swift學習筆記5集合類型

nbsp roc 三種 一個 刪除指定元素 edge 空值 port 自定義 目錄: 數組:Array 集合:Set 字典:Dictionary Swift提供Array(有序集合數據)、Set(無序無重復集合)和Dictionary(無序鍵值對集合)三

SpringBoot學習筆記5處理前端JSON返回的日期的格式

處理 date() ring row 學習筆記 post 直觀 val rtt SpringBoot學習筆記(4):處理前端JSON返回的日期的格式 問題描述   前端頁面顯示的時間為毫秒格式,不利於直觀顯示! 解決方法1——後端解決 public class Flow

《Linux學習並不難》用戶管理5修改Linux用戶賬戶

Linux 用戶 usermod 9.4 《Linux學習並不難》用戶管理(5):修改Linux用戶賬戶使用usermod命令可以更改用戶的Shell類型、所屬的組群、用戶密碼的有效期,還能更改用戶的登錄名。命令語法:usermod [選項] [用戶名]命令中各選項的含義如表所示。選項 選項含義

《Linux學習並不難》文件/目錄管理5 ls命令列出目錄和文件信息

Linux ls 7.5 《Linux學習並不難》文件/目錄管理(5): ls命令列出目錄和文件信息使用ls命令,對於目錄而言將列出其中的所有子目錄與文件信息;對於文件而言將輸出其文件名以及所要求的其它信息。 命令語法:ls [選項] [目錄|文件]命令中各選項的含義如表所示。選項 選項含義

例項學習ansible系列5常用模組copy

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

深入學習Redis5叢集

前言 在前面的文章中,已經介紹了Redis的幾種高可用技術:持久化、主從複製和哨兵,但這些方案仍有不足,其中最主要的問題是儲存能力受單機限制,以及無法實現寫操作的負載均衡。 Redis叢集解決了上述問題,實現了較為完善的高可用方案。本文將詳細介紹叢集,主要內容包括:叢集的作用;叢集的搭建方法

linux學習筆記5檔案許可權

檔案許可權 1.檔案許可權存在的意義 系統最底層安全設定方法之一 保證檔案可以被可用的使用者做相應操作 2.檔案許可權的檢視 ls -l file ls -ld dir ll file ll -d dir 3.檔案許可權的讀取 - |rw-rw-r--|

mybatis學習5關聯查詢的幾種方式

文章末尾附上Employee.java  和 Department.java 方式一:聯合查詢:級聯屬性封裝結果集     <resultMap type="com.atguigu.mybatis.bean.Employee" id="MyDi

tensorflow學習5變數管理

我們在寫神經網路的時候,往往需要傳遞很多引數。而且當網路結構更復雜,引數更多的時候,在一個函式中寫若干要傳遞的引數往往不現實,如 def inference(w1,w2,w3,w4,w5.....) 因此,我們需要有一個更好的方式來傳遞和管理神經網路中的引數。tensorflow提

多執行緒學習5synchronized 的基礎使用

2018年10月03日 目錄 前言 前言 java中已經有了內建鎖:synchronized,synchronized的特點是使用簡單,一切交給JVM去處理,不需要顯示釋放; j