1. 程式人生 > >OpenStack雲端計算與虛擬化—架構篇

OpenStack雲端計算與虛擬化—架構篇

  雲端計算與虛擬化

雲端計算與虛擬化這個概念是什麼時候出現在我們腦海裡的?一開始的亞馬遜雲服務再到阿里巴巴推出的阿里雲,緊接著各大廠商爭先恐後的推出自己的公共雲平臺,騰訊雲,華為雲,微軟雲等等,那麼究竟什麼是雲服務和虛擬化?

首先解釋什麼是雲端計算,雲端計算(Cloud Computing)是基於網際網路的相關服務的增加、使用和交付模式,通常涉及通過網際網路來提供動態易擴充套件且經常是虛擬化的資源。雲是網路、網際網路的一種比喻說法。過去在圖中往往用雲來表示電信網,後來也用來表示網際網路和底層基礎設施的抽象。因此,雲端計算甚至可以讓你體驗每秒10萬億次的運算能力,擁有這麼強大的計算能力可以模擬核爆炸、預測氣候變化和市場發展趨勢。使用者通過電腦、筆記本、手機等方式接入資料中心,按自己的需求進行運算。對雲端計算的定義有多種說法。對於到底什麼是雲端計算,至少可以找到100種解釋。 現階段廣為接受的是美國國家標準與技術研究院(NIST)定義:雲端計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網路訪問, 進入可配置的計算資源共享池(資源包括網路,伺服器,儲存,應用軟體,服務),這些資源能夠被快速提供,只需投入很少的管理工作,或與服務供應商進行很少的互動。

再來說說什麼是虛擬化,虛擬化是指通過虛擬化技術將一臺計算機虛擬為多臺邏輯計算機。在一臺計算機上同時執行多個邏輯計算機,每個邏輯計算機可執行不同的作業系統,並且應用程式都可以在相互獨立的空間內執行而互不影響,從而顯著提高計算機的工作效率。虛擬化使用軟體的方法重新定義劃分IT資源,可以實現IT資源的動態分配、靈活排程、跨域共享,提高IT資源利用率,使IT資源能夠真正成為社會基礎設施,服務於各行各業中靈活多變的應用需求。

OK,那麼我們現在就能總結一下,首先雲端計算是一種模式而且是通過網路訪問按需使用,但是雲端計算並不等於虛擬化,而虛擬化分為硬體虛擬化和軟體虛擬化,全虛擬化和半虛擬化

  
傳統資料中心所面臨的的問題

為什麼雲端計算與虛擬化這麼火,原因很簡單,按照我們之前傳統的模式,首先和資料中心機房簽訂合同然後自己購買伺服器,安裝系統,部署對應的環境,然後出了問題可能還要聯絡機房授權進行維護這是要多麻煩就有多麻煩,其次普片的伺服器存在資源利用率低,資源分配不合理的情況,許多公司的架構都遵循一個非常守舊的觀念,那就是一臺伺服器就只搭建一個服務,這讓使其CPU的使用資源都是非常的低,這可不是說不好,但是我覺得非常浪費,我們運維人員和架構師就是為公司省錢並且提高效能的,傳統的模式還有一個自動化能力差的問題,遷移、部署都是非常繁瑣,同時硬體升級的時候還可能需要停機,以上的種種都是成就了雲端計算與虛擬化的大功臣啊

  雲端計算的分類

雲端計算可以概括性的分為三類:公有云、私有云、混合雲

公有云:使用第三方的雲服務商的產品,如:阿里雲、騰訊雲等

私有云:在自己的機房搭建雲平臺,比如接下來介紹的OpenStack,私有云主要提供了私密的性質,畢竟公有云的資料都是存在別人的地方

混合雲:公有云+私有云=混合雲,為什麼會有這種模式,舉個簡單的例子,雙十一,偶爾的自己平臺撐不住,這時候依靠別人平臺按需按時去使用

  雲端計算的分層

  • Packaged Software

  • Infrastructure as a Service

  • Platfrom as a Service

  • Software as a Service

  OpenStack

OpenStack是一個由NASA(美國國家航空航天局)和Rackspace合作研發併發起的,以Apache許可證授權的自由軟體和開放原始碼專案,這也是為什麼OpenStack在這麼火的原因,哪怕你只改了其中的一個字母拿去售賣都是合法的,OpenStack是一個開源的雲端計算管理平臺專案,由幾個主要的元件組合起來完成具體工作,以Python程式語言編寫,整合Tornado網頁伺服器、Nebula運算平臺,使用Twisted軟體框架,遵循Open Virtualization Format、AMQP、SQLAlchemy等標準,而虛擬機器器軟體支援包括:KVM、Xen、VirtualBox、QEMU、 LXC 等,專案目標是提供實施簡單、可大規模擴充套件、豐富、標準統一的雲端計算管理平臺。OpenStack通過各種互補的服務提供了基礎設施即服務(IaaS)的解決方案,每個服務提供API以進行整合。OpenStack是一個旨在為公共及私有云的建設與管理提供軟體的開源專案。它的社群擁有超過130家企業及1350位開發者,這些機構與個人都將OpenStack作為基礎設施即服務(IaaS)資源的通用前端。OpenStack專案的首要任務是簡化雲的部署過程併為其帶來良好的可擴充套件性。本文希望通過提供必要的指導資訊,幫助大家利用OpenStack前端來設定及管理自己的公共雲或私有云。OpenStack雲端計算平臺,幫助服務商和企業內部實現類似於Amazon EC2和S3的雲基礎架構服務(Infrastructure as a Service,IaaS)。OpenStack包含兩個主要模組:Nova 和 Swift,前者是NASA開發的虛擬伺服器部署和業務計算模組;後者是Rackspace開發的分散式雲端儲存模組,兩者可以一起用,也可以分開單獨用。OpenStack除了有Rackspace和NASA 的大力支援外,還有包括Dell、Citrix、Cisco、Canonical等重量級公司的貢獻和支援,發展速度非常快,有取代另一個業界領先開源雲平臺Eucalyptus的態勢。

  OpenStack核心專案模組

  • 計算服務模組:Nova,一套控制器,用於為單個使用者或使用群組管理虛擬機器例項的整個生命週期,根據使用者需求來提供虛擬服務。負責虛擬機器建立、開機、關機、掛起、暫停、調整、遷移、重啟、銷燬等操作,配置CPU、記憶體等資訊規格。

  • 儲存服務模組:Cinder,為執行例項提供穩定的資料塊儲存服務,它的外掛驅動架構有利於塊裝置的建立和管理,如建立卷、刪除卷,在例項上掛載和解除安裝卷。

  • 映象服務模組:Glance,一套虛擬機器映象查詢及檢索系統,支援多種虛擬機器映象格式(AKI、AMI、ARI、ISO、QCOW2、Raw、VDI、VHD、VMDK),有建立上傳映象、刪除映象、編輯映象基本資訊的功能。

  • 身份驗證模組:Keystone。為OpenStack其他服務提供身份驗證、服務規則和服務令牌的功能,管理Domains、Projects、Users、Groups、Roles。

  • 網路服務模組:Neutron,提供雲端計算的網路虛擬化技術,為OpenStack其他服務提供網路連線服務。為使用者提供介面,可以定義Network、Subnet、Router,配置DHCP、DNS、負載均衡、L3服務,網路支援GRE、VLAN。

  • 介面服務模組:Horizon,OpenStack中各種服務的Web管理門戶,用於簡化使用者對服務的操作,例如:啟動例項、分配IP地址、配置訪問控制等。

[題外話:Openstack不管是版本的命名還是說外掛模組的命名都是非常有趣的,隨緣起名字,就是那麼佛性]

  OpenStack架構

OpenStack因Open而開放,因元件而靈活,因包容而博大。有計算、網路、物件儲存、塊儲存、身份、映象服務、門戶、測量、部署編排、資料庫服務等等元件,有的元件可以根據需要選擇安裝,組網結構也很靈活、多樣。實現了支援接入多種主流虛擬機器軟體:KVM、LXC、QEMU、Hyper-V、VMware、XenServer,也可以自行開發外掛接入其他的虛擬化軟體。
OpenStack Compute(Nova)是一套控制器,用於為單個使用者或使用群組啟動虛擬機器例項。它同樣能夠用於為包含著多個例項的特定專案設定網路。OpenStack Compute在公共雲處理方面堪與Amazon EC2相提並論;而在私有云方面也毫不遜色於VMware的產品。在公共雲中,這套管理機制將提供預製的映象或是為使用者建立的映象提供儲存機制,這樣使用者就能夠將映象以虛擬機器的形式啟動。
OpenStack 物件儲存(Swift)是一套用於在大規模可擴充套件系統中通過內建冗餘及容錯機制實現物件儲存的系統。這些物件能夠通過一個REST API或是像Cyberduck這樣可以對接物件儲存API的客戶端加以恢復。
OpenStack映象服務 (Glance)是一套虛擬機器映象查詢及檢索系統。它能夠以三種形式加以配置:利用OpenStack物件儲存機制來儲存映象;利用Amazon的簡單儲存解決方案(簡稱S3)直接儲存資訊;或者將S3儲存與物件儲存結合起來,作為S3訪問的聯結器。OpenStack映象服務支援多種虛擬機器映象格式,包括VMware(VMDK)、Amazon映象(AKI、ARI、AMI)以及VirtualBox所支援的各種磁碟格式。映象元資料的容器格式包括Amazon的AKI、ARI以及AMI資訊,標準OVF格式以及二進位制大型資料。
OpenStack的開發週期是每年固定釋出兩個新版本,並且每一個新版軟體釋出時,開發者與專案技術領導者已經在規劃下一個版本的細節。這些開發者來自全球70多個組織,超過1600人。他們採用高階的工具與開發方式,進行程式碼檢視、持續的整合、測試與開發架構,讓版本在快速成長的同時也能確保穩定性。

  OpenStack環境

OpenStack雖然說是非常的有趣,部署起來也比較簡單,就修改配置檔案即可,但是必須規範理解每個的用意,不然就會非常的混亂,下面給大家簡單說明一下環境的規範

域名的解析配置

#配置主機名稱
vim /etc/hostname
controller.kemin-cloud.com

#配置hosts解析
vim /etc/hosts
192.168.137.51  controller.kemin-cloud.com
192.168.137.52  compute.kemin-cloud.com

網路時間配置

echo "* * * * * ntpdate  -u ntp1.aliyun.com" >> /etc/crontab

OpenStack的Yum倉庫

#直接安裝用於啟用OpenStack倉庫的包
yum install -y centos-release-openstack-ocata
#升級更新核心
yum upgrade
#安裝 OpenStack 客戶端
yum install python-openstackclient
#RHEL和 CentOS 預設啟用 SELinux 。安裝 openstack-selinux 包實現對OpenStack服務的安全策略進行自動管理
yum install openstack-selinux

SQL資料庫

#安裝SQL資料庫
yum install mariadb mariadb-server python2-PyMySQL

#建立並編輯/etc/my.cnf.d/openstack.cnf
vim /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 10.0.0.11
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

#啟動資料庫服務,並將其配置為開機自啟
systemctl enable mariadb.service
systemctl start mariadb.service

#初始化資料庫
mysql_secure_installation

訊息佇列

#安裝訊息佇列服務
yum install rabbitmq-server

#啟動訊息佇列服務並將其配置為隨系統啟動:
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service

#新增openstack使用者:
rabbitmqctl add_user openstack 123

#給openstack使用者配置寫和讀許可權:
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

#啟動rabbitmq的web管理介面
rabbitmq-plugins enable rabbitmq_management

這樣子我們就可以通過瀏覽器訪問伺服器的15672埠訪問了,不過這裡需要注意的是前面建立的openstack並不能登入,需要使用guest登入,密碼也是geust,建議登陸進去後進行密碼修改喲

Memcached快取服務

#安裝Memcached服務
yum install memcached python-memcached

#編輯/etc/sysconfig/memcached檔案修改監聽埠
vim /etc/sysconfig/memcached
OPTIONS="-l 0.0.0.0,::1,controller"

#啟動Memcached服務,並且配置它隨機啟動
systemctl enable memcached.service
systemctl start memcached.service