天天看點

OpenStack共享元件

一、雲計算的前世今生

  1、實體機架構,應用部署和運作在實體機上

  2、虛拟化架構,實體機上運作若幹虛拟機,應用系統直接部署到虛拟機上

  3、雲計算架構,虛拟化提高了單台實體機的資源使用率

二、OpenStack 簡介

  1、什麼是雲計算:雲計算是一種按使用量付費的模式,這種模式提供可用的、便捷的、按需的網絡通路, 進入可配置的計算資源共享池(資源包括網絡,伺服器,存儲,應用軟體,服務)

  2、雲計算所包含的幾個層次服務

   SaaS( Software as a Service): 把線上軟體作為一種服務。

   PaaS( Platform as a Service): 把平台作為一種服務。

   IaaS( Infrastructure as a Service):把硬體裝置作為一種服務。

  3、OpenStack:

   1)是由Rackspace和NASA共同開發的雲計算平台是一個開源的IaaS(基礎設施及服務)雲計算平台,讓任何人都可以自行建立和提供雲端運算服務

   2)每半年釋出一次

   3)用Python語言編寫

三、OpenStack社群與連結

  如何參與openstack社群

  1、社群 www.openstack.org, wiki.openstack.org

  2、郵件清單

   http://wiki.openstack.org/MailingLists#Development_List

   http://wiki.openstack.org/MailingLists#General_List

   http://wiki.openstack.org/MailingLists#Operators

  3、IRC #openstack on Freenode

   OpenStack Meeting http://wiki.openstack.org/Meetings

  4、如何貢獻代碼 http://wiki.openstack.org/HowToContribute

  5、源代碼管理 http://wiki.openstack.org/GerritWorkflow

  6、文檔 http://docs.openstack.org

四、openstack架構及優勢

1、openstack架構:

OpenStack共享元件
OpenStack共享元件
OpenStack共享元件

  2、OpenStack優勢:

  OpenStack為私有雲和公有雲提供可擴充的彈性的雲計算服務,這種服務雲必須是簡單部署并且擴充性強

   1、子產品松耦合

   2、元件配置較為靈活

   3、二次開發容易

OpenStack共享元件

五、openstack構成元件

  1、OpenStack共享服務元件:

   資料庫服務( Database Service ):MairaDB 及MongoDB

   消息傳輸(Message Queues):RabbitMQ

   緩存(cache): Memcached

   時間(time sync):NTP

   存儲(storge provider):ceph、GFS、LVM、ISICI等

   高可用及負載均衡:pacemaker、HAproxy、keepalive、lvs等

  2、OpenStack核心元件:

   身份服務( Identity Service ):Keystone

   計算( Compute ): Nova

   鏡像服務( Image Service ): Glance

   網絡 & 位址管理( Network ): Neutron

   對象存儲( Object Storage ): Swift

   塊存儲 (Block Storage) : Cinder

   UI 界面 (Dashboard) : Horizon

   測量 (Metering) : Ceilometer

   部署編排 (Orchestration) : Heat

六、ntp時鐘同步服務

  1、為什麼要有時間同步服務:

  随着時間的誤差,有些工作是無需進行時間精确即可以完成。但有些工作就必須精确時間進而可以完成目标任務。

  是以時間的同步有了需求。目前所使用的就是 Network Time Protocol 協。即網絡時間協定

  2、ntp時鐘同步服務:

   1.NTP 工作請求

    1)用戶端将采用随機端口向 NTP 伺服器 (UDP:123) 發出時間同步請求

    2)NTP 伺服器收到請求後會将發出調校時間

    3)NTP 用戶端接收到 NTP 伺服器的消息後,以進行調整,進而完成時間同步

   2.同步伺服器時間方式有2個:一次性同步(手動同步)、通過服務自動同步。

    1)一次性同步時間:ntpdate 時間伺服器的域名或ip位址

    Ip位址檢視可以通路:http://www.ntp.org.cn/pool.php

    ntpdate 120.25.108.11(選擇阿裡雲的)

  3.NTP 伺服器實作

   1)NTP 伺服器安裝

   # yum install ntp -y

   2)檢視 NTP 配置檔案是否存在

   # ls -l /etc/ntp.conf

   3)NTP 所涉及的程式

   ntpd

   ntpdate

   tzdata-update

   4)相關時間程式

   date

   hwclock

   5)NTP 所涉及檔案

OpenStack共享元件

   6)NTP 服務

   NTP 服務屬于 C/S 架構模式 , 在建立本地服務時最好與上層伺服器進行時間同步來給本地提供時間同步服務

   ntp.conf 說明

   restrict 來管理 NTP 權限控制

   用法 : restrict [ip] mask [netmask] parameter

OpenStack共享元件

   server 進行設定上端同步 NTP

   用法 : server [ip or hostname] [prefe]

OpenStack共享元件

   讓本地的ntpd與本地硬體時間同步

   # vim /etc/ntp.conf :

   server 127.127.1.0 # local clock

   fudge 127.127.1.0 stratum 10

   # systemctl start ntpd

   7)Linux 用戶端同步

    1) 手動同步

    ntpdate 192.168.1.100

    2) 實時同步

    # vim /etc/ntp.conf

     server 192.168.1.100(同步服務端ip的時間)

   # systemctl start ntpd

   8)檢視上層 NTP 服務狀态

   ntpq –p

OpenStack共享元件

七、Rabbitmq 消息隊列

  1、Rabbitmq 消息隊列:

  MQ 全稱為 Message Queue, 消息隊列( MQ )

  是一種應用程式對應用程式的通信方法。應用程式通過讀寫出入隊列的消息(針對應用程式的資料)來通信,而無需專用連接配接來連結它們。

  消息傳遞指的是程式之間通過在消息中發送資料進行通信,而不是通過直接調用彼此來通信,直接調用通常是用于諸如遠端過程調用的技術。排隊指的是應用程式通過隊列來通信。隊列的使用除去了接收和發送應用程式同時執行的要求。

  排隊指的是應用程式通過 隊列來通信。隊列的使用除去了接收和發送應用程式同時執行的要求。

  AMQP 即 Advanced Message Queuing Protocol:

  進階消息隊列協定,是應用層協定的一個開放标準,為面向消息的中間件設計。消息中間件主要用于元件之間的解耦,消息的發送者無需知道消息使用者的存在,反之亦然。

  AMQP 的主要特征是面向消息、隊列、路由(包括點對點和釋出 / 訂閱)、可靠性、安全。

  2、Rabbitmq概念:

    1.屬于一個流行的開源消息隊列系統。屬于AMQP( 進階消息隊列協定 ) 标準的一個 實作。是應用層協定的一個開放标準,為面向消息的中間件設計。用于在分布式系統中存儲轉發消息,在易用性、擴充性、高可用性等方面表現不俗。

    2.消息中間件主要用于元件之間的解耦,消息的發送者無需知道消息使用者的存在,反之亦然。

    3.AMQP 的主要特征是面向消息、隊列、路由(包括點對點和釋出 / 訂閱)、可靠性、安全。

  3、RabbitMQ特點:

   § 使用Erlang編寫

   § 支援持久化

   § 支援HA

   § 提供C# , erlang,java,perl,python,ruby等的client開發端

  4、RabbitMQ中的概念名詞:

   Broker:簡單來說就是消息隊列伺服器實體。

   Exchange:消息交換機,它指定消息按什麼規則,路由到哪個隊列。

   Queue:消息隊列載體,每個消息都會被投入到一個或多個隊列。

   Binding:綁定,它的作用就是把exchange和queue按照路由規則綁定起來。

   Routing Key:路由關鍵字, exchange根據這個關鍵字進行消息投遞。

   vhost:虛拟主機,一個broker裡可以開設多個vhost,用作不同使用者的權限分離。

   producer:消息生産者,就是投遞消息的程式。

   consumer:消息消費者,就是接受消息的程式。

   channel:消息通道,在用戶端的每個連接配接裡,可建立多個channel,每個

   channel代表一個會話任務

  5、RabbitMQ工作原理:

   MQ 是消費 - 生産者模型的一個典型的代表,一端往消息隊列中不斷寫入消息,而另一端則可以讀取或者訂閱隊列中的消息。 MQ 則是遵循了 AMQP協定的具體實作和産品。在項目中,将一些無需即時傳回且耗時的操作提取出來,進行了異步處理,而這種異步處理的方式大大的節省了伺服器的請求響應時間,進而提高了系統的吞吐量

OpenStack共享元件

   1)用戶端連接配接到消息隊列伺服器,打開一個channel。

   2)用戶端聲明一個exchange,并設定相關屬性。

   3)用戶端聲明一個queue,并設定相關屬性。

   4)用戶端使用routing key,在exchange和queue之間建立好綁定關系。

   5)用戶端投遞消息到exchange。

   6) exchange接收到消息後,就根據消息的key和已經設定的binding,進行消息路由,将消息投遞到一個或多個隊列裡

  6、Rabbitmq 的 metadata:

   中繼資料可以持久化在 RAM 或 Disc. 從這個角度可以把 RabbitMQ 叢集中的節

   點分成兩種 :RAM Node和 Disk Node.

   RAM Node 隻會将中繼資料存放在RAM

   Disk node 會将中繼資料持久化到磁盤。

   單節點系統就沒有什麼選擇了 , 隻允許 disk node, 否則由于沒有資料備援一旦重新開機就會丢掉所有的配置資訊 . 但在叢集環境中可以選擇哪些節點是 RAM node. 在叢集中聲明 (declare) 建立 exchange queue binding, 這類操作要等到所有的

   節點都完成建立才會傳回 :

   如果是記憶體節點就要修改記憶體資料 ,

   如果是 disk node 就要等待寫磁盤 , 節點過多這裡的速度就會被大大的拖慢

   隻要有一個節點是 Disc Node 就能提供條件把叢集中繼資料寫到磁盤 ,RabbitMQ 的确也是這樣要求的 : 叢集中隻要有一個 disk node 就可以 , 其它的都可以是 RAM node. 節點加入或退出叢集一定至少要通知叢集中的一個 disk node

八、Memcache 緩存系統

  1、緩存系統:

  在大型海量并發通路網站及openstack等叢集中,對于關系型資料庫,尤其是大型關系型資料庫,如果對其進行每秒上萬次的并發通路,并且每次通路都在

一個有上億條記錄的資料表中查詢某條記錄時,其效率會非常低,對資料庫而言,這也是無法承受的。

  緩沖系統的使用可以很好的解決大型并發資料通路所帶來的效率低下和資料庫壓力等問題,緩存系統将經常使用的活躍資料存儲在記憶體中避免了通路重複資料時,資料庫查詢所帶來的頻繁磁盤i/o和大型關系表查詢時的時間開銷,是以緩存系統幾乎是大型網站的必備功能子產品。

  緩存系統可以認為是基于記憶體的資料庫,相對于後端大型生産資料庫而言基于記憶體的緩存資料庫能夠提供快速的資料通路操作,進而提高用戶端的資料請求通路回報,并降低後端資料庫的通路壓力。

  2、Memcached概念:

   Memcached 是一個開源的、高性能的分布式記憶體對象緩存系統。通過在記憶體中緩存資料和對象來減少讀取資料庫的次數,進而提高網站通路速度,加速動态WEB應用、減輕資料庫負載。

   Memcached是一種記憶體緩存,把經常需要存取的對象或資料緩存在記憶體中,記憶體中,緩存的這些資料通過API的方式被存取,資料經過利用HASH之後被存放到位于記憶體上的HASH表内,HASH表中的資料以key-value的形式存放,由于Memcached沒有實作通路認證及安全管理控制,是以在面向internet的系統架構中,Memcached伺服器通常位于使用者的安全區域。

   當Memcached伺服器節點的實體記憶體剩餘空間不足,Memcached将使用最近最少使用算法(LRU,LastRecentlyUsed)對最近不活躍的資料進行清理,

   進而整理出新的記憶體空間存放需要存儲的資料。

   Memcached在解決大規模叢集資料緩存的諸多難題上有具有非常明顯的優勢并且還易于進行二次開發,是以越來越多的使用者将其作為叢集緩存系統,此 外,Memcached開放式的API,使得大多數的程式語言都能使用Memcached,如javac、C/C++C#,Perl、python、PHP、Ruby 各種流行的程式設計語言。

   由于Memcached的諸多優勢,其已經成為衆多開源項目的首選叢集緩存系統。如openstacksd的keystone身份認證項目。就會利用Memcached來緩存租的 Token等身份資訊,進而在使用者登陸驗證時無需查詢存儲在MySQL後端資料庫中的使用者資訊,這在資料庫高負荷運作下的大型openstack叢集中能夠極大地提高使用者的身份驗證過程,在如web管理界面Horizon和對象存儲Swift項目也都會利用Memcached來緩存資料以提高用戶端的通路請求響應速率。

  3、Memcached緩存流程:

   1)檢查用戶端請求的資料是否在 Memcache中,如果存在,直接将請求的資料傳回,不在對資料進行任何操作。

   2)如果請求的資料不在 Memcache 中,就去資料庫查詢,把從資料庫中擷取的資料傳回給用戶端,同時把資料緩存一份 Memcache 中

   3)每次更新資料庫的同時更新 Memcache中的資料庫。確定資料資訊一緻性。

   4)當配置設定給 Memcache 記憶體空間用完後,會使用LRU(least Recently Used ,最近最少使用 ) 政策加到其失效政策,失效的資料首先被替換掉,然後在替換掉最近未使用的資料。

  4、Memcached功能特點:

   1)協定簡單

   2)基于 libevent 的事件處理

   3)内置的記憶體管理方式

   4)節點互相獨立的分布式

  5、使用Memcached應該考慮的因素:

   1)Memcached服務單點故障

   2)存儲空間限制

   3)存儲單元限制

   4)資料碎片

   5)利舊算法局限性

   6)資料通路安

轉載于:https://www.cnblogs.com/jclty/p/10677376.html

繼續閱讀