1、keystone服務概念html
Keystone被組織爲在一個或多個端點上公開的一組內部服務。其中許多服務由前端以組合方式使用。例如,身份驗證調用將使用Identity服務驗證用戶/項目憑據,並在成功時建立並返回帶有令牌服務的令牌。前端
Identity服務提供身份驗證憑據驗證以及有關用戶 和組的數據。在基本狀況下,此數據由Identity服務管理,容許它還處理與此數據關聯的全部CRUD操做。在更復雜的狀況下,數據由權威後端服務管理。例如,身份服務充當LDAP的前端。在這種狀況下,LDAP服務器是真實的來源,身份服務的做用是準確地傳遞該信息。linux
Users表示單個API使用者。用戶自己必須由特定域擁有,所以全部用戶名不是全局惟一的,而是僅對其域惟一。數據庫
Groups是表示用戶集合的容器。組自己必須由特定域擁有,所以全部組名稱不是 全局惟一的,而是僅對其域惟一。後端
資源服務提供有關項目和域的數據。安全
Projects表明ownershipOpenStack 的基本單元,由於OpenStack中的全部資源都應歸特定項目全部。項目自己必須由特定域擁有,所以全部項目名稱不是 全局惟一的,但對於其域是惟一的。若是未指定項目的域,則將其添加到默認域。bash
Domains是項目,用戶和組的高級容器。每一個都歸一個域全部。每一個域定義一個名稱空間,其中存在API可見的名稱屬性。Keystone提供了一個默認域名,名稱爲「默認」。服務器
在Identity v3 API中,屬性的惟一性以下:網絡
域名。全部領域的全球獨特性。架構
角色名稱。在擁有的域內獨一無二。
用戶名。在擁有的域內獨一無二。
項目名。在擁有的域內獨一無二。
團隊名字。在擁有的域內獨一無二。
因爲其容器架構,域能夠用做委派OpenStack資源管理的方式。若是授予適當的分配,則域中的用戶仍能夠訪問另外一個域中的資源。
Assignment服務提供有關角色和角色分配的數據。
Roles規定最終用戶能夠得到的受權級別。角色能夠在域或項目級別授予。能夠在單個用戶或組級別分配角色。角色名稱在擁有域中是惟一的。
一個3元組,有一個Role,一個Resource和一個Identity。
一旦用戶的憑證已通過驗證,令牌服務就會驗證和管理用於驗證請求的令牌。
2、登錄並修改openstack管理員密碼
在完成openstack搭建後,按照http://serverip/dashboard/ 登錄,登錄提示會須要admin管理員帳戶密碼。默認密碼保存在keystonerc_admin 文件
cat keystonerc_admin
export OS_PASSWORD後面就是默認密碼,後進入dashboard界面登錄
登錄進去後,能夠在設置修改管理員密碼
完成後,同時要修改 keystonerc_admin文件中export OS_PASSWORD後密碼,而後按照以下命令配置生效
source keystonerc_admin #從新加載
注意,admin用戶是管理員,能夠擁有整個資源的權限,默認分配到admin的項目組中,因此在管理界面修改完成管理員密碼後必須修改keystonetc_admin的文件的中的密碼,否則會致使其餘組件服務認證失敗
3、建立項目與用戶
3.1建立項目
首先建立一個項目,在身份管理中點擊項目
建立項目名稱爲test-cloud,域信息和域ID由於是測試環境,都保持默認
項目成員爲登錄雲服務的租戶名稱,能夠後期添加,目前保持默認,配額是限制該項目資源的使用,測試環境下保持默認便可
點擊完成建立,便可建立好項目test_cloud,能夠做爲vdc(虛擬數據中心)提供給租戶使用
3.2建立用戶
爲test_cloud建立一個管理員,負責分配資源,名稱爲vdc_admin。在身份驗證-用戶中建立,以下所示:
說明:
一、選擇項目test_cloud表明使用此資源
二、選擇角色_member_
而後再以vdc_admin登錄openstack,能夠看到可獲取的資源的明顯不一樣
4、建立外部網絡
4.1 openstack中網絡概念
在openstack中,全部的網絡服務都是由neutron實現。openstack官方對neutron中描述以下:
OpenStack網絡(neutron)管理OpenStack環境中全部虛擬網絡基礎設施(VNI),物理網絡基礎設施(PNI)的接入層。OpenStack網絡容許租戶建立包括像 firewall, :term:`load balancer`和 :term:`virtual private network (×××)`等這樣的高級虛擬網絡拓撲。
網絡服務提供網絡,子網以及路由這些對象的抽象概念。每一個抽象概念都有本身的功能,能夠模擬對應的物理設備:網絡包括子網,路由在不一樣的子網和網絡間進行路由轉發。
對於任意一個給定的網絡都必須包含至少一個外部網絡。不像其餘的網絡那樣,外部網絡不只僅是一個定義的虛擬網絡。相反,它表明了一種OpenStack安裝以外的能從物理的,外部的網絡訪問的視圖。外部網絡上的IP地址可供外部網絡上的任意的物理設備所訪問
外部網絡以外,任何 Networking 設置擁有一個或多個內部網絡。這些軟件定義的網絡直接鏈接到虛擬機。僅僅在給定網絡上的虛擬機,或那些在經過接口鏈接到相近路由的子網上的虛擬機,能直接訪問鏈接到那個網絡上的虛擬機。
若是外部網絡想要訪問實例或者相反實例想要訪問外部網絡,那麼網絡之間的路由就是必要的了。每個路由都配有一個網關用於鏈接到外部網絡,以及一個或多個鏈接到內部網絡的接口。就像一個物理路由同樣,子網能夠訪問同一個路由上其餘子網中的機器,而且機器也能夠訪問路由的網關訪問外部網絡。
另外,你能夠將外部網絡的IP地址分配給內部網絡的端口。無論何時一旦有鏈接鏈接到子網,那個鏈接被稱做端口。你能夠給實例的端口分配外部網絡的IP地址。經過這種方式,外部網絡上的實體能夠訪問實例.
neutron利用了linux重要網絡技術,相關概念以下:
bridge:網橋,Linux中用於表示一個能鏈接不一樣網絡設備的虛擬設備,linux中
傳統實現的網橋相似一個hub設備,而ovs管理的網橋通常相似交換機。
br-int:bridge-integration,綜合網橋,經常使用於表示實現主要內部網絡功能的網
橋。
br-ex:bridge-external,外部網橋,一般表示負責跟外部網絡通訊的網橋。
GRE:General Routing Encapsulation,一種經過封裝來實現隧道的方式。在
openstack中通常是基於L3的gre,即original pkt/GRE/IP/Ethernet
VETH:虛擬ethernet接口,一般以pair的方式出現,一端發出的網包,會被另
一端接收,能夠造成兩個網橋之間的通道。
qvb:neutron veth, Linux Bridge-side
qvo:neutron veth, OVS-side
TAP設備:模擬一個二層的網絡設備,能夠接受和發送二層網包。
TUN設備:模擬一個三層的網絡設備,能夠接受和發送三層網包。
iptables:Linux 上常見的實現安全策略的防火牆軟件。
Vlan:虛擬 Lan,同一個物理 Lan 下用標籤實現隔離,可用標號爲1-4094。
VXLAN:一套利用 UDP 協議做爲底層傳輸協議的 Overlay 實現。通常認爲做
爲 VLan 技術的延伸或替代者。
namespace:用來實現隔離的一套機制,不一樣 namespace 中的資源之間彼此
不可見。
Neutron管理下面的實體:
網絡:隔離的 L2 域,能夠是虛擬、邏輯或交換。
子網:隔離的 L3 域,IP 地址塊。其中每一個機器有一個 IP,同一個子網的主機彼此 L3 可見。
端口:網絡上虛擬、邏輯或交換端口。 全部這些實體都是虛擬的,擁有自動生成的惟一標示id,支持CRUD功能,並在數據庫中跟蹤記錄狀態。
網絡隔離的 L2 廣播域,通常是建立它的用戶全部。用戶能夠擁有多個網絡。網絡是最基礎的,子網和端口都須要關聯到網絡上。網絡上能夠有多個子網。同一個網絡上的主機通常能夠經過交換機或路由器連通起來。
子網隔離的 L3 域,子網表明了一組分配了 IP 的虛擬機。每一個子網必須有一個 CIDR 和關聯到一個網絡。IP 能夠從 CIDR 或者用戶指定池中選取。子網可能會有一個網關、一組 DNS 和主機路由。不一樣子網之間 L3 是互相不可見的,必須經過一個三層網關(即路由器)通過 L3 上進行通訊。
端口能夠進出流量的接口,每每綁定上若干 MAC 地址和 IP 地址,以進行尋址。通常爲虛擬交換機上的虛擬接口。虛擬機掛載網卡到端口上,經過端口訪問網絡。當端口有 IP 的時候,意味着它屬於某個子
邏輯概念以下圖所示:
大體架構以下:(VLAN模式)
因爲本次採用allinone的部署,控制節點和網絡節點合併在一塊兒,同時,測試環境下只有一個網卡。
4.2將neutron與外部網絡鏈接
neuntron主要是經過br-ex與外部網絡鏈接通信
首先將/etc/sysconfig/network-scripts/ifcfg-ens192(實際狀況物理網卡名稱可能不一樣,如kvm中爲eth0),複製爲/etc/sysconfig/network-scripts/ifcfg-br-ex,
編輯/ etc / sysconfig / network-scripts / ifcfg-br-ex,重點修改以下內容
DEVICE=br-ex DEVICETYPE=ovs TYPE=OVSBridge BOOTPROTO=static IPADDR=172.31.208.100 # 這個ip地址就是ens01網卡的ip地址 NETMASK=255.255.255.0 GATEWAY=192.168.122.1 DNS1=192.168.122.1 ONBOOT=yes
而後修改/etc/sysconfig/network-scripts/ifcfg-ens192
DEVICE=ens192 TYPE=OVSPort DEVICETYPE=ovs OVS_BRIDGE=br-ex ONBOOT=yes
完成修改保存後,重啓網絡服務
systemctl restart network
如今,使用Neutron建立外部網絡。
. keystonerc_admin neutron net-create external_network --provider:network_type flat --provider:physical_network extnet --router:external
而後咱們就能夠在openstack dashbord中看到建立好的外部網路
4.2 配置子網
使用之間建立好的vdc_admin登錄,開始建立網絡,名稱爲public
而後定義子網private_network網段爲分配私網網段,192.168.1.0/24
下一步,定義子網dhcp地址範圍和dns信息,這裏不用添加主機路由
完成私網網絡配置後,還須要配置一個路由器,虛擬機實例分配到私網地址後,經過該路由器進行snat到exernal網絡,再到外部物理網絡
而後點擊新建的路由器router,添加接口
此時就完成了路由器的添加。
此時查看網絡拓撲,以下所示:
能夠看,虛擬網絡public已經經過虛擬機路由器與外部網絡是連通的了
配置完成,能夠再命令行中驗證建立的網絡狀況