[hermit auto="0" loop="1" unexpand="1" fullheight="0"]collect#:142353202[/hermit]

Linux就該這么學》最新正式版已出版上市,同學們可在線上京東網當當網淘寶網亞馬遜等電商平臺購買。

*亦可就近在新華書店購買*

章節概述:

本章節為讀者介紹了云計算的歷史,闡述云計算的定義,講解Openstack項目的發展歷程與核心優勢,更富興趣的學習云服務技能。

從最基礎開始帶領讀者配置搭建和學習Opentack服務,并完全的演示了如何在Openstack軟件中配置虛擬網絡、創建主機實例模板、創建云主機實例、添加及掛載云硬盤等操作,更加生動深入的走入云時代。

22.1 了解云計算

人類基于千年的物種衍變基礎,在這個世紀終于有了爆發式的科技成果,尤其這二十年內互聯網的發展,更像是一種催化劑,讓原本已經熱鬧的地球更加的沸騰,互聯網經濟泡沫破滅后的科技研發卻變得更加賣力,一次次的突破著傳統研究中對人類腦力、科技最終式的定義,把“來自未來”的產品帶到用戶面前,那么到底互聯網未來會變成什么樣子,人類最終的歸宿會是怎么樣,我們不得而知,但可以肯定的是科技研發一直是由人類需求來驅動的。

眾所周知Google谷歌是一家致力于互聯網搜索、云計算、廣告技術等領域的科技企業,一直在努力為全球無數的用戶提供著大量基于互聯網的產品與服務,而Amazon亞馬遜則是全美國最大的網絡電子商務公司,銷售內容涉及方方面面,業務范圍更是遍布全球,對于這種互聯網巨頭企業自然少不了龐大的基礎設施的支撐,但是傳統的硬件設施一旦投入就要一大筆錢,并且在業務的淡季也要一直的空閑,這樣無疑產生了資源和資金的巨大浪費,所以最初的云計算便是由Google與Amazon分別提出的,核心理念之一就是通過云計算服務降低用戶對資源擁有的成本。

當用戶能夠通過互聯網方便的獲取到計算、存儲等服務時,我們比喻自己使用到了“云計算”,云計算并不能被稱為是一種計算技術,而更像是一種服務模式,云計算服務好像擁有無窮的力量,能夠預測氣候變化、還能夠模擬核彈爆炸,好像只要你需要,“云”就可以為你提供每秒萬億次的計算服務,滿足你的一切需求,每個運維人員心里都有一個對云計算的理解,而最普遍接受的是NIST(美國國家標準與技術研究院)的定義:

云計算是一種按使用量付費的服務模式,這是一種能夠提供可用的、便捷的、按需求的網絡訪問模式,計算共享池能夠快速的為用戶提供網絡、服務器、存儲、應用軟件及其他服務,并且只需要花費很少的管理時間。

云計算IAAS-SAAS-PAAS
NIST還針對于云計算的服務模式提出了3個服務層次:
Iaas:提供給用戶的是云計算基礎設施,包括CPU、內存、存儲、網絡等其他的資源服務,用戶不需要控制存儲與網絡等基礎設施。
Paas:提供給用戶的是云計算中的開發和分發應用的解決方案,用戶能夠部署應用程序,也可以控制相關的托管環境,比如云服務器及操作系統,但用戶不需要接觸到云計算中的基礎設施。
Saas:提供給用戶的是云計算基礎設施上的應用程序,用戶只需要在客戶端界面訪問即可使用到所需資源,而接觸不到云計算的基礎設施。

云計算服務類型

云計算服務類型,原稿
22.2 Openstack項目

Openstack最初是由NASA和Rackspace共同發起的云端計算服務項目,該項目以Apache許可證授權的方式成為了一款開源產品,目的是將多個組件整合后從而實現一個開源的云計算平臺,目前Openstack項目正在被紅帽、IBM、AMD、Intel、戴爾、思科、微軟等超過一百家廠商共同研發,并已經支持了幾乎所有的常見云計算環境,擁有了良好的可擴展性,而且部署搭建Openstack服務也變得十分簡單,目前國內對于云計算的需求也逐漸增加,華勝天成、高德地圖、京東、阿里巴巴、百度、中興、華為等中國企業也加入到了Openstack項目研發當中,Openstack項目也正在隨著全球內得到了眾多廠商的參與支持而快速成熟。

openstack

Open是開放,Stack則是堆砌之意,合起來就是將眾多的功能服務堆積起來的集合,讓人們通過Openstack云計算項目,能夠將諸如計算能力、存儲、網絡和軟件等資源抽象成服務,以便讓用戶可以通過互聯網遠程來享用,付費的形式也變得因需而定,調整方便,擁有極強的虛擬可擴展性,是公共和私有云的建設與管理軟件中的優秀開源項目。

Openstack作為一個云平臺的管理項目,其功能組件覆蓋了網絡、虛擬化、操作系統、服務器等多個方面,每個功能組件交由不同的項目委員會來研發和管理,目前核心的項目包括有:
功能 項目名稱 描述
計算服務 Nova 負責虛擬機的創建、開關機、掛起、遷移、調整CPU、內存等規則。
對象存儲 Swift 用于在大規模可擴展系統中通過內置的冗余及高容差機制實現對象存儲的系統。
鏡像服務 Glance 用于創建、上傳、刪除、編輯鏡像信息的虛擬機鏡像查找及索引系統。
身份服務 Keystone 為其他的功能服務提供身份驗證、服務規則及服務令牌的功能。
網絡管理 Neutron 用于為其他服務提供云計算的網絡虛擬化技術,可自定義各種網絡規則,支持主流的網絡廠商技術。
塊存儲 Cinder 為虛擬機實例提供穩定的數據塊存儲的創建、刪除、掛載、卸載、管理等服務。
圖形界面 Horizon 為用戶提供簡單易用的Web管理界面,降低用戶對功能服務的操作難度。
測量服務 Ceilometer 收集項目內所有的事件,用于監控、計費或為其他服務提供數據支撐。
部署編排 Heat 實現通過模板方式進行自動化的資源環境部署服務。
數據庫服務 Trove 為用戶提供可擴展的關系或非關系性數據庫服務。

Openstack項目的版本按照ABCDEFG……的順序發布,每6個月更新一次,Openstack版本發布歷史:
版本名稱 發布時間
Liberty 2015年10月15日
Kilo 2015年4月30日
Juno 2014年10月16日
Icehouse 2014年4月17日
Havana 2013年10月17日
Grizzly 2014年4月4日
Folsom 2012年9月27日
Essex 2012年4月5日
Diablo 2011年9月22日
Cactus 2011年4月15日
Bexar 2011年2月3日
Austin 2010年10月21日

開源社區成員和Linux技術愛好者可以選擇使用Openstack RDO版本,RDO版本允許用戶以免費授權的方式來獲取openstack軟件的使用資格,但是從安裝開始便較為復雜(需要自行解決諸多的軟件依賴關系),而且沒有官方給予的保障及售后服務,請讀者們仔細的按實驗步驟安裝,就一定沒有問題的~
22.3 服務模塊組件詳解

Openstack是一個云計算的平臺,也像是部署云操作系統的工具集,可以通過調取不同的組件來構建虛擬計算及云計算服務,比較重要的包括有計算(compute)、對象存儲(Objectstorage)、認證(Identity)、儀表板(Dashboard)、塊存儲(Block Storage)、網絡(Network)和鏡像服務(image service),Openstack服務組件協同工作拓撲:

Openstack組建功能

Nova提供計算服務

Nova可以稱作是Openstack云計算平臺中最核心的服務組件了,它作為計算的彈性控制器來管理虛擬化、網絡及存儲等資源,為Openstack的云主機實例提供可靠的支撐,其功能由不同的API來提供。

Nova-api(API服務器):

API服務器用于提供云計算設施與外界交互的接口,也是用戶對云計算設施進行管理的唯一通道,用戶通過網頁來調用各種API接口,再由API服務器通過消息隊列把請求傳遞至目標設置進行處理。

Rabbit MQ Server(消息隊列):

Openstack在遵循AMQP高級消息隊列協議的基礎之上采用了消息隊列進行通信,異步通信的方式更是能夠減少了用戶的等待時間,讓整個平臺都變得更有效率。

Nova-compute(運算工作站):

運算工作站通過消息隊列接收用戶的請求并執行,從而負責對主機實例的整個生命周期中的各種操作進行處理,一般會架設多臺計算工作站,根據調度算法來按照實例在任意一個計算工作站上部署。

Nova-network(網絡控制器):

用于處理主機的網絡配置,例如分配IP地址,配置項目VLAN,設定安全群組及為計算節點配置網絡。

Nova-Volume(卷工作站):

基于LVM的實例卷能夠為一個主機實例創建、刪除、附加卷或從主機中分離卷。

Nova-scheduler(調度器)

調度器以名為"nova-schedule"的守護進程方式進行運行,根據對比CPU架構及負載、內存占用率、子節點的遠近等因素,使用調度算法從可用的資源池中選擇運算服務器。

Glance提供鏡像服務

Openstack鏡像服務是一套用于主機實例來發現、注冊、索引的系統,功能相比較也很簡單,具有基于組件的架構、高可用、容錯性、開發標準等優良特性,虛擬機的鏡像可以被放置到多種存儲上。

Swift提供存儲服務

Swift模塊是一種分布式、持續虛擬對象存儲,具有跨節點百級對象的存儲能力,并且支持內建冗余和失效備援的功能,同時還能夠處理數據歸檔和媒體流,對于超大數據和多對象數量非常高效。
Swfit代理服務器:

用于通過Swift-API與代理服務器進行交互,代理服務器能夠檢查實例位置并路由相關的請求,當實例失效或被轉移后則自動故障切換,減少重復路由請求。

Swift對象服務器:

用于處理處理本地存儲中對象數據的存儲、索引和刪除操作。

Swift容器服務器:

用于統計容器內包含的對象數量及容量存儲空間使用率,默認對象列表將存儲為SQLite或者MYSQL文件。

Swift帳戶服務器:

與容器服務器類似,列出容器中的對象。

Ring索引環:

用戶記錄著Swift中物理存儲對象位置的信息,作為真實物理存儲位置的虛擬映射,能夠查找及定位不同集群的實體真實物理位置的索引服務,上述的代理、對象、容器、帳戶都擁有自己的Ring索引環。

Keystone提供認證服務
?Keystone模塊依賴于自身的Identity API系統基于判斷動作消息來源者請求的合法性來為Openstack中Swift、Glance、Nove等各個組件提供認證和訪問策略服務,

Horizon提供管理服務

Horizon是一個用于管理、控制Openstack云計算平臺服務器的Web控制面板,用戶能夠在網頁中管理主機實例、鏡像、創建密鑰對、管理實例卷、操作Swift容器等操作。

Quantum提供網絡服務

重要的網絡管理組件。

Cinder提供存儲管理服務

用于管理主機實例中的存儲資源。

Heat提供軟件部署服務

用于在主機實例創建后簡化配置操作。

 

22.4 安裝Openstack軟件

此刻我寫這段話的時候,Openstack Liberty版本剛剛發布幾周,企業中的生產環境會以穩定性為核心標準,所以還需要較長一段時間才能接受并正式使用這個新版本的產品,為了能夠讓讀者學完即用,本片內容則會以Juno版本來做實驗,為了能夠讓云計算平臺發揮到最好的性能,我們需要開啟虛擬機的虛擬化功能內存至少為4GB(推薦8GB以上)并添加額外的一塊硬盤(20G以上)

主機名稱 IP地址/子網 DNS地址
openstack.linuxprobe.com 192.168.10.10/24 192.168.10.10

虛擬機的參數

設置服務器的主機名稱:

[[email protected] ~]# vim /etc/hostname
openstack.linuxprobe.com

使用vim編輯器寫入主機名(域名)與IP地址的映射文件:

[[email protected] ~]# vim /etc/hosts
127.0.0.1      localhost localhost.localdomain localhost4 localhost4.localdomain4
::1            localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.10  openstack.linuxprobe.com openstack

將服務器網卡IP地址配置成"192.168.10.10"后測試主機連通狀態:

[[email protected] ~]# ping $HOSTNAME
PING openstack.linuxprobe.com (192.168.10.10) 56(84) bytes of data.
64 bytes from openstack.linuxprobe.com (192.168.10.10): icmp_seq=1 ttl=64 time=0.099 ms
64 bytes from openstack.linuxprobe.com (192.168.10.10): icmp_seq=2 ttl=64 time=0.107 ms
64 bytes from openstack.linuxprobe.com (192.168.10.10): icmp_seq=3 ttl=64 time=0.070 ms
64 bytes from openstack.linuxprobe.com (192.168.10.10): icmp_seq=4 ttl=64 time=0.075 ms
^C
--- openstack.linuxprobe.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.070/0.087/0.107/0.019 ms

創建系統鏡像的掛載目錄:

[[email protected] ~]# mkdir -p /media/cdrom

寫入鏡像與掛載點的信息:

[[email protected] ~]# vim /etc/fstab
# HEADER: This file was autogenerated at 2016-01-28 00:57:19 +0800
# HEADER: by puppet.  While it can still be managed manually, it
# HEADER: is definitely not recommended.

#
# /etc/fstab
# Created by anaconda on Wed Jan 27 15:24:00 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root   /       xfs     defaults        1       1
UUID=c738dff6-b025-4333-9673-61b10eaf2268       /boot   xfs     defaults        1       2
/dev/mapper/rhel-swap   swap    swap    defaults        0       0
/dev/cdrom      /media/cdrom    iso9660 defaults        0       0

掛載系統鏡像設備:

[[email protected] ~]# mount -a
mount: /dev/sr0 is write-protected, mounting read-only

寫入基本的yum倉庫配置信息:

[[email protected] ~]# vim /etc/yum.repos.d/rhel.repo
[base]
name=base
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0

您可以點此下載EPEL倉庫源以及Openstack-juno的軟件安裝包,并上傳至服務器的/media目錄中:

軟件資源下載地址:http://www.52437949.com/tools/

Openstack Juno——云計算平臺軟件

Openstack云計算軟件能夠將諸如計算能力、存儲、網絡和軟件等資源抽象成服務,以便讓用戶可以通過互聯網遠程來享用,付費的形式也變得因需而定,擁有極強的虛擬可擴展性。

EPEL——系統的軟件源倉庫

EPEL是企業版額外的資源包,提供了默認不提供的軟件安裝包

Cirros——精簡的操作系統

Cirros是一款極為精簡的操作系統,一般用于灌裝到Openstack服務平臺中。

[[email protected] ~]# cd /media
[[email protected] media]# ls
cdrom epel.tar.bz2 openstack-juno.tar.bz2

分別解壓文件:

[[email protected] media]# tar xjf epel.tar.bz2
[[email protected] media]# tar xjf openstack-juno.tar.bz2

分別寫入EPEL與openstack的yum倉庫源信息:

[[email protected] media]# vim /etc/yum.repos.d/openstack.repo
[openstack]
name=openstack
baseurl=file:///media/openstack-juno
enabled=1
gpgcheck=0
[[email protected] media]# vim /etc/yum.repos.d/epel.repo
[epel]
name=epel
baseurl=file:///media/EPEL
enabled=1
gpgcheck=0

將/dev/sdb創建成邏輯卷,卷組名稱為cinder-volumes:

[[email protected] media]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created
[[email protected] media]# vgcreate cinder-volumes /dev/sdb
Volume group "cinder-volumes" successfully created

重啟系統:

[[email protected] media]# reboot

安裝Openstack的應答文件:

[[email protected] ~]# yum install openstack-packstack
………………省略部分安裝過程………………
Installing:
openstack-packstack noarch 2014.2-0.4.dev1266.g63d9c50.el7.centos openstack 210 k
Installing for dependencies:
libyaml x86_64 0.1.4-10.el7 base 55 k
openstack-packstack-puppet noarch 2014.2-0.4.dev1266.g63d9c50.el7.centos openstack 43 k
openstack-puppet-modules noarch 2014.2.1-0.5.el7.centos openstack 1.3 M
perl x86_64 4:5.16.3-283.el7 base 8.0 M
perl-Carp noarch 1.26-244.el7 base 19 k
perl-Encode x86_64 2.51-7.el7 base 1.5 M
perl-Exporter noarch 5.68-3.el7 base 28 k
perl-File-Path noarch 2.09-2.el7 base 27 k
perl-File-Temp noarch 0.23.01-3.el7 base 56 k
perl-Filter x86_64 1.49-3.el7 base 76 k
perl-Getopt-Long noarch 2.40-2.el7 base 56 k
perl-HTTP-Tiny noarch 0.033-3.el7 base 38 k
perl-PathTools x86_64 3.40-5.el7 base 83 k
perl-Pod-Escapes noarch 1:1.04-283.el7 base 50 k
perl-Pod-Perldoc noarch 3.20-4.el7 base 87 k
perl-Pod-Simple noarch 1:3.28-4.el7 base 216 k
perl-Pod-Usage noarch 1.63-3.el7 base 27 k
perl-Scalar-List-Utils x86_64 1.27-248.el7 base 36 k
perl-Socket x86_64 2.010-3.el7 base 49 k
perl-Storable x86_64 2.45-3.el7 base 77 k
perl-Text-ParseWords noarch 3.29-4.el7 base 14 k
perl-Time-Local noarch 1.2300-2.el7 base 24 k
perl-constant noarch 1.27-2.el7 base 19 k
perl-libs x86_64 4:5.16.3-283.el7 base 686 k
perl-macros x86_64 4:5.16.3-283.el7 base 42 k
perl-parent noarch 1:0.225-244.el7 base 12 k
perl-podlators noarch 2.5.1-3.el7 base 112 k
perl-threads x86_64 1.87-4.el7 base 49 k
perl-threads-shared x86_64 1.43-6.el7 base 39 k
python-netaddr noarch 0.7.12-1.el7.centos openstack 1.3 M
ruby x86_64 2.0.0.353-20.el7 base 66 k
ruby-irb noarch 2.0.0.353-20.el7 base 87 k
ruby-libs x86_64 2.0.0.353-20.el7 base 2.8 M
rubygem-bigdecimal x86_64 1.2.0-20.el7 base 78 k
rubygem-io-console x86_64 0.4.2-20.el7 base 49 k
rubygem-json x86_64 1.7.7-20.el7 base 74 k
rubygem-psych x86_64 2.0.0-20.el7 base 76 k
rubygem-rdoc noarch 4.0.0-20.el7 base 317 k
rubygems noarch 2.0.14-20.el7 base 211 k
………………省略部分安裝過程………………
Complete!

安裝openstack服務程序:

[[email protected] ~]# packstack --allinone --provision-demo=n --nagios-install=n
Welcome to Installer setup utility
Packstack changed given value to required value /root/.ssh/id_rsa.pub
Installing:
Clean Up [ DONE ]
Setting up ssh keys [ DONE ]
Discovering hosts' details [ DONE ]
Adding pre install manifest entries [ DONE ]
Preparing servers [ DONE ]
Adding AMQP manifest entries [ DONE ]
Adding MySQL manifest entries [ DONE ]
Adding Keystone manifest entries [ DONE ]
Adding Glance Keystone manifest entries [ DONE ]
Adding Glance manifest entries [ DONE ]
Adding Cinder Keystone manifest entries [ DONE ]
Adding Cinder manifest entries [ DONE ]
Checking if the Cinder server has a cinder-volumes vg[ DONE ]
Adding Nova API manifest entries [ DONE ]
Adding Nova Keystone manifest entries [ DONE ]
Adding Nova Cert manifest entries [ DONE ]
Adding Nova Conductor manifest entries [ DONE ]
Creating ssh keys for Nova migration [ DONE ]
Gathering ssh host keys for Nova migration [ DONE ]
Adding Nova Compute manifest entries [ DONE ]
Adding Nova Scheduler manifest entries [ DONE ]
Adding Nova VNC Proxy manifest entries [ DONE ]
Adding Openstack Network-related Nova manifest entries[ DONE ]
Adding Nova Common manifest entries [ DONE ]
Adding Neutron API manifest entries [ DONE ]
Adding Neutron Keystone manifest entries [ DONE ]
Adding Neutron L3 manifest entries [ DONE ]
Adding Neutron L2 Agent manifest entries [ DONE ]
Adding Neutron DHCP Agent manifest entries [ DONE ]
Adding Neutron LBaaS Agent manifest entries [ DONE ]
Adding Neutron Metering Agent manifest entries [ DONE ]
Adding Neutron Metadata Agent manifest entries [ DONE ]
Checking if NetworkManager is enabled and running [ DONE ]
Adding OpenStack Client manifest entries [ DONE ]
Adding Horizon manifest entries [ DONE ]
Adding Swift Keystone manifest entries [ DONE ]
Adding Swift builder manifest entries [ DONE ]
Adding Swift proxy manifest entries [ DONE ]
Adding Swift storage manifest entries [ DONE ]
Adding Swift common manifest entries [ DONE ]
Adding MongoDB manifest entries [ DONE ]
Adding Ceilometer manifest entries [ DONE ]
Adding Ceilometer Keystone manifest entries [ DONE ]
Adding post install manifest entries [ DONE ]
Installing Dependencies [ DONE ]
Copying Puppet modules and manifests [ DONE ]
Applying 192.168.10.10_prescript.pp
192.168.10.10_prescript.pp: [ DONE ]
Applying 192.168.10.10_amqp.pp
Applying 192.168.10.10_mysql.pp
192.168.10.10_amqp.pp: [ DONE ]
192.168.10.10_mysql.pp: [ DONE ]
Applying 192.168.10.10_keystone.pp
Applying 192.168.10.10_glance.pp
Applying 192.168.10.10_cinder.pp
192.168.10.10_keystone.pp: [ DONE ]
192.168.10.10_cinder.pp: [ DONE ]
192.168.10.10_glance.pp: [ DONE ]
Applying 192.168.10.10_api_nova.pp
192.168.10.10_api_nova.pp: [ DONE ]
Applying 192.168.10.10_nova.pp
192.168.10.10_nova.pp: [ DONE ]
Applying 192.168.10.10_neutron.pp
192.168.10.10_neutron.pp: [ DONE ]
Applying 192.168.10.10_neutron_fwaas.pp
Applying 192.168.10.10_osclient.pp
Applying 192.168.10.10_horizon.pp
192.168.10.10_neutron_fwaas.pp: [ DONE ]
192.168.10.10_osclient.pp: [ DONE ]
192.168.10.10_horizon.pp: [ DONE ]
Applying 192.168.10.10_ring_swift.pp
192.168.10.10_ring_swift.pp: [ DONE ]
Applying 192.168.10.10_swift.pp
192.168.10.10_swift.pp: [ DONE ]
Applying 192.168.10.10_mongodb.pp
192.168.10.10_mongodb.pp: [ DONE ]
Applying 192.168.10.10_ceilometer.pp
192.168.10.10_ceilometer.pp: [ DONE ]
Applying 192.168.10.10_postscript.pp
192.168.10.10_postscript.pp: [ DONE ]
Applying Puppet manifests [ DONE ]
Finalizing [ DONE ]

**** Installation completed successfully ******
Additional information:
* A new answerfile was created in: /root/packstack-answers-20160128-004334.txt
* Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
* Did not create a cinder volume group, one already existed
* File /root/keystonerc_admin has been created on OpenStack client host 192.168.10.10. To use the command line tools you need to source the file.
* To access the OpenStack Dashboard browse to http://192.168.10.10/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
* Because of the kernel update the host 192.168.10.10 requires reboot.
* The installation log file is available at: /var/tmp/packstack/20160128-004334-tNBVhA/openstack-setup.log
* The generated manifests are available at: /var/tmp/packstack/20160128-004334-tNBVhA/manifests

創建云平臺的網卡配置文件:

[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-br-ex
DEVICE=br-ex
IPADDR=192.168.10.10
NETMASK=255.255.255.0
BOOTPROTO=static
DNS1=192.168.10.1
GATEWAY=192.168.10.1
BROADCAST=192.168.10.254
NM_CONTROLLED=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
ONBOOT=yes
DEVICETYPE=ovs
TYPE="OVSIntPort"
OVS_BRIDGE=br-ex

修改網卡參數信息為:

[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777728 
DEVICE="eno16777728"
ONBOOT=yes
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
NM_CONTROLLED=no
IPV6INIT=no

將網卡設備添加到OVS網絡中:

[[email protected] ~]# ovs-vsctl add-port br-ex eno16777728 
[[email protected] ~]# ovs-vsctl show
55501ff1-856c-46f1-8a00-5c61e48bb64d
    Bridge br-ex
        Port br-ex
            Interface br-ex
                type: internal
        Port "eno16777728"
            Interface "eno16777728"
    Bridge br-int
        fail_mode: secure
        Port br-int
            Interface br-int
                type: internal
        Port patch-tun
            Interface patch-tun
                type: patch
                options: {peer=patch-int}
    Bridge br-tun
        Port patch-int
            Interface patch-int
                type: patch
                options: {peer=patch-tun}
        Port br-tun
            Interface br-tun
                type: internal
    ovs_version: "2.1.3"

重啟系統讓網絡設備同步:

[[email protected] ~]# reboot

執行身份認證腳本:

[root@openstack ~]# source keystonerc_admin
[root@openstack ~(keystone_admin)]# openstack-status
== Nova services ==
openstack-nova-api: active
openstack-nova-cert: active
openstack-nova-compute: active
openstack-nova-network: inactive (disabled on boot)
openstack-nova-scheduler: active
openstack-nova-volume: inactive (disabled on boot)
openstack-nova-conductor: active
== Glance services ==
openstack-glance-api: active
openstack-glance-registry: active
== Keystone service ==
openstack-keystone: active
== Horizon service ==
openstack-dashboard: active
== neutron services ==
neutron-server: active
neutron-dhcp-agent: active
neutron-l3-agent: active
neutron-metadata-agent: active
neutron-lbaas-agent: inactive (disabled on boot)
neutron-openvswitch-agent: active
neutron-linuxbridge-agent: inactive (disabled on boot)
neutron-ryu-agent: inactive (disabled on boot)
neutron-nec-agent: inactive (disabled on boot)
neutron-mlnx-agent: inactive (disabled on boot)
== Swift services ==
openstack-swift-proxy: active
openstack-swift-account: active
openstack-swift-container: active
openstack-swift-object: active
== Cinder services ==
openstack-cinder-api: active
openstack-cinder-scheduler: active
openstack-cinder-volume: active
openstack-cinder-backup: active
== Ceilometer services ==
openstack-ceilometer-api: active
openstack-ceilometer-central: active
openstack-ceilometer-compute: active
openstack-ceilometer-collector: active
openstack-ceilometer-alarm-notifier: active
openstack-ceilometer-alarm-evaluator: active
== Support services ==
libvirtd: active
openvswitch: active
dbus: active
tgtd: inactive (disabled on boot)
rabbitmq-server: active
memcached: active
== Keystone users ==
+----------------------------------+------------+---------+----------------------+
| id | name | enabled | email |
+----------------------------------+------------+---------+----------------------+
| 7f1f43a0002e4fb9a04b9b1480294e08 ? | admin ? ? ? ?| True | test@test.com ? ? ? ? ? ? |
| c7570a0d3e264f0191d8108359100cdd ?| ceilometer | True | ceilometer@localhost |
| 9d3d1b46599341638771c33bcebe17fc ? ?| cinder ? ? ? ? | True | cinder@localhost ? ? ? ?|
| 52a803edcc4e479ea147e69ca2966f46 ? ?| glance ? ? ? ? | True | glance@localhost ? ? ? ?|
| 8b0bcd19b11f49059bc100d260f39d50 ?| neutron ? ? ?| True | neutron@localhost ? ? |
| 953e01b228ef480db551dd05d43eb6d1 | nova ? ? ? ? ? ?| True | nova@localhost ? ? ? ? ?|
| 16ced2f73c034e58a0951e46f22eddc8 ? ?| swift ? ? ? ? ? ?| True | swift@localhost ? ? ? ? ?|
+----------------------------------+------------+---------+----------------------+
== Glance images ==
+----+------+-------------+------------------+------+--------+
| ID | Name | Disk Format | Container Format | Size | Status |
+----+------+-------------+------------------+------+--------+
+----+------+-------------+------------------+------+--------+
== Nova managed services ==
+----+------------------+--------------------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
+----+------------------+--------------------------+----------+---------+-------+----------------------------+-----------------+
| 1 | nova-consoleauth ? | openstack.linuxprobe.com | internal | enabled | up | 2016-01-29T04:36:20.000000 | - |
| 2 | nova-scheduler ? ? ?| openstack.linuxprobe.com | internal | enabled | up | 2016-01-29T04:36:20.000000 | - |
| 3 | nova-conductor ? ? | openstack.linuxprobe.com | internal | enabled ?| up | 2016-01-29T04:36:20.000000 | - |
| 4 | nova-compute ? ? ? | openstack.linuxprobe.com | nova ? ? ?| enabled ?| up | 2016-01-29T04:36:16.000000 | - |
| 5 | nova-cert ? ? ? ? ? | openstack.linuxprobe.com | internal | enabled ?| up | 2016-01-29T04:36:20.000000 | - |
+----+------------------+--------------------------+----------+---------+-------+----------------------------+-----------------+
== Nova networks ==
+----+-------+------+
| ID | Label | Cidr |
+----+-------+------+
+----+-------+------+
== Nova instance flavors ==
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 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 |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
== Nova instances ==
+----+------+--------+------------+-------------+----------+
| ID | Name | Status | Task State | Power State | Networks |
+----+------+--------+------------+-------------+----------+
+----+------+--------+------------+-------------+----------+

打開瀏覽器進入http://192.168.10.10/dashboard:
Openstack登陸頁面
查看登錄的帳號密碼:

[[email protected] ~]# cat keystonerc_admin 
export OS_USERNAME=admin
export OS_TENANT_NAME=admin
export OS_PASSWORD=14ad1e723132440c
export OS_AUTH_URL=http://192.168.10.10:5000/v2.0/
export PS1='[\[email protected]\h \W(keystone_admin)]\$ '

輸入帳號密碼后進入到Openstack管理中心:

登陸Openstack管理平臺

22.5 使用Openstack服務
22.5.1 配置虛擬網絡

要想讓云平臺中的虛擬實例機能夠互相通信,并且讓外部的用戶訪問到里面的數據,我們首先就必需配置好云平臺中的網絡環境。

Openstack創建網絡:
Openstack創建網絡
編輯網絡配置:
Openstack編輯網絡配置
點擊創建子網:
創建子網
創建子網信息:
創建子網信息
填寫子網詳情(DHCP地址池中的IP地址用逗號間隔):
填寫子網詳情
子網詳情:
子網詳情
創建私有網絡:
創建私有網絡
創建網絡:
創建網絡
填寫網絡信息:
填寫網絡信息
設置網絡詳情:
設置網絡詳情
查看網絡信息:
Openstack網絡信息
添加路由信息:
添加路由信息
填寫路由名稱:

填寫路由名稱
設置路由的網關信息:
設置路由的網關信息
設置網關:
設置網關
在網絡拓撲中添加接口:
在網絡拓撲中添加接口
添加接口信息:
添加接口信息
路由的接口信息(需要等待幾秒鐘后,內部接口的狀態會變成ACTIVE):

路由的接口信息

22.5.2 創建云主機類型

我們可以預先設置多個云主機類型的模板,這樣可以靈活的滿足用戶的需求,先來創建云主機類型:
創建云主機類型
填寫云主機的基本信息:
填寫云主機的信息
創建上傳鏡像:
創建上傳鏡像

Cirros是一款極為精簡的操作系統,非常小巧精簡的Linux系統鏡像,一般會在搭建Openstack后測試云計算平臺可用性的系統,特點是體積小巧,速度極快,那么來上傳Cirros系統鏡像吧:

上傳系統鏡像文件
查看已上傳的鏡像(Cirros系統上傳速度超級快吧!):

查看已上傳的系統鏡像

22.5.3 創建主機實例

創建云主機實例:
創建實例主機
填寫云主機的詳情(云主機類型可以選擇前面自定義創建的):
第1步:填寫云主機的詳情
查看云主機的訪問與安全規則:
第2步:查看云主機的訪問與安全規則
將私有網絡網卡添加到云主機:
第3步:將私有網絡網卡添加到云主機
查看安裝后的腳本數據:
第4步:查看安裝后的腳本數據
查看磁盤的分區方式:
第5步:查看磁盤的分區方式
主機實例的孵化過程大約需要10-30秒,然后查看已經運行的實例:

查看已經運行的實例查看實例主機的網絡拓撲(當前僅在內網中):

查看網絡拓撲

為實例主機綁定浮動IP地址:

為實例主機綁定浮動IP

為主機實例添加浮動IP

為主機實例添加浮動IP

選擇綁定的IP地址:

選擇綁定的IP地址

將主機實例與IP地址關聯:

將主機與IP地址關聯

此時再查看實例的信息,IP地址段就多了一個數據值(192.168.10.51):

查看實例的信息

嘗試從外部ping云主機實例(結果是失敗的):

[[email protected] ~]# ping 192.168.10.51
PING 192.168.10.51 (192.168.10.51) 56(84) bytes of data.
From 192.168.10.10 icmp_seq=1 Destination Host Unreachable
From 192.168.10.10 icmp_seq=2 Destination Host Unreachable
From 192.168.10.10 icmp_seq=3 Destination Host Unreachable
From 192.168.10.10 icmp_seq=4 Destination Host Unreachable
^C
--- 192.168.10.51 ping statistics ---
6 packets transmitted, 0 received, +4 errors, 100% packet loss, time 5001ms
pipe 4

原因是我們沒有設置安全組規則那,需要讓外部流量允許進入到主機實例中:

創建安全策略組

填寫策略組的名稱與描述:

填寫策略組的信息

管理安全組的規則:

管理安全組的規則

添加安全規則:

添加安全規則

允許所有的ICMP數據包流入(當然根據工作有時還需要選擇TCP或UDP協議,此時僅為驗證網絡連通性):

允許所有的icmp數據包流入

編輯實例的安全策略組:

編輯實例的安全策略組

將新建的安全組策略作用到主機實例上:

添加新的安全策略組

再次嘗試從外部ping虛擬實例主機:

[[email protected] ~]# ping 192.168.10.51
PING 192.168.10.51 (192.168.10.51) 56(84) bytes of data.
64 bytes from 192.168.10.51: icmp_seq=1 ttl=63 time=2.47 ms
64 bytes from 192.168.10.51: icmp_seq=2 ttl=63 time=0.764 ms
64 bytes from 192.168.10.51: icmp_seq=3 ttl=63 time=1.44 ms
64 bytes from 192.168.10.51: icmp_seq=4 ttl=63 time=1.30 ms
^C
--- 192.168.10.51 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 0.764/1.497/2.479/0.622 ms
22.5.5 添加云硬盤

云計算平臺的特性就是要能夠靈活的,彈性的調整主機實例使用的資源,我們可以來為主機實例多掛載一塊云硬盤,首先來創建云硬盤設備:

創建云硬盤設備

填寫云硬盤的信息(以10GB為例):

填寫云硬盤的信息
編輯掛載設備到主機云實例:
編輯掛載設備到主機云實例
將云硬盤掛載到主機實例中:
將云硬盤掛載到主機實例中
查看云主機實例中的硬盤信息:
查看云主機實例中的硬盤信息

22.6 控制云主機實例

經過上面的一系列配置,我們此時已經創建出了一臺能夠交付給用戶使用的云主機實例了,查看下云平臺的信息:
查看云平臺的使用信息
編輯安全策略,允許TCP和UDP協議的數據流入到云主機實例中:
編輯安全策略
分別添加TCP和UDP的允許規則:
分別添加TCP和UDP的允許規則
成功登錄到云主機實例中(默認帳號為"cirros",密碼為:"cubswin:)"):

[[email protected] ~]# ssh [email protected]
The authenticity of host '192.168.10.52 (192.168.10.52)' can't be established.
RSA key fingerprint is 12:ef:c7:fb:57:70:fc:60:88:8c:96:13:38:b1:f6:65.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.10.52' (RSA) to the list of known hosts.
[email protected]'s password: 
$

查看云主機實例的網絡情況:

$ ip a 
1: lo:  mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether fa:16:3e:4f:1c:97 brd ff:ff:ff:ff:ff:ff
    inet 10.10.10.51/24 brd 10.10.10.255 scope global eth0
    inet6 fe80::f816:3eff:fe4f:1c97/64 scope link 
       valid_lft forever preferred_lft forever

掛載剛剛創建的云硬盤設備:

$ df -h
Filesystem                Size      Used Available Use% Mounted on
/dev                    494.3M         0    494.3M   0% /dev
/dev/vda1                23.2M     18.0M      4.0M  82% /
tmpfs                   497.8M         0    497.8M   0% /dev/shm
tmpfs                   200.0K     68.0K    132.0K  34% /run
$ mkdir disk
$ sudo mkfs.ext4 /dev/vdb
mke2fs 1.42.2 (27-Mar-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done 
$ sudo mount /dev/vdb disk/
$ df -h
Filesystem                Size      Used Available Use% Mounted on
/dev                    494.3M         0    494.3M   0% /dev
/dev/vda1                23.2M     18.0M      4.0M  82% /
tmpfs                   497.8M         0    497.8M   0% /dev/shm
tmpfs                   200.0K     68.0K    132.0K  34% /run
/dev/vdb                  9.8G    150.5M      9.2G   2% /home/cirros/disk

本章節的復習作業(答案就在問題的下一行哦,用鼠標選中即可看到的~)

1:谷歌和亞馬遜提供的云計算是最好的?

答案:云計算是一種服務模式,新的供需方式,更沒有絕對的衡量值。

2:Openstack項目是紅帽軟件公司的軟件之一。

答案:錯錯錯,紅帽是該開源項目的主要貢獻廠商之一。

3:創建100臺配置相關的主機實例應如何操作?

答案:創建主機實例模板后批量生成,而不是一次生成一臺。

4:Cirros系統的優勢與作用?

答案:系統的體積小,效率高,用于安裝openstack后灌裝系統測試。

5:如果系統的密碼忘記了,該怎么辦?

答案:可以讓用戶在面板中重置,也可以進入控制臺重置。

本文原創地址:http://www.52437949.com/chapter-22.html編輯:劉遄,審核員:暫無