雲計算介紹
雲計算是一種模型,能夠提供無論在何時何地都可以便捷獲取所需資源的模型,這些資源可以是網絡資源、存儲資源、服務器資源,甚至是服務器或者應用軟件資源等。
雲計算模型中有三種基本服務模型可用:
- IaaS:將硬件設備等基礎資源封裝成服務供用戶使用。在IaaS環境中,用戶相當於在使用裸機和磁盤,既可以讓它運行Windows,也可以讓它運行Linux。 IaaS最大優勢在於它允許用戶動態申請或釋放節點,按使用量計費。而IaaS是由公衆共享的,因而具有更高的資源使用效率。
- PaaS:提供用戶應用程序的運行環境,典型的如Google App Engine。PaaS自身負責資源的動態擴展和容錯管理,用戶應用程序不必過多考慮節點間的配合問題。但與此同時,用戶的自主權降低,必須使用特定的編程環境並遵照特定的編程模型,只適用於解決某些特定的計算問題。
- SaaS:針對性更強,它將某些特定應用軟件功能封裝成服務。SaaS既不像PaaS一樣提供計算或存儲資源類型的服務,也不像IaaS一樣提供運行用戶自定義應用程序的環境,它只提供某些專門用途的服務供應用調用。
OpenStack介紹
OpenStack是一個由NASA(美國國家航空航天局)和Rackspace合作研發併發起的,以Apache許可證授權的自由軟件和開放源代碼項目。
OpenStack是一個開源的雲計算管理平臺項目,由幾個主要的組件組合起來完成具體工作。OpenStack支持幾乎所有類型的雲環境,項目目標是提供實施簡單、可大規模擴展、豐富、標準統一的雲計算管理平臺。OpenStack通過各種互補的服務提供了基礎設施即服務(IaaS)的解決方案,每個服務提供API以進行集成。
OpenStack服務
服務 | 項目名稱 | 描述 |
---|---|---|
Compute (計算服務) | Nova | 負責實例生命週期的管理,計算資源的單位。對Hypervisor進行屏蔽,支持多種虛擬化技術(KVM),支持橫向擴展。 |
Network (網絡服務) | Neutron | 負責虛擬網絡的管理。 |
Identity (身份認證服務) | Keystone | 對用戶、租戶和角色、服務 進行認證和授權 |
Dashboard (控制面板服務) | Horizon | 提供web界面管理,與OpenStack底層服務進行交互 |
Image Server (鏡像服務) | Glance | 提供虛擬機鏡像模板的註冊與管理,將最好系統複製爲鏡像模板,在創建虛擬機時直接使用。 |
Block Storage (塊存儲服務) | Cinder | 負責爲允許實例提供持久的塊存儲設備,可進行方便擴展,按需付費,支持多種後端存儲。 |
Object Storage (對象存儲服務) | Swift | 爲OpenStack提供基於雲的彈性存儲,支持羣集無單點故障 |
Telemetry (計量服務) | Ceilometer | 用於度量、監控和控制數據資源的集中來源,爲OpenStack用戶提供記賬途徑 |
-
實驗環境準備
主機名 | IP | 備註 |
---|---|---|
controller | 192.168.200.133 | 控制節點 |
compute | 192.168.200.134 | 計算節點 |
cinder | 192.168.200.143 | 塊存儲節點 |
-
分別配置主機名和hosts文件
# hostnamectl set-hostname controller # bash //控制節點 # hostnamectl set-hostname compute # bash //計算節點 # hostnamectl set-hostname cinder # bash //塊存儲節點 # vim /etc/hosts //三臺都要操作 192.168.200.133 controller 192.168.200.134 compute 192.168.200.143 cinder
-
關閉防火牆
# systemctl stop firewalld # systemctl disable firewalld # setenforce 0 # reboot //重啓系統(非必須)
- 時間同步
-
控制節點:
# yum install chrony -y # vi /etc/chrony.conf server controller iburst allow 192.168.200.0/24 # systemctl enable chronyd.service # systemctl start chronyd.service # chronyc sources
-
網絡節點 & 計算節點
# yum install chrony -y # vi /etc/chrony.conf # server controller iburst # systemctl enable chronyd.service # systemctl start chronyd.service # chronyc sources
-
安裝OpenStack軟件倉庫 & OpenStack client
# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 備份默認yum源 # wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 下載最新yum源 # yum install -y centos-release-openstack-queens //配置OpenStack yum庫 # yum upgrade -y //更新 # yum install -y python-openstackclient //安裝OpenStack客戶端 # yum install -y openstack-selinux //方便自動管理OpenStack服務的安全策略
- 控制節點上部署
-
安裝並配置SQL數據庫
大多數 OpenStack 服務使用 SQL 數據庫來存儲信息。 典型地,數據庫運行在控制節點上。指南中的步驟依據不同的發行版使用MariaDB或 MySQL。OpenStack 服務也支持其他 SQL 數據庫
# yum install mariadb mariadb-server python2-PyMySQL -y # vim /etc/my.cnf.d/openstack.cnf [mysqld] bind-address = 192.168.200.133 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 //基礎設置(設置密碼 其他全部Y)
-
安裝並配置消息隊列
OpenStack 使用 message queue 協調操作和各服務的狀態信息。消息隊列服務一般運行在控制節點上。
# yum install rabbitmq-server -y # /usr/lib/rabbitmq/bin/rabbitmq-plugins list //查看插件安裝情況 # /usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management //啓用rabbitmq_management服務 # systemctl start rabbitmq-server.service # systemctl enable rabbitmq-server # rabbitmqctl add_user openstack RABBIT_PASS //添加 openstack 用戶 , RABBIT_PASS 爲密碼 # rabbitmqctl set_permissions openstack ".*" ".*" ".*" //給openstack用戶配置寫和讀權限
訪問 httpd://192.168.200.133:15672 可以看到web管理頁面
-
安裝並配置Memcached
認證服務認證緩存使用Memcached緩存令牌。緩存服務memecached運行在控制節點。在生產部署中,我們推薦聯合啓用防火牆、認證和加密保證它的安全。
#yum install memcached python-memcached -y # vi /etc/sysconfig/memcached OPTIONS="-l 127.0.0.1,::1,controller" # systemctl enable memcached.service # systemctl restart memcached.service
-
安裝並配置etcd
OpenStack服務可以使用Etcd,一種分佈式可靠的鍵值存儲,用於分佈式密鑰鎖定,存儲配置,跟蹤服務生存和其他場景。# yum install etcd -y # vi /etc/etcd/etcd.conf #[Member] ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ETCD_LISTEN_PEER_URLS="http://192.168.200.133:2380" //宣告羣集地址 ETCD_LISTEN_CLIENT_URLS="http://192.168.200.133:2379" //監聽客戶端地址 ETCD_NAME="controller" #[Clustering] ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.200.133:2380" ETCD_ADVERTISE_CLIENT_URLS="http://192.168.200.133:2379" ETCD_INITIAL_CLUSTER="controller=http://192.168.200.133:2380" ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01" ETCD_INITIAL_CLUSTER_STATE="new" # systemctl enable etcd # systemctl start etcd
-
安裝部署認證服務 (Identity Service )
Keystone爲所有OpenStack服務提供身份認證和授權,跟蹤用戶以及它們的權限,提供一個可用服務以及API的列表。接收前臺請求的Keystone API和後臺的Keystone-db
身份服務包含這些組件:
.
- 服務器 : 一箇中心化的服務器使用RESTful 接口來提供認證和授權服務。
- 驅動 :驅動或服務後端被整合進集中式服務器中。它們被用來訪問OpenStack外部倉庫的身份信息, 並且它們可能已經存在於OpenStack被部署在的基礎設施(例如,SQL數據庫或LDAP服務器)中。
- 模塊: 中間件模塊運行於使用身份認證服務的OpenStack組件的地址空間中。這些模塊攔截服務請求,取出用戶憑據,並將它們送入中央是服務器尋求授權。中間件模塊和OpenStack組件間的整合使用Python Web服務器網關接口。
.
當安裝OpenStack身份服務,用戶必須將之註冊到其OpenStack安裝環境的每個服務。身份服務纔可以追蹤那些OpenStack服務已經安裝,以及在網絡中定位它們。
這個配置部署Fernet令牌和Apache HTTP服務處理請求。
-
創建Keystone 用戶、數據庫並分配訪問權限
# mysql -u root -p > CREATE DATABASE keystone; //創建keystone數據庫 授予對keystone數據庫的適當訪問權限: > GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \ IDENTIFIED BY 'KEYSTONE_DBPASS'; > GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \ IDENTIFIED BY 'KEYSTONE_DBPASS';
-
安裝並配置
# yum install -y openstack-keystone httpd mod_wsgi # vi /etc/keystone/keystone.conf [database] 在該[database]部分中 配置數據庫訪問 connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone [token] 在該[token]部分中,配置Fernet令牌提供程序 provider = fernet //安全消息傳遞算法
-
構建身份認證服務的數據庫、同步數據庫
# su -s /bin/sh -c "keystone-manage db_sync" keystone
-
初始化 Fernet key
# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone # keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
- 引導身份服務
-
管理員的密碼爲 ADMIN_PASS
# keystone-manage bootstrap --bootstrap-password ADMIN_PASS \ --bootstrap-admin-url http://controller:35357/v3/ \ --bootstrap-internal-url http://controller:5000/v3/ \ --bootstrap-public-url http://controller:5000/v3/ \ --bootstrap-region-id RegionOne
-
配置Apache HTTP 服務
# vi /etc/httpd/conf/httpd.conf ServerName controller //配置ServerName引用控制器節點 # ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/ # systemctl enable httpd.service # systemctl start httpd.service
-
設置環境變量
# export OS_USERNAME=admin # export OS_PASSWORD=ADMIN_PASS # export OS_PROJECT_NAME=admin # export OS_USER_DOMAIN_NAME=Default # export OS_PROJECT_DOMAIN_NAME=Default # export OS_AUTH_URL=http://controller:35357/v3 # export OS_IDENTITY_API_VERSION=3
-
創建domain, projects, users, and roles
創建域example # openstack domain create --description "An Example Domain" example 創建service 項目 # openstack project create --domain default --description "Service Project" service 創建demo項目 # openstack project create --domain default --description "Demo Project" demo 創建demo用戶 # openstack user create --domain default --password-prompt demo 這裏輸入密碼: DEMO_PASS 創建user角色 # openstack role create user 將user角色添加到demo項目和用戶 # openstack role add --project demo --user demo user
-
驗證操作:
取消設置臨時 變量OS_AUTH_URL和OS_PASSWORD環境變量:# unset OS_AUTH_URL OS_PASSWORD
-
作爲admin用戶,請求身份驗證令牌:
# openstack --os-auth-url http://controller:35357/v3 \ --os-project-domain-name Default --os-user-domain-name Default \ --os-project-name admin --os-username admin token issue //這裏輸入密碼 ADMIN_PASS
-
作爲demo用戶,請求身份驗證令牌:
# openstack --os-auth-url http://controller:5000/v3 \ --os-project-domain-name Default --os-user-domain-name Default \ --os-project-name demo --os-username demo token issue //這裏輸入密碼 DEMO_PASS
-
創建腳本
創建客戶端環境的腳本admin和demo 項目和用戶。本指南的未來部分引用這些腳本來加載客戶端操作的適當憑據。
客戶端環境腳本的路徑不受限制。爲方便起見,您可以將腳本放在任何位置,但請確保它們可以訪問並位於適合部署的安全位置,因爲它們包含敏感憑據。
OpenStack客戶端還支持使用clouds.yaml文件。有關更多信息,請參閱os-client-config。 -
創建和編輯admin-openrc文件並添加以下內容:
# vim admin-openrc export OS_PROJECT_DOMAIN_NAME=Default export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=ADMIN_PASS export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
-
創建和編輯demo-openrc文件並添加以下內容:
# vim demo-openrc export OS_PROJECT_DOMAIN_NAME=Default export OS_USER_DOMAIN_NAME=Default export OS_PROJECT_NAME=demo export OS_USERNAME=demo export OS_PASSWORD=DEMO_PASS export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
-
使用腳本
要將客戶端作爲特定項目和用戶運行,只需在運行它們之前加載關聯的客戶端環境腳本即可。例如:
加載admin-openrc文件以使用Identity服務的位置以及admin項目和用戶憑據填充環境變量:# source demo-openrc 或者 # source admin-openrc # openstack token issue //請求身份驗證令牌