Linux中國

LXD 2.0 系列(十一):LXD 和 OpenStack

介紹

首先對這次的延期抱歉。為了讓一切正常我花了很長時間。我第一次嘗試是使用 devstack 時遇到了一些必須解決問題。 然而即使這樣,我還是不能夠使網路正常。

我終於放棄了 devstack,並使用用戶友好的 Juju 嘗試使用 「conjure-up」 部署完整的 Ubuntu OpenStack。它終於工作了!

下面是如何運行一個完整的 OpenStack,使用 LXD 容器而不是 VM,並在 LXD 容器中運行所有這些(嵌套的!)。

要求

這篇文章假設你有一個可以工作的 LXD 設置,提供容器網路訪問,並且你有一個非常強大的 CPU,大約 50GB 給容器空間和至少 16G B的內存。

記住,我們在這裡運行一個完整的 OpenStack,這東西不是很輕量!

設置容器

OpenStack 由大量不同做不同事情的組件組成。 一些需要一些額外的特權,為了可以使設置更簡單,我們將使用特權容器。

我們將配置支持嵌套的容器,預載入所有需要的內核模塊,並允許它訪問 /dev/mem(顯然是需要的)。

請注意,這意味著 LXD 容器的大部分安全特性對該容器被禁用。 然而由 OpenStack 自身產生的容器將是無特權的,並且可以正常使用 LXD 的安全特性。

lxc launch ubuntu:16.04 openstack -c security.privileged=true -c security.nesting=true -c "linux.kernel_modules=iptable_nat, ip6table_nat, ebtables, openvswitch"
lxc config device add openstack mem unix-char path=/dev/mem

LXD 中有一個小 bug,它會嘗試載入已經載入到主機上的內核模塊。這已在LXD 2.5中得到修復,並將在LXD 2.0.6 中修復,但在此之前,可以使用以下方法:

lxc exec openstack -- ln -s /bin/true /usr/local/bin/modprobe

我們需要加幾條 PPA 並安裝 conjure-up,它是我們用來安裝 OpenStack 的部署工具。

lxc exec openstack -- apt-add-repository ppa:conjure-up/next -y
lxc exec openstack -- apt-add-repository ppa:juju/stable -y
lxc exec openstack -- apt update
lxc exec openstack -- apt dist-upgrade -y
lxc exec openstack -- apt install conjure-up -y

最後一步是在容器內部配置 LXD 網路。

所有問題都選擇默認,除了:

  • 使用 dir 存儲後端( zfs 不在嵌套容器中用)
  • 不要配置 IPv6 網路(conjure-up/juju 不太兼容它)
lxc exec openstack -- lxd init

現在配置完容器了,現在我們部署 OpenStack!

用 conjure-up 部署 OpenStack

如先前提到的,我們用 conjure-up 部署 OpenStack。

這是一個很棒的用戶友好的可以與 Juju 交互來部署複雜服務的工具。

首先:

lxc exec openstack -- sudo -u ubuntu -i conjure-up
  • 選擇 「OpenStack with NovaLXD」
  • 選擇 「localhost」 作為部署目標(使用 LXD)
  • 點擊 「Deploy all remaining applications」

接下來會部署 OpenStack。整個過程會花費一個多小時,這取決於你運行的機器。你將看到所有服務會被分配一個容器,然後部署並最終互連。

Conjure-Up deploying OpenStack

部署完成後會顯示一個安裝完成的界面。它會導入一些初始鏡像、設置 SSH 許可權、配置網路最後會顯示面板的 IP 地址。

訪問面板並生成一個容器

面板運行在一個容器中,因此你不能直接從瀏覽器中訪問。

最簡單的方法是設置一條 NAT 規則:

lxc exec openstack -- iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to <IP>

其中 <ip> 是 conjure-up 在安裝結束時給你的面板 IP 地址。

你現在可以獲取 「openstack」 容器的 IP 地址(來自 lxc info openstack),並將瀏覽器指向:http:///horizon 。

第一次載入可能需要幾分鐘。 一旦顯示了登錄界面,輸入默認登錄名和密碼(admin/openstack),你就會看到OpenStack的歡迎面板!

oslxd-dashboard

現在可以選擇左邊的 「Project」 選項卡,進入 「Instances」 頁面。 要啟動一個使用 nova-lxd 的新實例,點擊 「Launch instance」,選擇你想要的鏡像,網路等,接著你的實例就產生了。

一旦它運行後,你可以為它分配一個浮動 IP,它將允許你從你的 「openstack」 容器中訪問你的實例。

總結

OpenStack 是一個非常複雜的軟體,你也不會想在家裡或在單個伺服器上運行它。 但是,不管怎樣在你的機器上包含這些服務在一個容器中都是非常有趣的。

conjure-up 是部署這種複雜軟體的一個很好的工具,背後使用 Juju 驅動部署,為每個單獨的服務使用 LXD 容器,最後是實例本身。

它也是少數幾個容器嵌套多層並實際上有意義的情況之一!

額外信息

conjure-up 網站: http://conjure-up.io

Juju 網站: http://www.ubuntu.com/cloud/juju

LXD 的主站在: https://linuxcontainers.org/lxd

LXD 的 GitHub 倉庫: https://github.com/lxc/lxd

LXD 的郵件列表: https://lists.linuxcontainers.org

LXD 的 IRC 頻道: #lxcontainers on irc.freenode.net

如果你不想或者不能在你的機器上安裝 LXD ,你可以在 web 上試試在線版的 LXD。

作者簡介:我是 Stéphane Graber。我是 LXC 和 LXD 項目的領導者,目前在加拿大魁北克蒙特利爾的家所在的 Canonical 有限公司擔任 LXD 的技術主管。

via: https://www.stgraber.org/2016/10/26/lxd-2-0-lxd-and-openstack-1112/

作者:Stéphane Graber 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國