首先如果你打算搭建一套單節點環境的Openstack,那一定是用於測試的,真正的Openstack環境請勿使用單節點環境,這僅僅只是讓你瞭解並初步安裝Openstack來用的環境。
其次,由於Openstack的發展壯大,現在越來越多的公司都開始加入Openstack,包括Redhat,所以漸漸地越來越人性化的安裝命令也被一步步的完善。對新手安裝Openstack來說還是非常有用的。
本文是基於fedora官方的"Getting started with Openstack EPEL"和Redhat官方的"Getting Started Guide"兩篇文章,然後根據自己的網絡狀況進行整合而最終安裝完成的,大家在安裝的時候只要根據自己的實際情況進行一些簡單的調整即可。
之前在摸索Openstack安裝的時候,總是被網絡環節所卡住研究了很長時間,最後發現Openstack的網絡不吭,而是需要選擇一個好的鏡像纔對。稍後我會寫一篇關於在安裝Openstack時候遇到的一些問題以及解決辦法。
一、基礎硬件環境準備
我這裏使用的是一臺R410:
系統:CentOS release 6.3 (Final),安裝採用最簡安裝。
網絡:單網卡(em1),網卡直接配ip:10.199.21.215,並確保這個網卡到外網暢通無阻。
硬盤分區:由於Openstack的Volume需要一塊獨立的分卷,所以我在分區的時候就直接創建了一個100G的Volume作爲vg。這裏注意vg的名字一定要爲"nova-vloumes",通過vgdisplay可以看到:
# vgdisplay |
當一切準備就緒,就可以開始準備搭建Openstack環境了。
二、軟件環境準備
2.1.添加epel源
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm |
由於fedora官方的大力支持,Openstack的最新穩定版已經出現在epel的測試源中,我們更新完epel源之後直接使用yum安裝即可
# yum update # yum --enablerepo=epel-testing install openstack-nova openstack-glance openstack-keystone openstack-quantum openstack-swift\* openstack-dashboard openstack-utils memcached qpid-cpp-server mysql-server avahi dnsmasq-utils |
2.2.更改安全設置 修改/etc/qpidd.conf文件,確保裏面auth=no
# sed -i s/^auth=.*/auth=no/g /etc/qpidd.conf |
關閉selinux
# sed -i s/^SELINUX=.*/SELINUX=disabled/g /etc/selinux/config |
三、Openstack安裝
3.1 開啓各項服務
我們是yum安裝的mysql,所以剛上來要先進行第一次啓動以及一些配置,mysql的配置這裏就不詳述了,包括root密碼什麼的,大家根據自己的環境需要自己給mysql加入密碼。之後啓動即可
# /etc/init.d/mysqld start && chkconfig mysqld on |
爲Openstack準備數據庫
# openstack-db --init --service nova # openstack-db --init --service glance |
開啓提供支持的服務
# service qpidd start && chkconfig qpidd on # service libvirtd start && chkconfig libvirtd on |
開啓glance服務
# for svc in api registry; do service openstack-glance-$svc start; chkconfig openstack-glance-$svc on ; done |
開啓Nova服務
# for svc in api objectstore compute network volume scheduler cert; do service openstack-nova-$svc start ; chkconfig openstack-nova-$svc on ; done |
按理來說,各項服務都應該能正常開啓。我們需要手動檢查各個服務的Log查看是否有報錯:Log在/var/log/nova下。
3.2 Keystone設置
Keystone就是一個密碼庫,管理所有的認證機制,包括各種服務的密碼驗證,以及我們從瀏覽器訪問Web版的控制檯的時候的登陸認證等。可以說它就是Openstack的機要處,必須要有它。然後我們使用各個命令來查詢狀態的時候,都要先進行一個密碼的驗證,而這個驗證有一些明文的參數,這些內容是需要被指定在系統的環境變量中的。所以下面就可以看到我們添加系統環境變量的一步。
首先進行keystone的數據庫設置
# openstack-db --init --service keystone |
然後添加系統環境變量,由於環境變量會因爲我們每次登陸而重置,所以我們把它寫到一個文件裏,這樣我們每次ssh連入系統的時候就可以直接直讀這個文件而獲得我們自定義的這些系統環境變量。這裏OS_PASSWORD對應的密碼可以自己設置,由於Openstack中各項認證的密碼衆多,所以我建議大家都使用統一的密碼。注意裏面的ADMIN_TOKEN這將是所有服務獲取認證的關鍵。
# cat > keystonerc <<EOF export ADMIN_TOKEN=$(openssl rand -hex 10) export OS_USERNAME=admin export OS_PASSWORD=Abcd1234 export OS_TENANT_NAME=admin export OS_AUTH_URL=http://127.0.0.1:5000/v2.0/ EOF |
這樣我們當前目錄下就有一個keystonerc的文件,這裏記錄着這些系統變量。
# . ./keystonerc |
在配置文件中設置管理員的token
# openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token $ADMIN_TOKEN |
開始keystone服務
# service openstack-keystone start && chkconfig openstack-keystone on |
創建默認的Tenants, Users和Roles,注意這裏的SERVICE_PASSWORD,將會成爲這些Users的默認密碼
# ADMIN_PASSWORD=$OS_PASSWORD SERVICE_PASSWORD=Abcd1234 openstack-keystone-sample-data |
創建好後,驗證一下,如果彈出下面的內容,那就是創建完成了。
# keystone user-list +----------------------------------+---------+--------------------+--------+ | id | enabled | email | name | +----------------------------------+---------+--------------------+--------+ | 1581bec2ca864aa7b6a88947dddf7926 | True | [email protected] | glance | | 3170c1630b154997acd9aed847ef3f48 | True | [email protected] | nova | | 8b0d755e74524742966fdaf14a6e77d6 | True | [email protected] | demo | | c2a3f53f014445a88650ba14a264e207 | True | [email protected] | admin | +----------------------------------+---------+--------------------+--------+ |
3.3 配置nova
更改nova配置文件中的相關keystone認證的配置,注意,由於我們是單網卡節點,所以我們一定要制定flat_interface和public_interface爲我們的網卡"em1"
# openstack-config --set /etc/nova/api-paste.ini filter:authtoken admin_tenant_name service # openstack-config --set /etc/nova/api-paste.ini filter:authtoken admin_user nova # openstack-config --set /etc/nova/api-paste.ini filter:authtoken admin_password Abcd1234 # openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone # openstack-config --set /etc/nova/nova.conf DEFAULT flat_interface em1 # openstack-config --set /etc/nova/nova.conf DEFAULT public_interface em1 # for svc in api compute; do service openstack-nova-$svc restart; done |
查看flavor的列表來檢查一下我們配置好的nova是否能通過keystone來進行驗證了
# nova flavor-list +----+-----------+-----------+------+-----------+------+-------+-------------+ | ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | +----+-----------+-----------+------+-----------+------+-------+-------------+ | 1 | m1.tiny | 512 | 0 | 0 | | 1 | 1.0 | | 2 | m1.small | 2048 | 10 | 20 | | 1 | 1.0 | | 3 | m1.medium | 4096 | 10 | 40 | | 2 | 1.0 | | 4 | m1.large | 8192 | 10 | 80 | | 4 | 1.0 | | 5 | m1.xlarge | 16384 | 10 | 160 | | 8 | 1.0 | +----+-----------+-----------+------+-----------+------+-------+-------------+ |
3.4 配置glance
與nova的配置一樣,我們也依然需要先設置glance來能使用keystone進行認證
# openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone # openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone # openstack-config --set /etc/glance/glance-api-paste.ini filter:authtoken admin_tenant_name service # openstack-config --set /etc/glance/glance-api-paste.ini filter:authtoken admin_user glance # openstack-config --set /etc/glance/glance-api-paste.ini filter:authtoken admin_password Abcd1234 # openstack-config --set /etc/glance/glance-registry-paste.ini filter:authtoken admin_tenant_name service # openstack-config --set /etc/glance/glance-registry-paste.ini filter:authtoken admin_user glance # openstack-config --set /etc/glance/glance-registry-paste.ini filter:authtoken admin_password Abcd1234 # service openstack-glance-api restart # service openstack-glance-registry restart |
配置完後,使用查看當前鏡像命令進行驗證:
# glance index |
如果命令正確的話,返回值是0,當前我們沒有添加任何鏡像,所以這個一定是查不出內容的。但是返回值可以告訴我們是否命令執行正常。
3.5 添加網絡
創建一個網絡,這個網絡是到時候由openstack創建出的虛擬機的主網絡,所以我們可以根據自己的需要來創建,並且制定網橋,Openstack的虛擬網絡會在創建第一個實例的時候由openstack自動創建出來,無需我們手動添加。
# nova-manage network create weiyantest 192.168.0.0/24 1 256 --bridge=weiyanbr01 |
3.6 創建一個keypair
keypair實際上就是ssh認證時候的私鑰,我們創建好的實例想進入它還不知道密碼的時候就需要使用它來進入,而如果有keypair,則所有新創建出來的實例都是已它來作爲自己的私鑰的。我們這裏創建一個名字叫mykey的私鑰
# nova keypair-add mykey > oskey.priv # chmod 600 oskey.priv |
設置keypair的加載類型,允許我們使用這一個私鑰進入多個不同的實例
# openstack-config --set /etc/nova/nova.conf DEFAULT libvirt_inject_partition -1 # service openstack-nova-compute restart |
3.7 設置Dashboard
Dashboard實際上就是Openstack的Web控制端,比較好安裝
# yum install openstack-dashboard # service httpd restart && chkconfig httpd on |
之後,我們就可以通過 http://你機器的IP/dashboard 的方式訪問到了,用戶名是admin,密碼是我們在系統環境中指定的密碼
3.8 設置安全策略
這裏的安全策略實際上就是後臺那些創建出來的實例的防火牆~~
# nova secgroup-add-rule default tcp 22 22 0.0.0.0/0 # nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0 # nova secgroup-list # nova secgroup-list-rules default +-------------+-----------+---------+-----------+--------------+ | IP Protocol | From Port | To Port | IP Range | Source Group | +-------------+-----------+---------+-----------+--------------+ | icmp | -1 | -1 | 0.0.0.0/0 | | | tcp | 22 | 22 | 0.0.0.0/0 | | +-------------+-----------+---------+-----------+--------------+ |
創建確保從任意ip訪問能ping通,能ssh進
3.9 設置VNC(可選)
VNC實際上是非必須的,不過既然Openstack有這功能,我們加入它實際上也不費力: 首先修改/etc/nova/nova.conf,在裏面加入下面的內容,確保novncproxy_base_url這裏的ip是你自己openstack的ip
novncproxy_host = 0.0.0.0 novncproxy_port = 6080 novncproxy_base_url=http://10.199.21.215:6080/vnc_auto.html vnc_enabled=true vncserver_listen=127.0.0.1 vncserver_proxyclient_address=127.0.0.1 |
安裝novnc模塊
# yum install openstack-nova-novncproxy openstack-nova-consoleauth # service openstack-nova-novncproxy start # service openstack-nova-consoleauth start # chkconfig openstack-nova-novncproxy on # chkconfig openstack-nova-consoleauth on # service openstack-nova-compute restart |
如果你安裝到這裏,那麼基本上大部分的內容都已經安裝完了,接下來就剩上傳鏡像並創建第一個實例了~!
四、上傳鏡像,開啓實例
關於鏡像的製作,網上有很多教程,不過鏡像製作好後能不能直接使用還是另一回事,至於能否使用,需要根據創建實例的時候它是否報錯來對症下藥。這裏我只說明,使用一個簡單的鏡像來幫助大家先能正確的上傳外加開啓實例。
4.1 上傳鏡像
首先我們把別人已經製作好的鏡像下載下來,這裏使用的是一個12.1版本的Ubuntu的精簡系統(至於其他的系統如CentOS,Windows什麼的,大家可以多找找類似的文章,然後自己製作一個適合自己的鏡像):
# wget http://smoser.brickies.net/ubuntu/ttylinux-uec/ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz # tar zxvf ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz |
根據鏡像的不同,添加到Openstack的方式也不同,這裏使用的是指定內核和分區的添加方式,首先加載內核
# glance add name="tty-ubuntu-kernel" disk_format=aki container_format=aki < ttylinux-uec-amd64-12.1_2.6.35-22_1-vmlinuz |
結束後會出現一個image的ID,注意我們要暫時的記錄一下,後面還要用到 然後添加分區表bootloader的鏡像
# glance add name="tty-ubuntu-ramdisk" disk_format=ari container_format=ari < ttylinux-uec-amd64-12.1_2.6.35-22_1-loader |
之後也會生成一個ID。 最後添加真正的系統鏡像,注意這裏的kernel_id就是我們添加的第一個vmlinuz之後生成的ID,而ramdisk_id則是我們添加第二個bootloader後生成的ID,每個人的環境生成的ID不同,這裏我將我生成的ID填上去,大家安裝的時候一定不要照搬!
# glance add name="tty-ubuntu" disk_format=ami container_format=ami kernel_id=492e2667-ad20-4bf4-9aeb-dc54c4078695 ramdisk_id=ccd7403a-ea56-44e9-b281-d785ea5fe733 < ttylinux-uec-amd64-12.1_2.6.35-22_1.img |
成功添加後,我們使用命令查看一下添加的鏡像:
# glance index ID Name Disk Format Container Format Size ------------------------------------ ------------------------------ -------------------- -------------------- -------------- 069d6ea1-fc3e-4894-8da2-596bc80c86b9 ttyubuntu ami ami 25165824 ccd7403a-ea56-44e9-b281-d785ea5fe733 ttyubuntu-ramdisk ari ari 96629 492e2667-ad20-4bf4-9aeb-dc54c4078695 ttyubuntu-kernel aki aki 4404752 |
4.2 創建/啓動實例
4.2.1 使用命令行創建一個實例:
# nova boot --flavor 2 --key_name mykey --image 069d6ea1-fc3e-4894-8da2-596bc80c86b9 |
這裏,flavor實際上就是選擇這個實例的"型號",可以通過nova flavor-list來查看都有什麼樣的配置;--key_name就是我們的keypair的名字,這裏我們用自己的--mykey,最後--image就是我們選用的image了。 創建完成後我們可以來查看一下實例的狀態
# nova list +--------------------------------------+----------+--------+---------------------+ | ID | Name | Status | Networks | +--------------------------------------+----------+--------+---------------------+ | aa4b06a0-db0f-4d37-bacc-b610266785a5 | linux456 | ACTIVE | demonet=192.168.0.5 | +--------------------------------------+----------+--------+---------------------+ |
需要查看詳細,我們也可以使用
# nova show linux456 +-------------------------------------+----------------------------------------------------------+ | Property | Value | +-------------------------------------+----------------------------------------------------------+ | OS-DCF:diskConfig | MANUAL | | OS-EXT-SRV-ATTR:host | openstack-all.ubisoft.org | | OS-EXT-SRV-ATTR:hypervisor_hostname | None | | OS-EXT-SRV-ATTR:instance_name | instance-00000009 | | OS-EXT-STS:power_state | 1 | | OS-EXT-STS:task_state | None | | OS-EXT-STS:vm_state | active | | accessIPv4 | | | accessIPv6 | | | config_drive | | | created | 2012-10-09T10:23:45Z | | demonet network | 192.168.0.5 | | flavor | m1.small | | hostId | a8b209232974e07c716015d75757d6c07c83b11dbba6012f94fec285 | | id | aa4b06a0-db0f-4d37-bacc-b610266785a5 | | image | ttyubuntu | | key_name | mykey | | metadata | {} | | name | linux456 | | progress | 0 | | status | ACTIVE | | tenant_id | d389ef56457647a6bb8c40818bcf9d3f | | updated | 2012-10-09T10:24:19Z | | user_id | c2a3f53f014445a88650ba14a264e207 | +-------------------------------------+----------------------------------------------------------+ |
當實例徹底啓動完之後,Status爲ACTIVE的話,這時我們就可以使用ssh連接進我們的實例了。
# ssh -i oskey.priv [email protected] The authenticity of host '192.168.0.5 (192.168.0.5)' can't be established. RSA key fingerprint is 95:13:b6:8b:84:79:f5:b7:00:7b:4f:7d:c6:1a:6b:ef. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.0.5' (RSA) to the list of known hosts. Chop wood, carry water. VM># ll total 18 drwx------ 3 root root 1.0K Oct 9 10:24 ./ drwxr-xr-x 18 root root 1.0K Oct 9 10:24 ../ drwx------ 2 root root 1.0K Oct 9 10:24 .ssh/ -rwx------ 1 root root 7.0K Oct 17 2010 g01-static-tests.sh* -rw-r--r-- 1 root root 691 Oct 9 10:24 ssh-host-dss-key.pub -rw-r--r-- 1 root root 315 Oct 9 10:24 ssh-host-rsa-key.pub -rwx------ 1 root root 2.0K Oct 17 2010 ssh_key_gen.sh* |
4.2.2 使用圖形化界面創建實例
如果使用Dashboard提供的Web頁面來創建一個實例的話則相對會簡單不少,於是我們登陸到Web頁面上。注意,這裏建議大家使用Chrome登陸,使用IE登陸可能會有一些不好用……
登陸進Openstack,然後在Images & Snapshots這個頁面中在我們自己上傳的Images上點擊Launch即可
之後彈出創建一個實例的配置頁面:我們只需要填好名字,選好Flavor,設置好Keypair,然後點擊Launch Instance即可
之後,頁面自動跳入Instances界面我們可以看到我們的Instances的加載狀態,沒過1分鐘,我們可以看到已經是Active的狀態了。
此時,我們回到ssh端,就可以使用命令來連接進入了。
單網卡單節點環境安裝Essex的基礎就是這些,稍後我會放出多節點,多網卡,以及手動用源碼包安裝,以及最新的F版本的安裝過程,以及安裝中出現的錯誤解決。 感謝支持,歡迎持續關注"魏延是反賊"的小站 www.weiyan.me