OpenStack

第一章 OpenStack基礎

  1. OpenStack管理的資源及提供的服務
    OpenStack做為一個操作系統(tǒng)冒掌,它管理的資源主要有三個方面:計算歪今,存儲萧锉,網(wǎng)絡端逼。OpenStack管理這些資源并提供給上層應用或用戶去使用朗兵。這些資源管理是通過OpenStack中的各個項目來實現(xiàn)的。其中計算資源管理相關項目是Nova顶滩;存儲相關的主要有塊存儲服務Cinder,對象存儲服務Swift和鏡像存儲服務Glance矛市;與網(wǎng)絡相關的主要是一個和軟件定義網(wǎng)絡相關的項目Neutron(原名叫Qauntum)。另外Nova中有一個管理網(wǎng)絡的模塊叫做NovaNetwork诲祸,它做為一個比較穩(wěn)定的遺留組件浊吏,現(xiàn)在仍然在OpenStack里和Neutron并存,在小規(guī)模部署里面救氯,為了追求穩(wěn)定和減少工作量會去使用它對網(wǎng)絡資源進行管理找田。

2.OpenStack資源VS公有云資源:

U`2FG}BKLL`AIR`8%Z1)MTG.png
  1. OpenStack基本組件
    1) Nova(OpenStack Compute):
    它是OpenStack里最核心的項目, 主要作用是控制虛擬機的創(chuàng)建以及改變他的容量和配置着憨;它還可以做虛擬機的銷毀墩衙,即虛擬機的整個生命周期都是由Nova來控制的。Nova的部署和運行一般有兩種情況:一種是作為Controller節(jié)點去運行,它的核心部分主要有Scheduler(決定將要啟動的虛擬機調(diào)度到哪個物理節(jié)點上),Conductor(對所有的計算節(jié)點進行統(tǒng)一管理)漆改,NovaCell(級聯(lián))心铃,用這些來控制其它一些運算節(jié)點。另外一種是作為Compute節(jié)點運行挫剑,它的核心部分是Nova Compute去扣,用來控制運行實際的虛擬機。
    2) Cinder:
    它主要用途是用來提供塊存儲服務樊破。它最核心的兩個部分是Scheduler和Cinder Volume愉棱。此處Scheduler的功能和Nova的Scheduler功能接近,用來決定通過哪個Cinder Volume進行讀取操作哲戚。而Cinder Volume是實際控制存儲設備的節(jié)點奔滑。
    3) Neutron
    它是當下流行的SDN(軟件定義網(wǎng)絡)在OpenStack里的一個實現(xiàn)。Neutron有一個很大特點就是它提供了Plugin組件/模塊(用戶可以自定義)顺少。
    4) Swift
    相對獨立的一個組件朋其,它和其他組件的交互關系比較少。它提供對象存儲服務脆炎,類似于亞馬遜S3或者國內(nèi)七牛這樣一個存儲服務令宿。
    5) Glance
    它是OpenStack里面使用Swift最多的組件,它主要是用Swift來存儲虛擬機的鏡像和快照等腕窥。
    6) Keystone
    它主要是為各個組件提供用戶的認證粒没,建權等服務。
    7) Horizon
    它是一個圖形界面簇爆。
    8) 其它組件
    Heat: 用來做各個服務的編排癞松。
    Sahara: 使Hadoop能夠在OpenStack上運行。
    ……

第二章 OpenStack架構分析

1.OpenStack組件間的邏輯關系
以E版本為例入蛆,含七大基本組件:
Dashboard(即Horizon)响蓉;Identity(即keystone)compute(即Nova);Image(即Glance)哨毁;Object Storage(即Swift)枫甲;Network(即Neutron);Block Storage(即Clinder)扼褪;
*注:其中Network(即Neutron)和Block Storage(即Clinder)分別是從Compute Network和Compute Vloume發(fā)展出來的想幻。但Network組件并沒有直接去替換Compute Network,它是相對獨立的(也是當下流行的SDN)的一個項目话浇,它為Compute提供網(wǎng)絡連接脏毯,提供網(wǎng)絡資源管理這些服務。而Block Storage則替換了Compute Vloume幔崖,它為Compute提供塊存儲服務食店。

  1. OpenStack的API
    1)OpenStack各組件間通過相互調(diào)用API實現(xiàn)通信渣淤。OpenStack的API是基于HTTP協(xié)議的RESTful Web API。(REST:表現(xiàn)狀態(tài)傳輸VS另外一種Web服務接口協(xié)議:SOAP)
    2)REST架構里對資源的操作包括獲取吉嫩,創(chuàng)建价认,修改和刪除。正好對應HTTP里提供的GET,POST,PUT,DELETE方法自娩。所以用HTTP來實現(xiàn)REST是比較方便的用踩。
    3)RESTful Web API主要有以下三個要點:
    ①資源地址(即資源的URI):如以http開頭的地址
    ②傳輸資源的表現(xiàn)形式(即Web服務接受與返回的互聯(lián)網(wǎng)媒體類型):JSON, XML等。
    ③對資源的操作(即Web服務在該資源上所支持的一系列請求方法):如GET,POST,PUT或DELETE
    4)調(diào)用及調(diào)試API的方式
    ①curl命令:linux下發(fā)送http請求并接受響應的命令行工具
    ②OpenStack命令行客戶端:python寫的命令行客戶端
    ③FireFox或Chrome瀏覽器的REST客戶端:圖形界面
    ④OpenStack的SDK: 不要手寫代碼發(fā)送HTTP請求調(diào)用REST接口椒功,省去一些諸如Token等數(shù)據(jù)的管理工作,能夠很方便地基于OpenStack做開發(fā)智什。

3.OpenStack組件間的通信關系

OpenStack組件間的通信關系分為四類:

1)基于HTTP協(xié)議的通信

① 出現(xiàn)在各個組件API之間的調(diào)用动漾。最常見的是通過Horizon(或說命令行接口)對各組件進行操作的時候產(chǎn)生的通信;另外就是各組件通過Keystone對用戶身份進行校驗的時候產(chǎn)生的通信荠锭;還有就是Nova Compute在獲取鏡像的時候?qū)lance API的調(diào)用及Swift數(shù)據(jù)的讀寫也是通過HTTP協(xié)議的RESTful Web API來進行的旱眯。

2)基于(消息隊列)AMQP協(xié)議的通信

① 主要是每個項目內(nèi)部各個組件之間的通信。例如Nova的Nova Compute和Scheduler之間及Scheduler和Cinder Volume之間证九。(注意:由于Cinder是從Nova Volume演化出來的删豺,所以Cinder和Nova之間也有通過AMQP協(xié)議通信的關系)

② AMQP協(xié)議進行通信也屬于面向服務的架構,所以雖然大部分通過AMQP協(xié)議進行通信的組件屬于同一個項目愧怜,但是并不要求它們安裝部署在同一個節(jié)點上呀页。如NovaCompute 和Nova Conductor反而反而通常要求它們不能部署在同一個節(jié)點上;而實際上Nova Conductor和Nova Scheduler也可以放到不同的節(jié)點上拥坛,這有利于系統(tǒng)的橫向擴展蓬蝶,我們可對其中的各個組件分別按照它們的負載情況進行橫向擴展。(用不同數(shù)量的節(jié)點去承載它們這些服務)

③ OpenStack并沒有規(guī)定AMQP協(xié)議的實現(xiàn)猜惋,我們經(jīng)常使用的是private MQ丸氛,實際用戶可根據(jù)自身情況選擇其它的消息中間件。

3)基于數(shù)據(jù)庫連接的通信(主要是SQL)

① 出現(xiàn)在各個組件和數(shù)據(jù)庫之間著摔,這些通信大多也屬于項目內(nèi)部缓窜,和前面基AMQP的類似。它也不要求數(shù)據(jù)庫和項目其它組件安裝在同一個節(jié)點上谍咆,它也可以分開安裝禾锤,甚至我們還可專門部署這個數(shù)據(jù)庫服務器,把這些數(shù)據(jù)庫服務放在上面摹察,然后之間是通過基于SQL的這些連接來進行通信时肿。

② OpenStack同樣沒有規(guī)定必須使用哪種數(shù)據(jù)庫,我們通常使用的是MySQL港粱,實際用戶可根據(jù)自身情況選擇其它的數(shù)據(jù)庫螃成。

4)基于第三方API(或稱為NativeAPI)進行通信

① 出現(xiàn)在各OpenStack各組件和第三方的軟件或硬件之間旦签。如Cinder和存儲后端設備之間的通信;又如Neutron的agent(或者說插件)和網(wǎng)絡設備之間的通信寸宏。這些通信都需要調(diào)用第三方設備或第三方軟件的API(Native API)宁炫。

  1. OpenStack中幾種不同的存儲

1)OpenStack的三種存儲服務:Glance,Swift,Cinder

① Glance(鏡像存儲): 一個鏡像管理服務,本身不具備存儲功能氮凝,它的后端可以接其它的存儲系統(tǒng)羔巢,可以是存儲設備,本地存儲罩阵,Swift竿秆,也可以是亞馬遜S3等。

附:三種存儲概念:

文件系統(tǒng):(有POSIX接口)如Glance里的GFS稿壁,Hadoop里的HDFS

塊存儲:如EMC設備幽钢,華為的SAN設備,NetApp傅是;“散存儲”一般都提供塊存儲匪燕。

對應Cinder,其實Cinder本身也并不是提供數(shù)據(jù)存儲的喧笔,它也需要接一個存儲的后端帽驯,即EMC的散設備等,及最新流行的開源的分布式存儲Ceph(可提供塊存儲服務)书闸。

對象存儲:對應Swift尼变,典型代表如亞馬遜的AWS S3。它是通過RESTful Web API去訪問的浆劲,它的優(yōu)勢在于可以很方便地去訪問存儲的數(shù)據(jù)享甸。

② Cinder

給OpenStack提供塊存儲的接口。它有一個很重要的功能叫卷管理功能梳侨。虛擬機并不直接去使用存儲設備(或使用后端的存儲系統(tǒng))蛉威,它使用的是虛擬機上的塊設備,可稱為卷(Volume)走哺,實際上Cinder就是去創(chuàng)建和管理這些Volume蚯嫌,并且把它掛載到虛擬機上。

③ Swift

提供對象存儲服務丙躏。如果使用文件系統(tǒng)择示,當數(shù)據(jù)量特別大的時候,存儲性能會急劇下降晒旅。而對象存儲拋棄了目錄樹的結(jié)構栅盲,用一種扁平化的結(jié)構去管理數(shù)據(jù)。實際上Swift只有三層結(jié)構:Account(關聯(lián)賬戶), Container(容器废恋,對Object分類), Object (最終的數(shù)據(jù)/即文件)谈秫。

  1. OpenStack工作流程

OpenStack工作流程 相當復雜(有五十多個步驟)扒寄。虛擬機創(chuàng)建的四個階段 :

scheduling , networking ,block_device_mapping, spawing

  1. OpenStack的部署架構

1)OpenStack各個項目,組件按一定方式安裝到實際的服務器節(jié)點上拟烫,實際的存儲設備上该编,然后通過網(wǎng)絡把它們連接起來,這就是OpenStack的部署架構硕淑。

2)OpenStack部署分為單節(jié)點部署和多節(jié)點部署(集群部署)

3)OpenStack的部署架構不是一層不變的课竣,而是根據(jù)實際需求設計不同的實施方案。

4)OpenStack的簡單部署架構:

附:三種網(wǎng)絡:

①(綠色)管理網(wǎng)絡:OpenStack的管理節(jié)點(或管理服務)對其它的節(jié)點進行管理的網(wǎng)絡置媳。它們之間有如不同組件之間的API調(diào)用于樟,虛擬機之間的遷移等

②(藍色)存儲網(wǎng)絡:是計算節(jié)點,訪問存儲服務的網(wǎng)絡拇囊。包括向存儲設備里讀寫數(shù)據(jù)的流量基本上都需要從存儲網(wǎng)絡走迂曲。

③(黃色)服務網(wǎng)絡:是由OpenStack去管理的這些虛擬機對外提供服務的網(wǎng)絡。

四種節(jié)點:

①控制節(jié)點:是OpenStack的管理節(jié)點寂拆,先前介紹的OpenStack大部分服務都是運行在控制節(jié)點上奢米。如keystone認證服務抓韩,Glance管理服務等纠永。

注:特別的,Nova和Neutron這兩個組件必須采用分布式部署谒拴。

對于Nova尝江,因為Nova-Compute是控制和管理虛擬機的,所以它必須部署在計算節(jié)點上英上,而Nova其它幾個服務則應該部署在控制節(jié)點上炭序。特別要強調(diào)的是,Nova-Compute和Nova-Conductor一定不能部署在同一個節(jié)點上苍日,因為二者分開的目的就是為了解耦惭聂。

對于Neutron,Neutron的插件或Agent需要部署在網(wǎng)絡節(jié)點和計算節(jié)點上相恃,而其它部分辜纲,如Neutron Server可以部署在控制節(jié)點上。

②計算節(jié)點:指實際運行虛擬機的節(jié)點拦耐,就是OpenStack的管理的那些虛擬機實際上最后是在計算節(jié)點上運行的耕腾。

③存儲節(jié)點:可以是提供對象存儲的Swift的節(jié)點,或者是Swift集群的Proxy節(jié)點杀糯,也可以是一個其它服務的存儲后端扫俺。

④ 網(wǎng)絡節(jié)點:主要是實現(xiàn)網(wǎng)關和路由的功能。

5)OpenStack的復雜部署架構:要點如下:

①規(guī)模較大的情況下固翰,把各種管理服務部署到不同的服務器上狼纬。

② 把OpenStack的同一個服務部署到不同的節(jié)點上羹呵,形成雙機熱備或者多機熱備的高可用集群。(或者可用負載均衡集群的方式去實現(xiàn)高可用)

③ 在復雜的數(shù)據(jù)中心環(huán)境中畸颅,考慮如何與第三方服務進行對接和集成担巩。(如LDAP服務,DNS服務等)

第三章 OpenStack各組件解析(基礎)

1.Nova組件解析

  1. Nova的架構
    除了先前介紹的七大組件外没炒,在此補充兩個組件:nova-conslole涛癌,nova-consoleauth,它們的作用是通過支持VNC 或SPICE(獨立計算環(huán)境簡單協(xié)議)客戶端來訪問虛擬機界面送火。
    SPICE協(xié)議支持USB設備和多屏顯示等功能拳话,使用它需修改nova.conf文件。
  2. Nova對虛擬機的調(diào)度機制
    ①placement (放置): 把虛擬機放在哪個物理機上啟動
    ②migration(遷移):從哪個物理機遷移到哪個物理機
    *實際上Nova中的調(diào)度器(Scheduler)只完成了placement (放置)的工作种吸,migration(遷移)實際上是由其它組件協(xié)同完成的弃衍。
    **配置Nova.conf文件:Nova-Scheduler基于Filters對虛擬機進行調(diào)度的機制分為兩步,第一步是通過Filters篩選宿主機(含有Compute)這坚俗,第二步是對虛擬機進行排序镜盯,Nova中該排序叫稱重(weighting),最終完成調(diào)度算法猖败,決定了應用哪臺宿主機上啟動哪臺虛擬機速缆。
    注:在nova.conf中可以通過ram_allocation_ratio參數(shù)設置內(nèi)存的超配比例,其前提是使用RamFilter恩闻。
  1. Swift組件解析
    1)Swift歷史相對較長艺糜,比較獨立,它和其它組件的耦合度比較低幢尚,有自己完整的存儲體系破停,不依賴第三方軟件或設備(如不依賴keystone做用戶認證和建權)。
    ★對象存儲:采用RESTful接口尉剩,支持直接從互聯(lián)網(wǎng)訪問存儲系統(tǒng)進行數(shù)據(jù)的讀寫真慢。
    2)Swift接口:它和其它組件接口類似,也是RESTful的Web API理茎,總共有四個部分組成:第一個是HTTP操作(GET,POST,PUT或DELETE)黑界;第二個是認證信息(主要是用戶的身份信息);第三個是指示資源地址的URL(包含域名或地址及Account, Container,Object)功蜓;第四個是(可選項)數(shù)據(jù)和元數(shù)據(jù)园爷。
    3)Swift其它要點:
    Swift的架構:整體架構是RESTful API,它是通過一個叫Proxy Server來實現(xiàn)的式撼。(可對它進行擴展童社,做Load Balancer,用它去接收上面的HTTP請求著隆,然后把請求轉(zhuǎn)發(fā)到實際的StorageServer上)
    搭建Swift時的注意事項:
    a.(小規(guī)模集群)采用全對等架構扰楼,即它的每個(Server)節(jié)點都一樣呀癣。
    b.用Load Balancer把服務器組成一個集群。
    c. (小規(guī)模集群)每個服務器是一個zone弦赖。
    d. 小規(guī)模Swift集群项栏,服務器數(shù)量最少是5個。(或說最小集群是五個服務器)
    e. 不要用虛擬機和RAID蹬竖。(不要把Swift放到虛擬機里去做實現(xiàn)沼沈。)
    附:Swif 2.0的新功能:
    a. 存儲策略(核心功能):讓用戶能夠選擇數(shù)據(jù)的存儲策略。
  2. Cinder組件解析
    1)傳統(tǒng)數(shù)據(jù)中心的存儲設備:SAN或盤陣币厕,指一類設備列另,通過網(wǎng)絡連接給服務器提供存儲空間。SAN設備和服務器之間的網(wǎng)絡連接主要有兩種形式旦装,第一種叫Fibre Channel(FC)页衙,用專用光線連接網(wǎng)絡; 另外一種叫iSCSI,基于以太網(wǎng)協(xié)議/IP協(xié)議阴绢。
    注:Cinder存儲服務可以為虛擬機提供云硬盤店乐。
    2)Cinder API
    ①不同于Swift的RESTful API,它提供一些操作和管理功能
    ②實際流量是不通過Cinder的這些組件的呻袭,而是直接通過存儲設備和服務器之間的網(wǎng)絡連接走的眨八,該連接可以是FC(光纖通道)或iSCIS(基于IP的數(shù)據(jù)傳輸通道)傳輸數(shù)據(jù)到服務器。
  1. CinderVolume

① 通過Driver適配其它設備棒妨。(屏蔽底層硬件異構性)

  1. Neutron組件解析
    1)傳統(tǒng)數(shù)據(jù)中心的網(wǎng)絡:它分為幾個層(Tier)踪古,首先是服務器接入的第一級交換機叫接入交換機(往往在機架的頂部又稱為(TOR)架頂交換機)含长;往上會接入一個匯聚層的交換機叫匯聚交換機(往往放在一排機架的頂頭位置)券腔;再往上會接入核心交換機,它把匯聚交換機連接起來拘泞,往往不只一個纷纫。
    2)根據(jù)ISO網(wǎng)絡模型,網(wǎng)絡分為七個層(此處是協(xié)議棧里的層陪腌,layer)辱魁,OpenStack和Neutron主要關注其中的二三層,分別是數(shù)據(jù)鏈層和網(wǎng)絡層诗鸭。
    3)在OpenStack和Neutron出現(xiàn)之前的虛擬化網(wǎng)絡:用Qauntum去虛擬化網(wǎng)絡染簇,它使用linux系統(tǒng)里的一個軟件叫虛擬網(wǎng)橋,它實現(xiàn)的網(wǎng)橋不存在物理信號問題强岸,可簡單為它是一個二層的交換機(跑在服務器虛擬機內(nèi)部锻弓,把虛擬機都連接到此交換機上),可用它來搭建一個虛擬化環(huán)境蝌箍,但是如果放到云環(huán)境中去青灼,涉及租戶間流量隔離問題暴心,此網(wǎng)橋就不滿足需求了,因為它是連通的(把所有虛擬機連接在同一個虛擬網(wǎng)絡里)杂拨,跟普通交換機無太大區(qū)別专普。
    4)Nova中的一個管理網(wǎng)絡模塊Nova Network在前面網(wǎng)橋的基礎上增加了一個模塊,它可以有兩種工作模式:①Flat DHCP工作模式②基于VLAN的隔離 弹沽,它勉強滿足了云的要求檀夹,所以可在一個簡單的,對網(wǎng)絡要求不高的云計算環(huán)境中使用NovaNetwork實現(xiàn)一個比較簡單的網(wǎng)絡策橘。
    5)Neutron功能
    ①VLAN隔離
    ② 軟件定義網(wǎng)絡(SDN)
    如L2-in-L3隧道击胜,GRE 隧道等,還支持OpenFlow(SDN協(xié)議)
    ③ 第三方API擴展
    ④ 第三方Plugin擴展
    注:可見通過Neutron役纹,租戶可以定制rich topology的虛擬網(wǎng)絡偶摔;可以通過各種agent和plugin實現(xiàn)具體功能并和第三方設備,軟件對接促脉。
    eg.構建一個基于三層架構的Web服務:
    Web頁面服務器辰斋;應用服務器;數(shù)據(jù)庫服務器
  2. Horizon組件解析
    1)提供可視化GUI瘸味。OpenStack原生的Horizon滿足不了需求宫仗,需在其上做二次開發(fā)。
    2)Horizon內(nèi)部架構
    可參照python的一個Web應用框架django旁仿。Horizon的內(nèi)部設計分為三個層次:
    ① Dashboard ② PanelGroup③ panel

Horizon三級代碼組織形式:
① horizon: 表格藕夫,標簽頁,表單枯冈,工作流毅贮,base.py文件(實現(xiàn)動態(tài)加載panel)

② openstack_dashboard: dashboard子文件(包含各個面板的實現(xiàn)代碼,即業(yè)務邏輯都在里面尘奏,它會去加載或調(diào)用horizon文件夾里的那些組件)

6.Glance組件解析
1)Glance架構:上層Glance API Server(提供RESTful API) ,所有訪問請求會通過它滩褥;
Registry Server(提供鏡像注冊和檢索服務);Store Adapter【和Cinder類似炫加,可使用不同存儲后端瑰煎,如Filesystem Store(可理解為Glance本地的一個文件存儲), 還有Swfit Store,S3Store, HTTP Store ,這些都是通過HTTP協(xié)議來訪問的俗孝。所以Glance可以看成是一個典型的對象存儲應用酒甸。】
2) 和Swift一樣赋铝,可以把Glance的API Server做橫向擴展插勤,然后給它做一個負載均衡的集群,下面再轉(zhuǎn)到實際的存儲后端去。但不同的情況是饮六,Glance存儲和管理的鏡像其垄,有的鏡像用戶訪問量特別巨大,所以雖然對Glance的API Server做了負載均衡卤橄,實際的后端訪問負載還是會落到一個點上绿满,給它造成很大壓力。為解決這個問題Glance提供 了一種緩存機制窟扑,使每個通過Glance到達服務器的Server端的鏡像都會緩存到API Server上喇颁,如果我們有多個API Server,隨著用戶訪問請求的增多嚎货,被經(jīng)常訪問的同一個鏡像會在每一個API Server上都有一份橘霎,后續(xù)再有訪問請求的時候,它就會直接調(diào)用API Server上的這個鏡像文件殖属,而不會再去訪問到存儲后端上來姐叁。而且這個機制對終端用戶來說是透明的,即終端用戶并不清楚Glance服務獲取的這個鏡像到底存在哪里洗显。(注:如果我們只有一個節(jié)點提供API服務外潜,這種緩存機制就沒有意義了。)
3) 緩存管理注意事項:
a. 控制cache總量的大心铀簟(它有cache總量大小的控制):周期性的運行一個命令來處理cache總量的大小限制处窥。
b. 清理狀態(tài)異常的cache文件。
c. 預熱某些熱門鏡像到新增的API節(jié)點中:通過命令預先把一些比較熱門的鏡像先加載到新增的API節(jié)點中玄组。
d. 手動刪除緩存鏡像來釋放空間

  1. KeyStone組件解析
    1)KeyStone的作用:
    a.權限管理:用戶滔驾,租戶,角色(Role,keystone訪問控制機制的核心)俄讹。
    ★注:用戶和租戶之間是多對多的關系哆致。可通過Role進行權限管理以及將同一個用戶分配到不同的tenant颅悉。
    b.服務目錄:服務沽瞭,端點
    2)keystone只是云安全的一部分迁匠,二者不可等同剩瓶。公有云上常見的安全防護手段:
    a.安全訪問:允許使用安全的Https訪問
    b.內(nèi)置防火墻功能:通過配置內(nèi)置防火墻讓云上的環(huán)境或應用更安全
    c.加密數(shù)據(jù)存儲
    d.幫助租戶監(jiān)測安全狀況:主動監(jiān)測租戶的安全狀況并給出提示

問題集:
1)比較Swift和Cinder兩種存儲之間的異同
異:Swift比較獨立,它和其它組件的耦合度比較低唆姐,有自己完整的存儲體系僵娃,不依賴第三方軟件或設備(如不依賴keystone做用戶認證和建權),采用RESTful接口跌捆,支持直接從互聯(lián)網(wǎng)訪問存儲系統(tǒng)進行數(shù)據(jù)的讀寫。

?而Cinder本身并不是提供數(shù)據(jù)存儲的枝缔,它需要接一個存儲的后端,即EMC的散設備等,它有一個很重要的功能叫卷管理功能愿卸。虛擬機并不直接去使用存儲設備(或使用后端的存儲系統(tǒng))灵临,它使用的是虛擬機上的塊設備,可稱為卷(Volume)趴荸,實際上Cinder就是去創(chuàng)建和管理這些Volume儒溉,并且把它掛載到虛擬機上。

同:二者整體架構都是RESTful API发钝,但Swift是通過一個叫ProxyServer來實現(xiàn)的顿涣。Cinder API不同于Swift的RESTful API,它提供一些操作和管理功能酝豪。

2)比較Neutron和Nova-Network的異同
Nova Network只是早先Nova中的一個管理網(wǎng)絡模塊涛碑,它在網(wǎng)橋的基礎上增加了一個模塊,它可以有兩種工作模式:①Flat DHCP工作模式②基于VLAN的隔離孵淘,它勉強滿足了云的要求蒲障,所以可在一個簡單的,對網(wǎng)絡要求不高的云計算環(huán)境中使用Nova Network實現(xiàn)一個比較簡單的網(wǎng)絡瘫证。Neutron做為一個Openstack項目出現(xiàn)之后晌涕,租戶可以定制rich topology的虛擬網(wǎng)絡;可以通過各種agent和plugin實現(xiàn)具體功能并和第三方設備痛悯,軟件對接余黎。

第四章 OpenStack各組件解析(進階)

  1. Ceilometer組件解析

1) Ceilometer又稱為Openstack Telemetry: 遠程測量收集數(shù)據(jù)
2) Ceilometer主要目的:為計費提供數(shù)據(jù)支持
3) 計費用和監(jiān)控用計量數(shù)據(jù)的區(qū)別:
a. 側(cè)重點 b.不可抵賴性
4) Ceilometer要點:
a. 原始數(shù)據(jù)的來源:
①通過AMQP消息中間件收集各個組件發(fā)出的消息
②通過Ceilometer的agent(可擴展)調(diào)用Openstack各個組件的API獲得數(shù)據(jù)
注:支持第三方的agent,plugin或driver來擴展Openstack是常用的手段载萌。
③在每個計算節(jié)點上運行Ceilometer的polling agent獲得虛擬機的信息惧财。
b. 數(shù)據(jù)的存儲:
① 和Nova及Cinder等使用MYSQL作為默認的后端存儲不一樣,Ceilometer默認的后端數(shù)據(jù)庫是MongoDB(是一個key-value數(shù)據(jù)庫)扭仁,當然它也可以用Hbase垮衷,MYSQL等數(shù)據(jù)庫。
c. (如何提供給)第三方系統(tǒng)
① 通過Ceilometer 的API獲得計量數(shù)據(jù)乖坠,設置報警條件和預值搀突。

  1. Heat組件解析
    Heat又稱為Ochestration:把一個IT系統(tǒng)的各個模塊和資源組織,調(diào)度起來熊泵。它和AWS里的CloudFormation比較類似仰迁,它按照用戶寫的模板或腳本(Template)把Openstack的各種資源(如虛擬機或卷)實例化并組織起來形成一個完整的應用。按照Tempalte生成的東西叫stack(棧)顽分。Tempalte寫了創(chuàng)建一個stack需要用到哪些資源徐许,及這些資源的相互關系。Heat的主要任務就是負責stack的創(chuàng)建卒蘸,更新和銷毀雌隅。(創(chuàng)建命令:heat stack-create … -template-file …)
    附:完整的Template包括,version ,description , resources,parameters, outputs
    *更復雜的結(jié)構:創(chuàng)建一個wordpress網(wǎng)站恰起;創(chuàng)建一個三層架構的網(wǎng)站修械;可以拆分為幾個Template分別實現(xiàn)不同功能。
    注:Heat可以和Ceilometer配合使用來實現(xiàn)auto scaling检盼,另外Heat可兼容CloudFormation模板祠肥。
  2. Trove組件解析
    1) Trove的功能:根據(jù)用戶的請求創(chuàng)建一個包含數(shù)據(jù)庫的虛擬機
    2) 數(shù)據(jù)庫的建立:可以是創(chuàng)建完虛擬機后由trove去安裝;也可事先做好trove的鏡像(里面已經(jīng)安裝好數(shù)據(jù)庫了)梯皿。后者效率更高仇箱,Trove支持關系型數(shù)據(jù)庫MySQL, NoSQL數(shù)據(jù)庫,MongoDB, Cassandra等
    3) Trove的功能實現(xiàn)依賴四個組件:
    a. Trove API:提供RESTful API
    b. Taskmanager: 完成管理命令的執(zhí)行(創(chuàng)建/銷毀/管理示例东羹,操作數(shù)據(jù)庫)剂桥,它的主要工作方式主要是去監(jiān)聽RabbitMQ這個中間件上的MQP等調(diào)用請求并實現(xiàn)。
    c. Trove-Conductor: 和Nova-Conductor比較類似属提,負責和數(shù)據(jù)庫交互权逗。
    d. Guest agent: 類似于Neutron agent ,對應數(shù)據(jù)庫
    4) Trove目前面臨的挑戰(zhàn):不支持自動配置數(shù)據(jù)庫的HA
  3. Sahara組件解析(Sahara原名叫Savanna)
    1) Sahara作用:
    a. 在Openstack上快速創(chuàng)建Hadoop集群
    b. 利用Iaas上空閑的計算能力做大數(shù)據(jù)的離線處理
    2) Sahara的架構(原理)要點:
    a. Horison:里包含Sahara的dashboard
    b. Plugin:用來支持Hadoop各種發(fā)行版
    c. Swift: 存儲持久化數(shù)據(jù)(不該再放到Hadoop的HDFS里冤议,因為它的生命周期和虛擬化的Hadoop集群的生命周期一樣)
    d. Sahara API:不同于其它組件,它的API分為兩個服務入口斟薇,一個叫Service.api,另外一個叫Service.edp.api恕酸。
    3) Sahara的使用模式
    ① Iaas模式/管理模式:
    a. 節(jié)點(此處不同于先前講的計算節(jié)點等)堪滨,它是運行Hadoop集群的機器。
    b. 節(jié)點組:按照節(jié)點類型劃分蕊温,通過節(jié)點組模板定義節(jié)點組
    c. 集群:完整的Hadoop集群袱箱,通過集群模板定義集群
    d. Job:(有工作流的性質(zhì)),它可能是若干個Hadoop job組織起來形成Sahara
    ② Pass,DAaas模式/用戶模式/EDP模式
    a. 前提:至少創(chuàng)建一個Hadoop集群
    b. 準備工作:上傳要處理的數(shù)據(jù)义矛;編寫job并上傳发笔;給Sahara一個三元組(即調(diào)用EDP API時的參數(shù),分別是使用哪個集群凉翻,數(shù)據(jù)元素在哪了讨,要運行的job是什么)
  4. Ironic組件解析
    1) 用Ironic(由單詞iron演化而來)實現(xiàn)對物理機械的管理或者說用物理機器實現(xiàn)云服務。
    2) 它和Openstack在部署架構上管理虛擬機和物理機器的區(qū)別:
    a. 在控制節(jié)點上多了一個Ironic API組件
    b. 在Compute Node上除了Nova-Compute, Neutron agent以外制轰,還有一個Ironic Conductor 前计。(注:此處的節(jié)點和先前的節(jié)點不一樣,它和Cinder Volume類似艇挨,并不是實際提供存儲資源的節(jié)點)
    3) 它和Openstack在計算資源調(diào)度流程上或啟動一臺機器的工作流程上的區(qū)別:
    物理機器節(jié)點上的Nova Compute調(diào)用Ironic API残炮,實際啟動的物理機器節(jié)點或說實際提供計算資源的物理機器節(jié)點是由Ironic Conductor通過PXE ,IPMI遠程管理的。
    4) Ironic實際上是由Nova的一個部分演化而來(以前Nova中專門管理物理機器的Novadriver)(同樣的缩滨,先前說的Cinder是Nova Volume演化而來)
    問題集:
    Heat中的模板和Sahara中的模板的異同:
    異:
    Heat和AWS里的CloudFormation比較類似,它按照用戶寫的模板或腳本(Template)把Openstack的各種資源(如虛擬機或卷)實例化并組織起來形成一個完整的應用。按照Tempalte生成的東西叫stack(棧), Tempalte寫了創(chuàng)建一個stack需要用到哪些資源脉漏,及這些資源的相互關系苞冯。
    Sahara 的Iaas模式/管理模式中,通過節(jié)點組模板定義節(jié)點組侧巨,通過集群模板定義集群舅锄。
    同:都包含了配置信息,用來對組件進行配置司忱,通常包括version ,description , resources皇忿,parameters, outputs等信息。

第五章 OpenStack實際操作

  1. OpenStack部署環(huán)境準備
    1) 創(chuàng)建一個路由器(Router);創(chuàng)建一個交換機(用Neutron 中的Network坦仍,它相當于交換機鳍烁,需配置子網(wǎng)(廣播域)),最后把兩者連接起來繁扎。為了讓網(wǎng)絡里的連接其它設備能夠正常訪問公網(wǎng)(Internet)需用Floating IP(也是Netron中的一個概念幔荒,它實際上就是云計算環(huán)境可用的公網(wǎng)IP),它有兩種用法,一是將其綁定到路由器上梳玫,二是將其綁定到云主機上(讓這臺云主機和外網(wǎng)相連通爹梁。它顯示有2個IP,但實際只有一個IP,它是通過Neutron的一種機制把兩個IP映射起來提澎。當然我們也可通過Neutron實現(xiàn)修改虛擬機真正的IP地址和MAC地址)姚垃。
    2) 創(chuàng)建云主機(Instance)
  2. KeyStone的安裝部署
    a. 登錄Controller節(jié)點安裝KeyStone(apt-get),并修改KeyStone配置文件【修改etc目錄下keystone.conf文件中的三個部分:和數(shù)據(jù)庫連接相關的設置盼忌;修改或設置寫log的位置(log_dir=/var/log/keystone)莉炉;設置keystone服務和其它服務共享的一個token】

b. 創(chuàng)建用戶(需要帶兩個參量:token和url),創(chuàng)建租戶碴犬,創(chuàng)建角色絮宁;創(chuàng)建服務
c. (Controller節(jié)點上)把常用參數(shù)(username,password,tenant-name,auth-url等)作為環(huán)境變量導出

  1. Glance的安裝部署
    a. 安裝Glance(安裝Glance服務及Glance的python客戶端),并修改Glance配置文件【主要修改etc目錄下glance-api.conf文件和glance-registry.conf服协。首先進行glance-api.conf和glance-registry.conf文件中和數(shù)據(jù)庫連接相關的配置绍昂,且檢查/var/lib/glance目錄,如果存在sqlite數(shù)據(jù)庫文件(glance.sqlite)需將其刪除偿荷,防止誤讀窘游;而后修改glance-registry.conf】

b. 創(chuàng)建Glance數(shù)據(jù)庫(MySQL)并同步(glance-manage db_sync)

c. 用keystone命令給Glance創(chuàng)建用戶并添加該用戶到先前的租戶里

d. 修改glance-api.conf文件和glance-registry.conf文件中keystone相關的設置,

并在keystone中注冊Glance以及它的端點跳纳。

e. 上傳鏡像

  1. Nova的安裝部署
    1) 在Controller節(jié)點進行安裝忍饰,此處不能和先前一樣寫個Nova,要寫清楚具體安裝哪些組件(如Scheduller,Conductor,Nova-api,Nova的python客戶端等)寺庄。

2) 在Compute節(jié)點安裝Nova-compute-kvm(此處kvm實際上是由qemu模擬的一個虛擬機)艾蓝,沒有Neutron則需安裝nova-network力崇,nova-api-matadata .
3) 同先前組件一樣,先修改nova.conf相關配置赢织,同樣要去檢查/var/lib/glance目錄亮靴,如果存在sqlite數(shù)據(jù)庫文件將其刪除,創(chuàng)建數(shù)據(jù)庫(MySQL)并同步(把數(shù)據(jù)項或信息填充到現(xiàn)在的數(shù)據(jù)庫于置,glance-manage db sync茧吊,不同于先前的命令,此處無下劃線)
4) 繼續(xù)修改nova.conf中keystone相關的設置八毯,在keystone里創(chuàng)建用戶并注冊服務和端點搓侄。

5) 在Compute節(jié)點上配置nova.network.api.API

6) 在控制節(jié)點上創(chuàng)建網(wǎng)絡

7) 啟動虛擬機(用nova boot命令)

  1. OpenStack支撐服務的安裝配置

支撐服務:NTP(時間同步服務),mysql數(shù)據(jù)庫服務话速,RabbitMQ(消息中間件服務)讶踪。配置host文件,實現(xiàn)通過主機名訪問虛擬機尿孔。

1)NTP服務:它有兩個作用俊柔,一是將本機時間和網(wǎng)絡上的一臺時間同步器去同步;另外一個作用是將本機作為一個時間同步器提供給其它節(jié)點去使用活合。

在Opentstack部署環(huán)境中雏婶,建議讓Controller結(jié)點去和互聯(lián)網(wǎng)上的一個時間同步器同步,讓其它結(jié)點和這個Controller結(jié)點同步白指,這樣一來留晚,其它結(jié)點和這個Controller結(jié)點的時間同步就在一個局域網(wǎng)內(nèi),時間同步性更高告嘲。安裝完NTP后為實現(xiàn)把Controller結(jié)點做為時間同步源错维,需在其它結(jié)點上編輯它的配置文件(etc文件夾下的ntp.conf,加上servercontroller)。

2)在Contorller結(jié)點上安裝mysql服務(需安裝python-mysqldb客戶端和mysql-server服務進程)橄唬,并修改配置文件(etc文件夾中mysql下的my.cnf,修改bind-address(綁定訪問mysql服務器所需要的IP地址)赋焕;修改或添加數(shù)據(jù)庫引擎配置(mysql默認或推薦的數(shù)據(jù)庫引擎是InnoDB)。

注:【實際運用中可把數(shù)據(jù)庫服務安裝到單獨的一個機器上(可配置全ssd)仰楚,公司里常用全ssd服務器來支撐數(shù)據(jù)庫服務隆判,提高其性能】

其它結(jié)點上不用再安裝數(shù)據(jù)庫服務,只需安裝一個python客戶端即可僧界,Openstack就可以訪問Contorller結(jié)點上的那個數(shù)據(jù)庫了侨嘀。

附:安裝mysql時會創(chuàng)建一個匿名用戶和一些Database,為正常使用起見可將其清除(可手動清除捂襟,也可用mysql提供的一個命令:mysql_secure_installtion)咬腕。

3)在Contorller結(jié)點上安裝RabbitMQ服務。消息中間件還可用別的如Qpid葬荷,ZeroMQ

  1. 通過圖形界面使用OpenStack

1)除了安裝horizion(dashboard)涨共,還需安裝apache等其它幾個服務纽帖,這些都是為了顯示動態(tài)網(wǎng)頁所需要的。另外還要刪除一個包(openstack-dashboard-ubantu-theme)煞赢,因為它影響到horizon圖形界面的顯示抛计。然后修改配置文件(etc中openstack-dashboard下的一個.py結(jié)尾的文件local_settings.py)哄孤,修改BACKEND和LOCATION(它們是對顯示的web界面緩存的設置)照筑,讓其參數(shù)與memcached中一致。

  1. 通過命令行使用OpenStack

1)先前多數(shù)是在Controller節(jié)點上用過命令行訪問本地的服務瘦陈,此處介紹遠程訪問的方法凝危。為了模擬遠程訪問的環(huán)境,可在使用的公有云里創(chuàng)建一個ubuntu的云主機作為客戶端(還是接入先前的子網(wǎng))晨逝,并修改配置文件(hosts)蛾默。然后安裝相應客戶端(如python-novaclient)。

注:可以創(chuàng)建腳本捉貌,把導出環(huán)境變量的命令都放在里面支鸡,方便以后使用(里面的命令需根據(jù)自己的環(huán)境進行修改)。之后不直接執(zhí)行腳本趁窃,而是用source命令執(zhí)行腳本牧挣,這樣才能把腳本里設置的環(huán)境變量帶到當前用戶的操作環(huán)境中。(可用echo命令查看環(huán)境變量設置是否成功)

第六章 OpenStack擴展話題

  1. OpenStack自動化部署

1)分為三個層次:

A. 單節(jié)點自動安裝:常用于準備一個開發(fā)環(huán)境醒陆,常用工具是DevStack

B. 集群化安裝:最常用工具是puppet

C. 多個集群安裝部署:典型代表工具是Mirantis公司推出的fuel

2)DevStack的安裝演示(單節(jié)點自動安裝的實際操作過程)

a. 創(chuàng)建云主機瀑构。更新一下安裝源(apt-get update),安裝git刨摩,通過git clone命令下載DevStack的源代碼寺晌。然后用devstack文件夾里提供的一個工具創(chuàng)建一個用來安裝和運行DevStack的用戶(./create-stack-user.sh)。將下載的源碼在當前用戶的home文件夾下拷貝一份(可從本地拷貝或再次從源端下載)澡刹,找到devstack文件夾中samples下的local.conf文件,拷貝一份到上一級目錄并修改其中的相關配置(把HOST_IP修改成當前當前機器的內(nèi)網(wǎng)IP)呻征。

b. 運行./stack.sh腳本,進入自動安裝過程罢浇。

  1. Hadoop云化時存在的問題

1)Hadoop是用來做大數(shù)據(jù)處理的一個工具陆赋,它也有自己龐大的生態(tài)圈,其中最重要的兩個軟件是HDFS(分布式存儲系統(tǒng))己莺,MapReduce(任務調(diào)度框架)

注:HDFS把文件分成塊奏甫,把塊做三個副本存儲到不同節(jié)點上,形成一個比較高可靠性的文件系統(tǒng)凌受;MapReduce把我們提交的數(shù)據(jù)處理任務(job)拆分成不同的task分發(fā)到不同的節(jié)點上阵子,以實現(xiàn)并行處理。MapReduce最大的特點是能夠把任務調(diào)度到離數(shù)據(jù)近的節(jié)點上胜蛉,盡量減少數(shù)據(jù)在網(wǎng)絡間的傳輸挠进,使我們可用通用廉價的X86服務器和網(wǎng)絡設備來構筑一個數(shù)據(jù)并行處理系統(tǒng)色乾。

★Openstack虛擬機調(diào)度和Hadoop任務調(diào)度實際上是兩個不同層次的資源調(diào)度。要把Hadoop做云化就需要解決兩個不同層次上的資源和任務調(diào)度問題领突。Hadoop最重要的兩個部分HDFS和MapReduce云化時也會出現(xiàn)相應問題暖璧,為解決相關問題Hadoop提供了一個由VMware主導的開源項目HVE(Hadoop Virtual Extensions)。

  1. 基于OpenStack實現(xiàn)Hadoop云化

1)Sahara分別從部署管理和提供數(shù)據(jù)處理服務兩個層次上對Hadoop云化做了一些工作君旦。

2)HDFS和Swift集成:在Hadoop集群里仍用本地根硬盤來構筑HDFS澎办,但是把數(shù)據(jù)源和job放在Swift里。此外金砍,由VMware主導的開源項目BDE(Big Data Extensions)局蚀,它和Openstack的Sahara很類似,但是在各個方面都做得比Sahara好得多恕稠,且它和HVE 集成做得很好琅绅。

  1. Ceph簡介

1)Ceph現(xiàn)在經(jīng)常被用來做為RBD設備提供塊存儲服務。

2)Ceph層次結(jié)構:

底層RADOS鹅巍,中間層LIBRADOS ,頂層RADOS GW, RBD, CEPH FS

① RADOS:可靠的千扶,自動化的,分布式的對象存儲骆捧。底層是一個完整的存儲系統(tǒng)澎羞,它的核心是OSD(Object Storage Daemon),Daemon是一個服務軟件(進程)凑懂,它和Cinder里定義的OSD(Object Storage Device)之間有很強的對應關系煤痕,可認為是其簡略版本。

注:不同于Swift存儲 的對象(文件)接谨,Ceph的對象實際上是把一個文件拆分成若干個Object摆碉,分別放到底層的存儲設備上。

★RADOS邏輯結(jié)構:OSDs , Monitors , Clients

注:此處的客戶端和Swift客戶端有本質(zhì)區(qū)別脓豪,Swift客戶端只是用Pyhon寫的一個供用戶使用能夠調(diào)用RESTful接口的客戶端程序而已巷帝,沒有它我們直接調(diào)用RESTful接口也可以讀寫Swift,但是在RADOS里如果沒有Clients,整個數(shù)據(jù)讀寫就難以實現(xiàn)扫夜,它是存儲系統(tǒng)的一部分楞泼。

★Ceph系統(tǒng)中的尋址流程(文件存儲到底層OSD上)
它首先把文件拆分成若干個Objects,然后把Objects放到PG組里面笤闯,每個組再通過CRUSH算法給它映射到不同的OSD上堕阔。此存儲過程特點是它每一步都是通過計算得到的,它中間沒有查表颗味,這使得Ceph擁有較好的擴展性超陆。
②LIBRADOS: 提供一組直接訪問RADOS的API

③ RADOSGW, RBD, CEPH FS:RADOS GateWay把底層對象存儲系統(tǒng)往外再次封裝,提供兼容Swift和亞馬遜S3對象存儲接口浦马,這個接口也是HTTP的时呀。RBD經(jīng)常作為Cinder的后端為虛擬機提供卷张漂。CEPH FS是在Ceph基礎上封裝了一個POSIX接口,形成文件系統(tǒng)谨娜。

  1. Ceph在OpenStack中的應用

1)Ceph在OpenStack中受歡迎的原因:

①有了Ceph航攒,可基于X86搭建分布式塊存儲系統(tǒng)

附:塊存儲有強一致性和高性能的要求,這對于Swift和HDFS都是沒有或比較弱的趴梢。

★Cinder支持Ceph提供的RBD設備漠畜,二者結(jié)合可基于X86普通服務器更加廉價方便地搭建一個塊存儲系統(tǒng)提供(卷)給虛擬機去使用。

②提供Swift兼容的對象接口

★Ceph和Swift仍不可互為替代垢油,二者比較如下:

47%4Y{}QJ@MGGG~56(R`OOD.png

案例一:目前OpenStack規(guī)模小盆驹,節(jié)點數(shù)量少圆丹,此時使用Swift節(jié)點浪費存儲滩愁,可選用Ceph

案例二:提供云盤服務(面對大量用戶,強調(diào)用戶體驗辫封,用戶可選存儲策略(Storage Policy))硝枉,此時選用Swift更好,它更好地支持規(guī)木胛ⅲ化部署妻味,有先進的Feature,成本比Ceph更低欣福。

④ 現(xiàn)在OpenStack所有存儲都(開始)支持Ceph作為后端

  1. OpenStack與Docker

附:HyperVisor:在一個宿主機上搭建環(huán)境责球,可在環(huán)境里創(chuàng)建虛擬機,再在虛擬機里裝客戶操作系統(tǒng)(Guest OS)拓劝,然后在其上面裝中間件雏逾,之后再裝應用等。

Container技術:另外一種虛擬化技術郑临,無需再裝Guest OS栖博,而直接基于宿主機操作系統(tǒng)來操作,可在其上做運行環(huán)境隔離厢洞,資源劃分等仇让,并形成容器,讓應用在容器中運行躺翻。容器之間底層是共享一個操作系統(tǒng)的丧叽,甚至可以共享一些公用的庫。和傳統(tǒng)的HyperVisor相比公你,它的優(yōu)勢在于省去了Guest OS的開銷踊淳;劣勢在于只能使用和宿主機相同的操作系統(tǒng)。

1)Docker:是基于容器的一個引擎省店,讓開發(fā)者可以打包應用嚣崭,并將其依賴包打到可移植的容器里笨触,而容器可發(fā)布到任何linux機器上。OpenStack里將Docker也看成是一種HyperVisor

2)OpenStack+Docker:(結(jié)合點)

①使用Swift做Docker鏡像的存儲后端

②Nova里有針對Docker的Driver或插件雹舀,可用Nova調(diào)度和管理Docker容器芦劣。

③使用Heat來實現(xiàn)Docker的Ochestration

④基于Neutron設計與實現(xiàn)適用于Docker的SDN方案

⑤使用Glance來管理Docker鏡像
……

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市说榆,隨后出現(xiàn)的幾起案子虚吟,更是在濱河造成了極大的恐慌,老刑警劉巖签财,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件串慰,死亡現(xiàn)場離奇詭異,居然都是意外死亡唱蒸,警方通過查閱死者的電腦和手機邦鲫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來神汹,“玉大人庆捺,你說我怎么就攤上這事∑ㄎ海” “怎么了滔以?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長氓拼。 經(jīng)常有香客問我你画,道長,這世上最難降的妖魔是什么桃漾? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任坏匪,我火速辦了婚禮,結(jié)果婚禮上呈队,老公的妹妹穿的比我還像新娘剥槐。我一直安慰自己,他們只是感情好宪摧,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布粒竖。 她就那樣靜靜地躺著,像睡著了一般几于。 火紅的嫁衣襯著肌膚如雪蕊苗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天沿彭,我揣著相機與錄音朽砰,去河邊找鬼。 笑死,一個胖子當著我的面吹牛瞧柔,可吹牛的內(nèi)容都是我干的漆弄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼造锅,長吁一口氣:“原來是場噩夢啊……” “哼撼唾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起哥蔚,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤倒谷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后糙箍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渤愁,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年深夯,在試婚紗的時候發(fā)現(xiàn)自己被綠了抖格。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡塌西,死狀恐怖他挎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情捡需,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布筹淫,位于F島的核電站站辉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏损姜。R本人自食惡果不足惜饰剥,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望摧阅。 院中可真熱鬧汰蓉,春花似錦、人聲如沸棒卷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽比规。三九已至若厚,卻和暖如春测秸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背铃拇。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拧廊,地道東北人吧碾。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓倦春,卻偏偏與公主長得像睁本,于是被迫代替她去往敵國和親呢堰。 傳聞我的和親對象是個殘疾皇子凡泣,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Nova Nova鞋拟,即計算服務,是OpenStack計算的彈性控制器航闺。Nova可以說是整個云平臺最重要的組件潦刃,Op...
    邵勝奧閱讀 4,165評論 0 8
  • OpenStack簡介 OpenStack版本發(fā)展 OpenStack版本系列字母以A~Z命名福铅,從2010年發(fā)布的...
    糯米藕閱讀 5,040評論 0 17
  • OpenStack簡介 OpenStack既是一個社區(qū)笆包,也是一個項目和一個開源軟件庵佣,它提供了一個部署云的操作平臺或...
    邵勝奧閱讀 17,660評論 0 3
  • 朋友看過后發(fā)來讀后感巴粪,說被虐了一地肛根,抱著求虐心理也看了下這本薄書派哲,結(jié)果就是芭届,被暴擊?? 覺得這是喬一專門為了秀恩愛出...
    Li_ky閱讀 523評論 3 1
  • 點擊關注,愛我別克制即硼。 ?Tips:由于作者廢話太多太過帥氣,導致本文章篇幅長谦絮,圖片多。請用流量觀看的吃瓜群眾先馬...
    千年笛閱讀 7,871評論 2 74