目錄
歷史與願景
關於OpenStack
OpenStack項目組件介紹
快速開始命令集
OpenStack使用案例
部署模型…以及更多精彩內容!
歷史與願景
在今天,OpenStack是領袖級的私有雲解決方案,以大量基礎設施供應商,多個發布版本以及多種可選的部署模式來滿足你的需求。最令人感興趣的是這個成熟的項目的代碼庫是完全開源的。這意味著會有更多的開發者以及運維人員正在一個超越傳統軟體開發與支持的模式下持續學習、優化、修復軟體。
OpenStack是由Rackspace 和NASA在2010年攜手共同創建。自項目成立以來,它成長為可以支持如沃爾瑪,eBay以及Comcast等客戶,並且收到了多元的技術公司、學術機構的代碼貢獻,其中包括Intel與MIT。
OpenStack社區是全球增長最快的開源項目組織之一,並擁有超過12000家公司成員以及53000位個人貢獻者。它由OpenStack基金會管理,OpenStack基金會致力於提升企業或組織開發、發布以及採用OpenStack的水平。據451-Research統計,2016年企業或組織使用OpenStack的收益是1.7億美元,預期收入將在2017年增長至2.4億美元並在2018年增長至3.3億美元。
採用趨勢
據SUSE提供的依據動態市場觀察的另一項調查結果顯示,96%的企業能夠認識到採用開源私有雲可以取得市場優勢。尤其是在採用者可以在開放平台上識別成本、運營效率、標準化程度以及他們在採用OpenStack的時候不會擔憂被供應商鎖定成為他們做選擇時的最大的影響因素。最後一個因素值得進一步闡述:
OpenStack提供了一個選擇的集合,包括KVM和VMware ESX等虛擬化技術,基於開源技術的網路架構的多個選項,包括科,Juniper,VMware以及其他項目的架構,還有來自NetApp,EMC,Dell以及其他眾多公司提供的存儲技術架構選項。各種規模的組織都使用OpenStack來實現這些以及其他的好處。
正如你可能預料到的,各類組織在OpenStack上運行著不同的工作負載,例如:軟體開發和測試,持續集成與交付,基礎設施服務於網路服務。21%的OpenStack採用者報告部署企業中間件的數量正在提升。
關於OpenStack
軟體&項目OpenStack私有雲平台是由多個軟體項目集合集中工作來提供管理預置數據中心內的多種物理資源諸如計算(Nova),存儲(Cinder)以及網路(Neutron)的能力。它也提供一個為數眾多的API集合和一個中央控制台((Horizon)來管理雲資源。
OpenStack為了運行於高性價比的硬體上而設計。為了給那些希望使用特殊的企業級硬體的用戶服務,OpenStack支持思科,Juniper,IBM,Dell EMC以及許多其他企業提供的特殊驅動。
OpenStack遵循一年2次發布版本更新的節奏,一個發行版在春季末釋出,另一個版本在深秋釋出。每個版本都不僅包含計算、網路,存儲,也包括自動化/編排(Heat),大數據/ Hadoop(Sahara),容器編排管理(Magnum)和其他功能的項目。
請移步GitHub查看代碼更新的細節。比如,計算項目的開源代碼可以在openstack/nova目錄中查到,而塊存儲項目在openstack/cinder目錄中。
總體架構之前已提到過,OpenStack是一整套模塊化的項目,包括計算、存儲、網路、鏡像、日誌服務以及其他許多項目的集合。如下圖所示,每個項目的運行時進程都使用諸如RabbitMQ(消息匯流排)的服務互相通信。每個服務還公開了一個API端點,該端點用於接收請求並與其他服務通信。例如,Cinder(塊存儲)服務公開一個API端點以便於與Nova(計算服務)通信。
雖然OpenStack項目的代碼是免費的,由於多個項目間繁複的依賴性,自己動手部署的方式非常複雜。於是,多種部署方式各異的第三方發行版應運而生,如:託管私有雲,一站式私有雲解決方案,以及軟體及服務模式管理OpenStack方案。
REST API,CLI&HORIZON(控制台)OpenStack中的服務使用REST應用程序介面從客戶端接收請求併發送給其它服務來做處理,在不維護任何服務的狀態信息的情況下。讓我們想象一個場景,在這個場景中您需要一個新的塊存儲卷。Cinder-api進程接收到了申請一個新的塊存儲卷的請求,然後把這個信號通過消息匯流排或隊列傳遞給了cinder調度器和cinder卷管理進程。OpenStack的其他組件,如計算(Nova)和鏡像(Glance)也有類似的服務進程:nova-api 和 glance-api。
從運維人員的視角來看,REST API是提供給命令行介面(CLI)以及控制台命令運行的基礎。下面的命令展示了用戶使用「cinder create」命令以及相應的REST API請求創建一個新的Cinder卷。
(openstack) workstation:localdir p9user$ cinder
--debug create --name pf9-1G 1
DEBUG:keystoneauth:REQ: curl -g -i –X POST
https://p9user.p9.net/cinder/v2/f175f441ebbb4c2b8fedf6469d6415fc/volumes -H 「User-Agent: python-cinderclient」 -H 「Content-Type: application/json」 -H 「Accept: application/json」 -H 「X-Auth-Token: {SHA1}token」 -d 『{「volume」:{「status」: 「creating」, 「user_id」: null, 「name」: 「pf9-1G」, 「imageRef」: null, 「availability_zone」: null,「description」: null, 「multiattach」: false, 「attach_status」: 「detached」, 「volume_type」: null, 「metadata」:{}, 「consistencygroup_id」: null, 「source_volid」: null,「snapshot_id」: null, 「project_id」: null, 「source_replica」: null, 「size」: 1}}』
從上面的命令行片段中可以看到,「cinder create」命令就通過命令行發出了命令來創建一個1G大小的叫做「pf9-1G」的卷組。
OpenStack項目組件介紹
OpenStack由許多模塊化的服務組成,這些服務的代碼都在開源的Apache許可證下發布。
計算OpenStack計算服務(Nova)提供供應、刪除、管理實例的服務(虛擬機)。它 支持多種虛擬化技術,包括KVM,Vmware ESXi以及其他的技術。
存儲OpenStack存儲服務提供塊存儲,對象存儲和文件共享存儲技術的支持。快存儲為 虛擬機實例提供虛擬存儲,另外,對象存儲支持可擴展、分散式、非結構化的數據存儲 。
OpenStack塊存儲服務(Cinder)為虛擬化服務提供創建、附加、取消附加快存儲設備的服務。它與OpenStack的計算服務完全集成,可以通過控制台進行管理,並支持多種企業級平台的特有存儲驅動軟體例如Dell EMC,HPE,Netapp,而且它還支持卷組快照服務。
OpenStack對象存儲(Swift)為雲平台提供高性價比、API易感知、分散式、冗餘、可擴展的存儲備份、歸檔以及數據保持服務。它是一個傑出的存儲鏡像,視頻,虛擬機鏡像以及文檔的存儲平台。
網路OpenStack網路服務(Neutron)為管理網路以及IP地址池提供了一個可插件化(插拔)的API驅動平台。它支持多種網路架構模型(Flat,Vlan和VXLAN)、靜態ip和dhcp。它還可以通過使用SDN平台上的先進技術例如OpenFlow來他提供更加高級的網路功能。
共享服務
與計算,存儲,網路這三個基礎架構模塊不同,OpenStack有幾種服務可以把這些基礎組件整合在一起,使OpenStack就像一個普通的系統為用戶提供統一的體驗。
身份認證OpenStack身份認證服務(Keystone)供應身份認證以及證書服務。它為用戶提供一個中央目錄來指引用戶去使用那些他們有許可權使用的服務。它支持集成一些令人興奮的後端目錄服務例如LDAP。
鏡像
OpenStack鏡像服務(Glance)為磁碟以及系統鏡像提供API感知與發現,註冊以及交付服務。Glance服務可以將鏡像存儲在多種類型的後端存儲服務中,包括OpenStack的對象存儲服務,Swift。OpenStack鏡像服務可以容納多種鏡像存放格式,包括Raw,VHD,VMDK以及VDI。
監控OpenStack 監控服務((Ceilometer)聚合應用和性能數據並且能夠為所有OpenStack服務提供閥值報警服務。
編排OpenStack編排服務(Heat)提供自動化的,基於模板的基礎設施部署能力。與監控服務集成使用可以提供可選的實例自動伸縮服務。
資料庫OpenStack 資料庫服務(Trove)在OpenStack平台上提供資料庫即服務功能(DBaaS)。
控制台
OpenStack控制台服務提供一個集中式的用戶圖形界面,供應並管理雲資源。計費以及監控等第三方服務可以非常方便地集成到OpenStack控制台上。OpenStack服務亦可以通過API來調用。
數據處理OpenStack大數據處理服務提供分散式數據處理堆棧以及可整合的管理介面。
其他項目OpenStack平台還有許多可選的服務模塊可以互相集成。這些服務中包括應用日誌記錄(Murano),裸金屬(物理機)服務(Ironic),容器供應編排服務(Magnum),共享存儲服務(Manila) 。
快速開始命令集
作為管理控制台(Horizon)的備選實施方案,OpenStack提供了命令行介面(CLI)來進行查詢,更新,創建與刪除雲資源並且提供了許多其他的操作。CLI可以使用下列命令來安裝到你的筆記本或客戶端機器上(首先安裝Python3.5)。
如果需要一個完整的客戶端安裝說明,請參考OpenStack官方說明文檔。為了熟悉使用CLI,有必要使用一個可以 「溯源(sourced)」的合適的證書來對使用者做驗證。下面這個例子展示了一個openrc文件以及從這個文件中獲取的環境變數。$ pip install python-openstackclient
在圖中所示的CLI命令行中,遺留的與新版本都被展示了。新的,統一的OpenStack客戶端提供了更加易於使用的命令。
秘鑰管理$ cat openrc
export OS_USERNAME=osuser
export OS_TENANT_NAME=engineering
export OS_PASSWORD=
export OS_AUTH_URL=https://
/ keystone/v2.0
export OS_REGION_NAME=us-east-1
$ source openrc
創建以及上傳SSH秘鑰
為了在OpenStack雲平台上創建服務(例如Nova實例)。有必要在集群內添加一個公鑰並創建一個鏡像。SSH秘鑰可以使用如下命令創建:
創建密鑰對
$ ssh-keygen -t rsa
上傳公鑰
使用剛剛執行的命令所提供的信息,就可以在系統里定位公鑰並上傳到OpenStack雲平台上。
$ nova keypair-add --public-key ~/.ssh/id_rsa.pub
(legacy CLI) - or -
$ openstack keypair create --public-key ~/.ssh/id_rsa.
pub
(new Unified OpenStack CLI)
創建一個鏡像
執行以下命令可以創建一個Glance鏡像。
$ glance image-create --name
--disk- format
--container-format bare --file
- or -
$ openstack image create --container-format bare
--disk-format
--file
鏡像服務支持許多鏡像格式,包括qcow2,vhd,vmdk,ami,raw以及其他格式。
啟動實例
在OpenStack雲平台中隨著公鑰以及鏡像的就位,現在可以啟動虛擬機實例了。
命令如下:
$ nova boot --image
--nic net-id=
- or -
$ openstack server create --flavor <flavor_name> --nic
net-id=
為了查找可用的特例,可以使用如下命令:
$ nova flavor-list
- or -
$ openstack flavor list
$ nova list
- or -
$ openstack list
$ nova rebuild
- or -$ openstack server rebuild --image
$ nova console-log
- or -
$ openstack console log show
其他Clance命令(鏡像目錄) 為運行中實例創建鏡像:
服務鏡像允許用戶創建一個預配置的鏡像並在稍後重新使用。這些景象可以用來啟動新實例並將顯示鏡像列出的時間。
$ nova image-create
- or -
$ openstack server image create
查找可用鏡像:
$ glance image-list
- or -
$ openstack image list
刪除Glance鏡像:
$ glance image-delete
- or -
$ openstack image delete
$ neutron network-list
- or -
創建一個名叫「devops_network」的新網路:
$ neutron net-create devops_network
- or -
$ openstack network create devops_network
在「devops_network」網路中創建一個名為「devops_subnet」的子網:
$ neutron subnet-create --gateway 10.10.10.1 devops_
network 10.10.10.0/24
- or -$ openstack subnet create --gateway 10.10.10.1
--network devops_network --subnet-range 10.10.10.0/24
devops_subnet
在上面的命令中,提供了網關IP地址,之前創建的網路名稱,子網的無類別域間路由。命令還提供了運行「openstack subnet create」命令時所能提供的一系列其他選項。
$ neutron floatingip-list
- or -
$ openstack floating ip list
創建新的浮動IP地址:
$ neutron floatingip-create <floating ip network>
- or -
$ openstack floating ip create <floating IP network>
另一種創建新浮動IP地址的命令:
安全組$ nova floating-ip-associate
<floating_ip>
- or -$ openstack server floating ip add
floating_ip>
一個Nova實例的安全組允許用戶給實例的入網或出網流量添加規則。以下命令創建了一個名叫ssh_secgroup的安全組:
$ neutron security-group-create ssh_secgroup
- or -
$ openstack security group create ssh_secgroup
以下命令可以為安全組添加一條規則,在下面命令的例子中,安全組開啟了TCP層的22埠:
$ neutron security-group-rule-create --protocol tcp
--direction ingress --port-range-min 22 --port-rangemax 22 ssh_secgroup
- or -
$ openstack security group rule create --protocol tcp
--ingress --protocol tcp --dst-port 22 ssh_secgroup
上面的命令還有另一種形式如下:
Cinder命令(塊存儲)$ nova add-secgroup
ssh_secgroup
- or -$ openstack server add security group
ssh_
secgroup
Cinder提供一組可以一次性掛載到一個實例上的存儲設備,並且在實例終止時依舊存在(持久卷)。Cinder卷組經常作為一組已存在的SAN存儲介面,允許用戶使用易於使用的API來和它們交互。
$ cinder create --name
- or -
$ openstack volume create --size
為Nova實例掛載一個Cinder卷組:
$ nova volume-attach
- or -
$ openstack server add volume
創建一個對象存儲容器
$ swift upload
- or -
$ openstack object create
$ swift download
- or -
$ openstack object save
KeyStone命令(身份認證與訪問控制)
OpenStack使用Keystone來創建,刪除與更新用戶、用戶組和服務運行下列命令可以創建一個新用戶:
$ openstack user-create
用戶可以給不同角色分配不同的許可權。管理者一般比單服務中的用戶擁有更高的許可權。創建新角色的命令:
$ openstack role-create
一個部門或者租戶是分配給一些組織中的用戶的資源的子集。例如,一個組織部署一個OpenStack私有雲項目一般會有幾個不同分項目(部門)例如」工程「,」金融「或」市場「,每個項目都配給一部分資源並區分用戶。以下命令創建了一個租戶:
$ openstack project-create
$ openstack role add --user
--project
刪除用戶,項目還有一個角色:
$ openstack user delete
$ openstack project delete
$ openstack role delete
有許多可以在項目上設置的配額類型,以下命令展示了配額設置:
$ openstack quota set --gigabytes
--ram
--snapshots
配額可以通過以下命令查看:
$ openstack quota show
總而言之,OpenStack CLI為許多服務提供了大量的命令。查看OpenStack已有命令的一種方式是在原有的客戶端中使用命令中的」help「關鍵詞。在標準OpenStack客戶端中敲下這第一關鍵詞可以展示出一系列可用命令。例如:
$ nova help
- or -
$ openstack server
OpenStack使用案例作為私有雲軟體的引領者。OpenStack已經以以下方式被使用了:
開放標準樣板在一個開放的生態系統下,OpenStack允許整合許多不同的基礎設施供應商,虛擬化技術,分散式模型以及部署模型。開放標準提供了靈活性:用戶有繁多的計算,存儲及網路供應商以及多種自動化技術例如Puppet,Ansible還有Chef等供應商以及自動化技術的選項。OpenStack平台的靈活程度可以與公有雲供應商做深刻對比,究竟誰為用戶工作流提供了更多樣的工具集和API。
從公有雲撤回在最近的一些案例中,公有雲的花費對某些組織過於昂貴以至於它們決定從中撤回一些工作流到自己預先準備的環境中。據福布斯報道,公有雲在長期工作負載與高網路流量下的消費模型是不經濟的。在PubMatic公有雲支出增長到超過每月400000美元之後,他們決定將雲負載遷移到一個基於OpenStack的部署在他們私有基礎設施上的私有雲,這給他們帶來了與公有雲相似的體驗。
歷史應用公有雲部署在離終端用戶大約一百公里遠的數據中心內,而且提供服務的基礎設施一般都是X86標準的架構。因此,整合舊資料庫或者依賴於特製硬體的應用難以集成進公有雲。這些應用不論如何,都可以整合進一個OpenStack私有雲並且讓你可以使用一個普通的管理框架讓現有應用工具化,自動化。
敏感數據據OpenStack用戶調查顯示,超過40%的受訪者感覺到安全以及隱私是驅動他們採用私有雲的前五大因素的一部分。敏感數據可能包括那些不能向網路公布設及風險與公司內部規章的僱員與公司的信息。
可發展雲亞馬遜與Netflix等公司實踐DevOps方法論以增強開發組與運維組之間的合作與溝通。OpenStack提供了API來為持續集成以及持續部署流程的自動化,集成構建和快速排除軟體故障賦能。使用OpenStack企業組織能創建一個自服務的門戶為開發與生產環境,開發工具應用日誌例如Jenkins和MySQL還有為windows,Mac以及linux系統環境提供共享文件環境所需的虛擬機資源。
基礎設施雲作為基礎設施即服務的領導者,OpenStack提供了與眾多供應商例如Cisco,IBM,Dell EMC,HPE以及其他許多廠商集成的能力。使用與廠商特製驅動共享的代碼集,OpenStack提供了一個無縫路徑為廠商採用靈活的,沒有任何廠商鎖定的基礎設施雲。基礎設施部署者可以與在IRC頻道上與廠商開發者直接溝通,故障可以通過OpenStack LaunchPad保存在文件中。Amobee的成功故事展示了使用OpenStack作為基礎設施雲的先進的部署細節。
NFV(網路功能虛擬化)據OpenStack基金會報道,全世界許多電信供應商,包括AT&T正在擁抱OpenStack並使用它的功能來使計算服務,存儲與網路商品化來完成一些特殊任務例如載波級網路地址轉換,SGSN/GGSN(GPRS網關服務)以及網路會話邊界控制。基於OpenStack的標準化以及虛擬化減少了所有權總支出以及縮短了投放市場的時間,並為這些供應商提供了靈活可編程的基礎設施。
混合雲OpenStack是私有雲解決方案的一個選項。當有些組織之在此前提下部署,許多其他組織想要使用公有雲作為備份,災難恢復,在業務爆發時超量部署以及其他用途。舉例來說,金融機構使用混合雲因為他們需要預置的基礎設施來做潛在的敏感交易並使用公有雲來做基於計算服務的數據分析工作流。通過混合雲模式,這些機構可以保護他們的實際資產並減少開支。混合雲管理平台的例子包括Platform9,Scalr,RightScale,ZeroStack以及許多其他案例。
部署模型預製的非軟體即服務的發行版在傳統模式中,OpenStack發行版往往與供應商的預安裝OpenStack工具一起發布。在這種模式下,IT人員預期將構建、部署和維護分發及其相關的基礎設施。選擇廠商的支持與服務將發生額外費用。
採用OpenStack發行版的最大劣勢在於在快速變更的代碼集上持續維護你部署的基礎設施的需求,而這變更頻率為每六個月一次。除此之外,當IT團隊在新的機房區域部署服務與工作流,會增加額外的複雜性。
非軟體即服務的發行版舉例:
• Red Hat Enterprise Linux OpenStack Platform (RHEL OSP)
• Mirantis OpenStack (MOS)
• Suse OpenStack Cloud
託管私有雲託管私有雲解決方案類似於網站託管。在這類模式下,組織將OpenStack基礎設施的維護移交給託管提供商。雖然該模式緩解了IT人員維護的基於分散式的解決方案遇到的一些問題。託管私有雲意味著公司將數據放在了託管服務提供商的數據中心的企業和周邊網路。選擇託管供應商會被託管雲供應商的私有雲服務鎖定。
OpenStack託管雲服務商舉例:
• Rackspace OpenStack Private Cloud
• IBM Bluemix Private Cloud
盒中私有雲OpenStack的組件提供了使用預製基礎設施來部署私有雲的能力。該模型的優點是保留了用於部署OpenStack的基礎結構。從而確保數據不會離開組織網路邊界。不過,這些服務的許可證會非常昂貴,且採用此模式部署OpenStack組件的組織必須被動接受這筆前期投資。組織會被推薦硬體鎖定。最新的OpenStack調查反映了靈活性在選擇硬體供應商方面的重要性,而在以下情況下將難以實現:
私有盒中雲舉例:
• Cisco Metacloud
• Stratoscale
軟體即服務模式管理OpenStack(OpenStack即服務)這種模式允許組織在部署OpenStack的同時提供靈活選擇他的數據中心基礎設施的機會。人們可以在網路周邊保持對公司數據的控制,同時還可以部署、維護和升級OpenStack軟體。而且升級不會影響正在運行中的數據中心基礎設施。
英文原文:
譯者:雲技術社區金牌翻譯 小富
相關閱讀:
高端私有雲項目交流群,歡迎加入!
Docker Swarm與ceph集成測試
軟交換之爭:OVS VS LINUX BRIDGE
通過iptables分析OpenStack 安全組規則
NFV場景下優化KVM--低時延
一文讀懂OpenStack Glance是什麼
Prometheus(普羅米修斯)用戶檔案:動態化特性加速weaveworks雲原生程序的發展
加入最活躍的Kubernetes技術討論QQ群,群共享有N多資料,502207183,並註明城市、行業、技術方向。