OpenStack搭建企業私有云 一:認證服務

雲計算介紹

雲計算是一種模型,能夠提供無論在何時何地都可以便捷獲取所需資源的模型,這些資源可以是網絡資源、存儲資源、服務器資源,甚至是服務器或者應用軟件資源等。

雲計算模型中有三種基本服務模型可用:

  • 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管理頁面

OpenStack搭建企業私有云 一:認證服務

  • 安裝並配置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

    OpenStack搭建企業私有云 一:認證服務

  • 設置環境變量

    # 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

    OpenStack搭建企業私有云 一:認證服務OpenStack搭建企業私有云 一:認證服務

  • 驗證操作:
    取消設置臨時 變量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

OpenStack搭建企業私有云 一:認證服務OpenStack搭建企業私有云 一:認證服務

  • 創建腳本

    創建客戶端環境的腳本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   //請求身份驗證令牌

    OpenStack搭建企業私有云 一:認證服務

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章