1. 程式人生 > >openstack及元件簡要介紹 openstack及元件簡要介紹

openstack及元件簡要介紹 openstack及元件簡要介紹

openstack及元件簡要介紹

為什要用雲?

一.簡單的說就是對資源更加合理的分配,使用,比如硬體的數量,頻寬等等這些,因為你不能機器買來不需要了再賣掉(當然也可以),頻寬跟機房籤合同得來一年的,中間不夠了也不能加,超了也不退錢

二.還有就是可以有一個可以統一管理的操作平臺,可以快速的對基礎設施進行建設配置等等,方便了許多

 

雲端計算是個什麼鬼?

資源可以迴圈利用的一個過程(PS:沒有虛擬化就沒有云,因此這兩者沒什麼可比性)

 

現有云模式(複製大神的):

一、IaaS:基礎設施即服務(個人比較習慣的):使用者通過網路獲取虛機、儲存、網路,然後使用者根據自己的需求操作獲取的資源

二、PaaS:平臺即服務:將軟體研發平臺作為一種服務, 如Eclipse/Java程式設計平臺,服務商提供程式設計介面/執行平臺等

三、SaaS:軟體即服務  :將軟體作為一種服務通過網路提供給使用者,如web的電子郵件、HR系統、訂單管理系統、客戶關係系統等。使用者無需購買軟體,而是向提供商租用基於web的軟體,來管理企業經營活動

 吃貨連結https://www.youyong.top/article/11597a1d644db?yyfr=cnblogs

 

openstack的核心元件介紹(openstack就不多說, redhat推動的,很多雲都是基於其開發的,6個月一更新,現在是M版)

重要的:

一.Horizon(控制檯),又名Dashboard

就是web展示介面操作平臺,方便使用者互動的

二.Nova(計算)

負責建立,排程,銷燬雲主機

三.Neutron(網路)

負責實現SDN

四.Swift(物件儲存)

目錄結構儲存資料

五.Cinder(塊儲存)

提供持久化塊儲存,即為雲主機提供附加雲盤

六.Glance(映象)

提供映象服務,裝機使用

七.Keystone(認證)

為訪問openstack各元件提供認證和授權功能,認證通過後,提供一個服務列表(存放你有權訪問的服務),可以通過該列表訪問各個元件

不重要的:

八.Ceilometer(計費),很明顯自用的根本不需要這功能,而且所謂的監控其實根本也算不上什麼監控

監控效能,計費

九.Heat(編排),這個太高大上了,就目前階段正常企業還搞不定

自動化部署應用,自動化管理應用的整個生命週期.主要用於Paas (本來以為青雲現在的資源編排就是啊,用了以後看來還不是,只是方便了點)

 

好,直接開大,先來個整體的流程(圖中有錯誤)

從這個圖我們可以明白每一個元件為建立一臺vm都提供了什麼,其實就是上面各元件的功能的一個整合圖,這裡需要注意的就是每一步都需要去keystone去進行驗證,下圖有詳細的流程(每一步完成後去驗證的過程省略了)

  1. 登入介面或命令列通過RESTful API向keystone獲取認證資訊。

  2. keystone通過使用者請求認證資訊,並生成auth-token返回給對應的認證請求。

  3. 介面或命令列通過RESTful API向nova-api傳送一個boot instance的請求(攜帶auth-token)。

  4. nova-api接受請求後向keystone傳送認證請求,檢視token是否為有效使用者和token。

  5. keystone驗證token是否有效,如有效則返回有效的認證和對應的角色(注:有些操作需要有角色許可權才能操作)。

  6. 通過認證後nova-api和資料庫通訊。

  7. 初始化新建虛擬機器的資料庫記錄。

  8. nova-api通過rpc.call向nova-scheduler請求是否有建立虛擬機器的資源(Host ID)。

  9. nova-scheduler程序偵聽訊息佇列,獲取nova-api的請求。

  10. nova-scheduler通過查詢nova資料庫中計算資源的情況,並通過排程演算法計算符合虛擬機器建立需要的主機。

  11. 對於有符合虛擬機器建立的主機,nova-scheduler更新資料庫中虛擬機器對應的物理主機資訊。

  12. nova-scheduler通過rpc.cast向nova-compute傳送對應的建立虛擬機器請求的訊息。

  13. nova-compute會從對應的訊息佇列中獲取建立虛擬機器請求的訊息。

  14. nova-compute通過rpc.call向nova-conductor請求獲取虛擬機器訊息。(Flavor)

  15. nova-conductor從訊息隊佇列中拿到nova-compute請求訊息。

  16. nova-conductor根據訊息查詢虛擬機器對應的資訊。

  17. nova-conductor從資料庫中獲得虛擬機器對應資訊。

  18. nova-conductor把虛擬機器資訊通過訊息的方式傳送到訊息佇列中。

  19. nova-compute從對應的訊息佇列中獲取虛擬機器資訊訊息。

  20. nova-compute通過keystone的RESTfull API拿到認證的token,並通過HTTP請求glance-api獲取建立虛擬機器所需要映象。

  21. glance-api向keystone認證token是否有效,並返回驗證結果。

  22. token驗證通過,nova-compute獲得虛擬機器映象資訊(URL)。

  23. nova-compute通過keystone的RESTfull API拿到認證k的token,並通過HTTP請求neutron-server獲取建立虛擬機器所需要的網路資訊。

  24. neutron-server向keystone認證token是否有效,並返回驗證結果。

  25. token驗證通過,nova-compute獲得虛擬機器網路資訊。

  26. nova-compute通過keystone的RESTfull API拿到認證的token,並通過HTTP請求cinder-api獲取建立虛擬機器所需要的持久化儲存資訊。

  27. cinder-api向keystone認證token是否有效,並返回驗證結果。

  28. token驗證通過,nova-compute獲得虛擬機器持久化儲存資訊。

  29. nova-compute根據instance的資訊呼叫配置的虛擬化驅動來建立虛擬機器。

這裡面可以看出元件之間的通訊都是通過restapi實現的

 

害怕不...但是瞭解了這些你就可以出去裝逼了,然後細分每個元件的細節(說好的自己寫變成複製貼上了....主要人家些太好了)

1.keystone

User:指使用Openstack service的使用者,可以是人、服務、系統,但凡使用了Openstack service的物件都可以稱為User。

Project(Tenant):可以理解為一個人、或服務所擁有的 資源集合 。在一個Project(Tenant)中可以包含多個User,每一個User都會根據許可權的劃分來使用Project(Tenant)中的資源。比如通過Nova建立虛擬機器時要指定到某個Project中,在Cinder建立卷也要指定到某個Project中。User訪問Project的資源前,必須要與該Project關聯,並且指定User在Project下的Role。

Role:用於劃分許可權。可以通過給User指定Role,使User獲得Role對應的操作許可權。Keystone返回給User的Token包含了Role列表,被訪問的Services會判斷訪問它的User和User提供的Token中所包含的Role。系統預設使用管理Role admin和成員Role _member_ 。

Policy:OpenStack對User的驗證除了OpenStack的身份驗證以外,還需要鑑別User對某個Service是否有訪問許可權。Policy機制就是用來控制User對Tenant中資源(包括Services)的操作許可權。對於Keystone service來說,Policy就是一個JSON檔案,預設是/etc/keystone/policy.json。通過配置這個檔案,Keystone Service實現了對User基於Role的許可權管理。

Token:是一個字串表示,作為訪問資源的令牌。Token包含了在 指定範圍和有效時間內 可以被訪問的資源。EG. 在Nova中一個tenant可以是一些虛擬機器,在Swift和Glance中一個tenant可以是一些映象儲存,在Network中一個tenant可以是一些網路資源。Token一般被User持有。

Credentials:用於確認使用者身份的憑證

Authentication:確定使用者身份的過程

Service:Openstack service,即Openstack中執行的元件服務。

Endpoint:一個可以通過網路來訪問和定位某個Openstack service的地址,通常是一個URL。比如,當Nova需要訪問Glance服務去獲取image 時,Nova通過訪問Keystone拿到Glance的endpoint,然後通過訪問該endpoint去獲取Glance服務。我們可以通過Endpoint的region屬性去定義多個region。Endpoint 該使用物件分為三類:

  • admin url –> 給admin使用者使用,Post:35357

  • internal url –> OpenStack內部服務使用來跟別的服務通訊,Port:5000

  • public url –> 其它使用者可以訪問的地址,Post:5000

建立完service後建立API EndPoint. 在openstack中,每一個service都有三種end points. Admin, public, internal。 Admin是用作管理用途的,如它能夠修改user/tenant(project)。 public 是讓客戶呼叫的,比如可以部署在外網上讓客戶可以管理自己的雲。internal是openstack內部呼叫的。三種endpoints 在網路上開放的許可權一般也不同。Admin通常只能對內網開放,public通常可以對外網開放internal通常只能對安裝有openstack對服務的機器開放。

一個例項:

wKioL1fH_9Tz46AGAANXnjXPEPA500.png

 

 

  1. 使用者alice登入keystone系統(password或者token的方式),獲取一個臨時的token和catalog服務目錄(v3版本登入時,如果沒有指定scope,project或者domain,獲取的臨時token沒有任何許可權,不能查詢project或者catalog)。

  2. alice通過臨時token獲取自己的所有的project列表。

  3. alice選定一個project,然後指定project重新登入,獲取一個正式的token,同時獲得服務列表的endpoint,使用者選定一個endpoint,在HTTP訊息頭中攜帶token,然後傳送請求(如果使用者知道project name或者project id可以直接第3步登入)。

  4. 訊息到達endpoint之後,由服務端(nova)的keystone中介軟體(pipeline中的filter:authtoken)向keystone傳送一個驗證token的請求。(token型別:uuid需要在keystone驗證token,pki型別的token本身是包含使用者詳細資訊的加密串,可以在服務端完成驗證)

  5. keystone驗證token成功之後,將token對應使用者的詳細資訊,例如:role,username,userid等,返回給服務端(nova)。

  6. 服務端(nova)完成請求,例如:建立虛擬機器。

  7. 服務端返回請求結果給alice。

2.glance

wKiom1fIAnjAm_CuAACAQxnuKgE283.png

 

3.nova與cinder

nova主要組成:

    nova-api

    nova-scheduler

    nova-compute

    nova-conductor

cinder主要組成:

    cinder-api

    cinder-scheduler

    cinder-volume

 

cinder各元件功能:

Cinder-api 是 cinder 服務的 endpoint,提供 rest 介面,負責處理 client 請求,並將 RPC 請求傳送至 cinder-scheduler 元件。

Cinder-scheduler 負責 cinder 請求排程,其核心部分就是 scheduler_driver, 作為 scheduler manager 的 driver,負責 cinder-volume 具體的排程處理,傳送 cinder RPC 請求到選擇的 cinder-volume。

Cinder-volume 負責具體的 volume 請求處理,由不同後端儲存提供 volume 儲存空間。

4.neutron

 

neutron包含元件:

    neutron-server

    neutron-plugin

    neutron-agent

neutron各元件功能介紹:

 

1.Neutron-server可以理解為一個專門用來接收Neutron REST API呼叫的伺服器,然後負責將不同的rest api分發到不同的neutron-plugin上。

2.Neutron-plugin可以理解為不同網路功能實現的入口,各個廠商可以開發自己的plugin。Neutron-plugin接收neutron-server分發過來的REST API,向neutron database完成一些資訊的註冊,然後將具體要執行的業務操作和引數通知給自身對應的neutron agent。

3.Neutron-agent可以直觀地理解為neutron-plugin在裝置上的代理,接收相應的neutron-plugin通知的業務操作和引數,並轉換為具體的裝置級操作,以指導裝置的動作。當裝置本地發生問題時,neutron-agent會將情況通知給neutron-plugin。

4.Neutron database,顧名思義就是Neutron的資料庫,一些業務相關的引數都存在這裡。

5.Network provider,即為實際執行功能的網路裝置,一般為虛擬交換機(OVS或者Linux Bridge)

為什要用雲?

一.簡單的說就是對資源更加合理的分配,使用,比如硬體的數量,頻寬等等這些,因為你不能機器買來不需要了再賣掉(當然也可以),頻寬跟機房籤合同得來一年的,中間不夠了也不能加,超了也不退錢

二.還有就是可以有一個可以統一管理的操作平臺,可以快速的對基礎設施進行建設配置等等,方便了許多

 

雲端計算是個什麼鬼?

資源可以迴圈利用的一個過程(PS:沒有虛擬化就沒有云,因此這兩者沒什麼可比性)

 

現有云模式(複製大神的):

一、IaaS:基礎設施即服務(個人比較習慣的):使用者通過網路獲取虛機、儲存、網路,然後使用者根據自己的需求操作獲取的資源

二、PaaS:平臺即服務:將軟體研發平臺作為一種服務, 如Eclipse/Java程式設計平臺,服務商提供程式設計介面/執行平臺等

三、SaaS:軟體即服務  :將軟體作為一種服務通過網路提供給使用者,如web的電子郵件、HR系統、訂單管理系統、客戶關係系統等。使用者無需購買軟體,而是向提供商租用基於web的軟體,來管理企業經營活動

 吃貨連結https://www.youyong.top/article/11597a1d644db?yyfr=cnblogs

 

openstack的核心元件介紹(openstack就不多說, redhat推動的,很多雲都是基於其開發的,6個月一更新,現在是M版)

重要的:

一.Horizon(控制檯),又名Dashboard

就是web展示介面操作平臺,方便使用者互動的

二.Nova(計算)

負責建立,排程,銷燬雲主機

三.Neutron(網路)

負責實現SDN

四.Swift(物件儲存)

目錄結構儲存資料

五.Cinder(塊儲存)

提供持久化塊儲存,即為雲主機提供附加雲盤

六.Glance(映象)

提供映象服務,裝機使用

七.Keystone(認證)

為訪問openstack各元件提供認證和授權功能,認證通過後,提供一個服務列表(存放你有權訪問的服務),可以通過該列表訪問各個元件

不重要的:

八.Ceilometer(計費),很明顯自用的根本不需要這功能,而且所謂的監控其實根本也算不上什麼監控

監控效能,計費

九.Heat(編排),這個太高大上了,就目前階段正常企業還搞不定

自動化部署應用,自動化管理應用的整個生命週期.主要用於Paas (本來以為青雲現在的資源編排就是啊,用了以後看來還不是,只是方便了點)

 

好,直接開大,先來個整體的流程(圖中有錯誤)

從這個圖我們可以明白每一個元件為建立一臺vm都提供了什麼,其實就是上面各元件的功能的一個整合圖,這裡需要注意的就是每一步都需要去keystone去進行驗證,下圖有詳細的流程(每一步完成後去驗證的過程省略了)

  1. 登入介面或命令列通過RESTful API向keystone獲取認證資訊。

  2. keystone通過使用者請求認證資訊,並生成auth-token返回給對應的認證請求。

  3. 介面或命令列通過RESTful API向nova-api傳送一個boot instance的請求(攜帶auth-token)。

  4. nova-api接受請求後向keystone傳送認證請求,檢視token是否為有效使用者和token。

  5. keystone驗證token是否有效,如有效則返回有效的認證和對應的角色(注:有些操作需要有角色許可權才能操作)。

  6. 通過認證後nova-api和資料庫通訊。

  7. 初始化新建虛擬機器的資料庫記錄。

  8. nova-api通過rpc.call向nova-scheduler請求是否有建立虛擬機器的資源(Host ID)。

  9. nova-scheduler程序偵聽訊息佇列,獲取nova-api的請求。

  10. nova-scheduler通過查詢nova資料庫中計算資源的情況,並通過排程演算法計算符合虛擬機器建立需要的主機。

  11. 對於有符合虛擬機器建立的主機,nova-scheduler更新資料庫中虛擬機器對應的物理主機資訊。

  12. nova-scheduler通過rpc.cast向nova-compute傳送對應的建立虛擬機器請求的訊息。

  13. nova-compute會從對應的訊息佇列中獲取建立虛擬機器請求的訊息。

  14. nova-compute通過rpc.call向nova-conductor請求獲取虛擬機器訊息。(Flavor)

  15. nova-conductor從訊息隊佇列中拿到nova-compute請求訊息。

  16. nova-conductor根據訊息查詢虛擬機器對應的資訊。

  17. nova-conductor從資料庫中獲得虛擬機器對應資訊。

  18. nova-conductor把虛擬機器資訊通過訊息的方式傳送到訊息佇列中。

  19. nova-compute從對應的訊息佇列中獲取虛擬機器資訊訊息。

  20. nova-compute通過keystone的RESTfull API拿到認證的token,並通過HTTP請求glance-api獲取建立虛擬機器所需要映象。

  21. glance-api向keystone認證token是否有效,並返回驗證結果。

  22. token驗證通過,nova-compute獲得虛擬機器映象資訊(URL)。

  23. nova-compute通過keystone的RESTfull API拿到認證k的token,並通過HTTP請求neutron-server獲取建立虛擬機器所需要的網路資訊。

  24. neutron-server向keystone認證token是否有效,並返回驗證結果。

  25. token驗證通過,nova-compute獲得虛擬機器網路資訊。

  26. nova-compute通過keystone的RESTfull API拿到認證的token,並通過HTTP請求cinder-api獲取建立虛擬機器所需要的持久化儲存資訊。

  27. cinder-api向keystone認證token是否有效,並返回驗證結果。

  28. token驗證通過,nova-compute獲得虛擬機器持久化儲存資訊。

  29. nova-compute根據instance的資訊呼叫配置的虛擬化驅動來建立虛擬機器。

這裡面可以看出元件之間的通訊都是通過restapi實現的

 

害怕不...但是瞭解了這些你就可以出去裝逼了,然後細分每個元件的細節(說好的自己寫變成複製貼上了....主要人家些太好了)

1.keystone

User:指使用Openstack service的使用者,可以是人、服務、系統,但凡使用了Openstack service的物件都可以稱為User。

Project(Tenant):可以理解為一個人、或服務所擁有的 資源集合 。在一個Project(Tenant)中可以包含多個User,每一個User都會根據許可權的劃分來使用Project(Tenant)中的資源。比如通過Nova建立虛擬機器時要指定到某個Project中,在Cinder建立卷也要指定到某個Project中。User訪問Project的資源前,必須要與該Project關聯,並且指定User在Project下的Role。

Role:用於劃分許可權。可以通過給User指定Role,使User獲得Role對應的操作許可權。Keystone返回給User的Token包含了Role列表,被訪問的Services會判斷訪問它的User和User提供的Token中所包含的Role。系統預設使用管理Role admin和成員Role _member_ 。

Policy:OpenStack對User的驗證除了OpenStack的身份驗證以外,還需要鑑別User對某個Service是否有訪問許可權。Policy機制就是用來控制User對Tenant中資源(包括Services)的操作許可權。對於Keystone service來說,Policy就是一個JSON檔案,預設是/etc/keystone/policy.json。通過配置這個檔案,Keystone Service實現了對User基於Role的許可權管理。

Token:是一個字串表示,作為訪問資源的令牌。Token包含了在 指定範圍和有效時間內 可以被訪問的資源。EG. 在Nova中一個tenant可以是一些虛擬機器,在Swift和Glance中一個tenant可以是一些映象儲存,在Network中一個tenant可以是一些網路資源。Token一般被User持有。

Credentials:用於確認使用者身份的憑證

Authentication:確定使用者身份的過程

Service:Openstack service,即Openstack中執行的元件服務。

Endpoint:一個可以通過網路來訪問和定位某個Openstack service的地址,通常是一個URL。比如,當Nova需要訪問Glance服務去獲取image 時,Nova通過訪問Keystone拿到Glance的endpoint,然後通過訪問該endpoint去獲取Glance服務。我們可以通過Endpoint的region屬性去定義多個region。Endpoint 該使用物件分為三類:

  • admin url –> 給admin使用者使用,Post:35357

  • internal url –> OpenStack內部服務使用來跟別的服務通訊,Port:5000

  • public url –> 其它使用者可以訪問的地址,Post:5000

建立完service後建立API EndPoint. 在openstack中,每一個service都有三種end points. Admin, public, internal。 Admin是用作管理用途的,如它能夠修改user/tenant(project)。 public 是讓客戶呼叫的,比如可以部署在外網上讓客戶可以管理自己的雲。internal是openstack內部呼叫的。三種endpoints 在網路上開放的許可權一般也不同。Admin通常只能對內網開放,public通常可以對外網開放internal通常只能對安裝有openstack對服務的機器開放。

一個例項:

wKioL1fH_9Tz46AGAANXnjXPEPA500.png

 

 

  1. 使用者alice登入keystone系統(password或者token的方式),獲取一個臨時的token和catalog服務目錄(v3版本登入時,如果沒有指定scope,project或者domain,獲取的臨時token沒有任何許可權,不能查詢project或者catalog)。

  2. alice通過臨時token獲取自己的所有的project列表。

  3. alice選定一個project,然後指定project重新登入,獲取一個正式的token,同時獲得服務列表的endpoint,使用者選定一個endpoint,在HTTP訊息頭中攜帶token,然後傳送請求(如果使用者知道project name或者project id可以直接第3步登入)。

  4. 訊息到達endpoint之後,由服務端(nova)的keystone中介軟體(pipeline中的filter:authtoken)向keystone傳送一個驗證token的請求。(token型別:uuid需要在keystone驗證token,pki型別的token本身是包含使用者詳細資訊的加密串,可以在服務端完成驗證)

  5. keystone驗證token成功之後,將token對應使用者的詳細資訊,例如:role,username,userid等,返回給服務端(nova)。

  6. 服務端(nova)完成請求,例如:建立虛擬機器。

  7. 服務端返回請求結果給alice。

2.glance

wKiom1fIAnjAm_CuAACAQxnuKgE283.png

 

3.nova與cinder

nova主要組成:

    nova-api

    nova-scheduler

    nova-compute

    nova-conductor

cinder主要組成:

    cinder-api

    cinder-scheduler

    cinder-volume

 

cinder各元件功能:

Cinder-api 是 cinder 服務的 endpoint,提供 rest 介面,負責處理 client 請求,並將 RPC 請求傳送至 cinder-scheduler 元件。

Cinder-scheduler 負責 cinder 請求排程,其核心部分就是 scheduler_driver, 作為 scheduler manager 的 driver,負責 cinder-volume 具體的排程處理,傳送 cinder RPC 請求到選擇的 cinder-volume。

Cinder-volume 負責具體的 volume 請求處理,由不同後端儲存提供 volume 儲存空間。

4.neutron

 

neutron包含元件:

    neutron-server

    neutron-plugin

    neutron-agent

neutron各元件功能介紹:

 

1.Neutron-server可以理解為一個專門用來接收Neutron REST API呼叫的伺服器,然後負責將不同的rest api分發到不同的neutron-plugin上。

2.Neutron-plugin可以理解為不同網路功能實現的入口,各個廠商可以開發自己的plugin。Neutron-plugin接收neutron-server分發過來的REST API,向neutron database完成一些資訊的註冊,然後將具體要執行的業務操作和引數通知給自身對應的neutron agent。

3.Neutron-agent可以直觀地理解為neutron-plugin在裝置上的代理,接收相應的neutron-plugin通知的業務操作和引數,並轉換為具體的裝置級操作,以指導裝置的動作。當裝置本地發生問題時,neutron-agent會將情況通知給neutron-plugin。

4.Neutron database,顧名思義就是Neutron的資料庫,一些業務相關的引數都存在這裡。

5.Network provider,即為實際執行功能的網路裝置,一般為虛擬交換機(OVS或者Linux Bridge)