雲計算與虛擬化這個概念是何時出如今咱們腦海裏的?一開始的亞馬遜雲服務再到阿里巴巴推出的阿里雲,緊接着各大廠商爭先恐後的推出本身的公共雲平臺,騰訊雲,華爲雲,微軟雲等等,那麼究竟什麼是雲服務和虛擬化?前端
首先解釋什麼是雲計算,雲計算(Cloud Computing)是基於互聯網的相關服務的增長、使用和交付模式,一般涉及經過互聯網來提供動態易擴展且常常是虛擬化的資源。雲是網絡、互聯網的一種比喻說法。過去在圖中每每用雲來表示電信網,後來也用來表示互聯網和底層基礎設施的抽象。所以,雲計算甚至可讓你體驗每秒10萬億次的運算能力,擁有這麼強大的計算能力能夠模擬核爆炸、預測氣候變化和市場發展趨勢。用戶經過電腦、筆記本、手機等方式接入數據中心,按本身的需求進行運算。對雲計算的定義有多種說法。對於到底什麼是雲計算,至少能夠找到100種解釋。 現階段廣爲接受的是美國國家標準與技術研究院(NIST)定義:雲計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網絡訪問, 進入可配置的計算資源共享池(資源包括網絡,服務器,存儲,應用軟件,服務),這些資源可以被快速提供,只需投入不多的管理工做,或與服務供應商進行不多的交互。python
再來講說什麼是虛擬化,虛擬化是指經過虛擬化技術將一臺計算機虛擬爲多臺邏輯計算機。在一臺計算機上同時運行多個邏輯計算機,每一個邏輯計算機可運行不一樣的操做系統,而且應用程序均可以在相互獨立的空間內運行而互不影響,從而顯著提升計算機的工做效率。虛擬化使用軟件的方法從新定義劃分IT資源,能夠實現IT資源的動態分配、靈活調度、跨域共享,提升IT資源利用率,使IT資源可以真正成爲社會基礎設施,服務於各行各業中靈活多變的應用需求。mysql
OK,那麼咱們如今就能總結一下,首先雲計算是一種模式並且是經過網絡訪問按需使用,可是雲計算並不等於虛擬化,而虛擬化分爲硬件虛擬化和軟件虛擬化,全虛擬化和半虛擬化linux
爲何雲計算與虛擬化這麼火,緣由很簡單,按照咱們以前傳統的模式,首先和數據中心機房簽定合同而後本身購買服務器,安裝系統,部署對應的環境,而後出了問題可能還要聯繫機房受權進行維護這是要多麻煩就有多麻煩,其次普片的服務器存在資源利用率低,資源分配不合理的狀況,許多公司的架構都遵循一個很是守舊的觀念,那就是一臺服務器就只搭建一個服務,這讓使其CPU的使用資源都是很是的低,這可不是說很差,可是我以爲很是浪費,咱們運維人員和架構師就是爲公司省錢而且提升性能的,傳統的模式還有一個自動化能力差的問題,遷移、部署都是很是繁瑣,同時硬件升級的時候還可能須要停機,以上的種種都是成就了雲計算與虛擬化的大功臣啊web
雲計算能夠歸納性的分爲三類:公有云、私有云、混合雲sql
公有云:使用第三方的雲服務商的產品,如:阿里雲、騰訊雲等數據庫
私有云:在本身的機房搭建雲平臺,好比接下來介紹的OpenStack,私有云主要提供了私密的性質,畢竟公有云的數據都是存在別人的地方編程
混合雲:公有云+私有云=混合雲,爲何會有這種模式,舉個簡單的例子,雙十一,偶爾的本身平臺撐不住,這時候依靠別人平臺按需按時去使用vim
Packaged Softwarecentos
Infrastructure as a Service
Platfrom as a Service
Software as a Service
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的態勢。
計算服務模塊:Nova,一套控制器,用於爲單個用戶或使用羣組管理虛擬機實例的整個生命週期,根據用戶需求來提供虛擬服務。負責虛擬機建立、開機、關機、掛起、暫停、調整、遷移、重啓、銷燬等操做,配置CPU、內存等信息規格。
存儲服務模塊:Cinder,爲運行實例提供穩定的數據塊存儲服務,它的插件驅動架構有利於塊設備的建立和管理,如建立卷、刪除卷,在實例上掛載和卸載卷。
鏡像服務模塊:Glance,一套虛擬機鏡像查找及檢索系統,支持多種虛擬機鏡像格式(AKI、AMI、ARI、ISO、QCOW二、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因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雖說是很是的有趣,部署起來也比較簡單,就修改配置文件便可,可是必須規範理解每一個的用意,否則就會很是的混亂,下面給你們簡單說明一下環境的規範
域名的解析配置
#配置主機名稱 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