1. 程式人生 > >OpenStack部署應用第一篇:認證服務keystone安裝(轉)

OpenStack部署應用第一篇:認證服務keystone安裝(轉)

注:OpenStack版本N版

1、網路時間協議(NTP)

注:一定要保證openstack所有節點的時間一致性,不然無法正常建立虛擬機器

1.1 控制節點

# yum install -y chrony ntpdate                     # 安裝軟體包
# vim /etc/chrony.conf
  server time1.aliyun.com                # 使用NTP伺服器的主機名或者IP地址替換 NTP_SERVER 。配置支援設定多個 server 值。
  allow 192.168.56.0/24                  # 為了允許其他節點可以連線到控制節點的 chrony 後臺程序
systemctl enable chronyd.service # 啟動 NTP 服務並將其配置為隨系統啟動 systemctl start chronyd.service systemctl restart chronyd.service \cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 更改時區為北京上海

1.2 其他節點

# 其他節點會連線控制節點同步時間。在所有其他節點執行這些步驟。
yum install -y chrony ntpdate                                      
# 安裝軟體包 vim /etc/chrony.conf server 192.168.56.11 # 註釋其他的時間伺服器 systemctl enable chronyd.service # 啟動 NTP 服務並將其配置為隨系統啟動 systemctl start chronyd.service \cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 更改時區為北京上海

1.3 驗證操作結果

chronyc sources    #
進行時間同步,控制節點先執行保證

1.4 配置網際網路時間伺服器(可選)

\cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime            # 更改時區為北京上海
ntpdate time1.aliyun.com                                        # 同步阿里雲的時間伺服器
*/5 * * * * /usr/sbin/ntpdate time1.aliyun.com >/dev/null 2>&1  # 配置定時任務,每5分鐘同步一次時間

2、環境準備

2.1 基礎準備工作(所有節點)

# yum install -y centos-release-openstack-newton # 安裝OpenStack庫
# yum install -y python-openstackclient          # 安裝 OpenStack 客戶端
# yum install -y openstack-selinux               # 安裝 openstack-selinux 包實現對OpenStack服務的安全策略進行自動管理

2.2 配置SQL資料庫

  大多數 OpenStack 服務使用 SQL 資料庫來儲存資訊。 典型地,資料庫執行在控制節點上。指南中的步驟依據不同的發行版使用MariaDB或 MySQL。OpenStack 服務也支援其他 SQL 資料庫,包括PostgreSQL。Openstack的所有元件除了Horizon,都要用到資料庫,本文使用的是mysql,在CentOS7中,預設叫做MariaDB。 

1.在 [mysqld] 部分,設定 ``bind-address``值為控制節點的管理網路IP地址以使得其它節點可以通過管理網路訪問資料庫:

[[email protected] ~]# vim /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 192.168.56.11
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
引數詳解: default
-storage-engine = innodb      # 預設的儲存引擎 innodb_file_per_table            # 使用獨享的表空間 collation-server = utf8_general_ci # 設定校對標準 init-connect = 'SET NAMES utf8'      # 設定連線的字符集 character-set-server = utf8        # 設定建立資料庫時預設的字元

開機自啟和啟動mysql systemctl enable mariadb.service systemctl start mariadb.service systemctl status mariadb.service netstat -ltnp|grep 3306 # 檢查mysql資料庫埠是否開啟

設定mysql的密碼 mysql_secure_installation
登入資料庫建立所有元件的庫並授權 mysql
-uroot -p123456
執行sql,為每個元件建立一個數據庫與賬戶,並授權 CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.
* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone'; CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance'; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance'; CREATE DATABASE nova; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova'; CREATE DATABASE nova_api; GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'nova'; GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'nova'; CREATE DATABASE neutron; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron'; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron'; CREATE DATABASE cinder; GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'cinder'; GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder';
檢查資料庫與使用者是否建立成功(一共6個數據庫,5個使用者) MariaDB [(none)]
> show databases; MariaDB [(none)]> select user,host from mysql.user;

2.3 部署訊息佇列
node1節點安裝

# yum install -y rabbitmq-server
# systemctl enable rabbitmq-server.service
# systemctl start rabbitmq-server.service
# rabbitmqctl add_user openstack openstack                    # 新增 openstack 使用者 RABBIT_PASS修改為要使用的密碼,使用openstack即可
# rabbitmqctl set_permissions openstack ".*" ".*" ".*"        # 給``openstack``使用者配置寫和讀許可權
# rabbitmq-plugins enable rabbitmq_management                 # 啟動頁面
登入:http://192.168.56.11:15672/
賬號:guest
密碼:guest

2.4 Memcache

node1節點安裝

# yum install -y memcached python-memcached
# systemctl enable memcached.service
# systemctl start memcached.service

3、OpenStack之keystone認證服務配置

 伺服器

  一箇中心化的伺服器使用RESTful 介面來提供認證和授權服務。

Drivers

  驅動或服務後端被整合進集中式伺服器中。它們被用來訪問OpenStack外部倉庫的身份資訊, 並且它們可能已經存在於OpenStack被部署在的基礎設施(例如,SQL資料庫或LDAP伺服器)中。

Modules

  中介軟體模組運行於使用身份認證服務的OpenStack元件的地址空間中。這些模組攔截服務請求,取出使用者憑據,並將它們送入中央是伺服器尋求授權。中介軟體模組和OpenStack元件間的整合使用Python Web伺服器閘道器介面。

準備工作:

1)配置資料庫(為方便部署把後續使用的資料庫一起部署完成,也可以部署到各子元件再建立)

$ mysql -u root -p
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';

CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance';


CREATE DATABASE nova;
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'nova';

CREATE DATABASE nova_api;
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'nova';


CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron';

CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'cinder';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder';

2)安裝軟體包

yum install -y openstack-keystone httpd mod_wsgi
[[email protected] keystone]# grep -n '^[a-z]' /root/keystone/keystone/keystone.conf 
640:connection = mysql+pymysql://keystone:[email protected]/keystone
1472:servers = 192.168.56.11:11211
2655:provider = fernet
2665:driver = memcache
su -s /bin/sh -c "keystone-manage db_sync" keystone                               # 切換使用者執行初始化身份認證服務的資料庫
ll /var/log/keystone/keystone.log                                                # 檢查是否生成日誌
mysql -h 192.168.56.11 -ukeystone -pkeystone -e "use keystone;show tables;"       # 檢查結果

4、初始化Fernet key:

# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

5、Bootstrap the Identity service(修改keystone資料庫 endpoint配置)
keystone-manage bootstrap --bootstrap-password admin \
  --bootstrap-admin-url http://192.168.56.11:35357/v3/ \
  --bootstrap-internal-url http://192.168.56.11:35357/v3/ \
  --bootstrap-public-url http://192.168.56.11:5000/v3/ \
  --bootstrap-region-id RegionOne


ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

# systemctl enable httpd.service
# systemctl start httpd.service
# netstat -tunlp  # 檢查服務正常啟動

配置admin賬戶
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://192.168.56.11:35357/v3
export OS_IDENTITY_API_VERSION=3

檢查已經建立的內容
openstack user list           # 檢視賬號列表
openstack project list        # 檢視專案列表
openstack role list            # 檢視角色列表
openstack service list        # 檢視使用者列表
openstack endpoint list        # 檢視endpoint列表


建立域、專案、使用者和角色

建立專案
openstack project create --domain default --description "Service Project" service
openstack project list

openstack project create --domain default --description "Demo Project" demo
openstack user create --domain default --password-prompt demo                   # 使用互動式設定demo使用者的密碼,密碼為設定:demo
openstack user create --domain default --password demo  demo                 # 使用非互動式設定demo使用者的密碼,密碼為設定:demo  第一個是密碼 第二個是制定的密碼
openstack role create user
openstack role add --project demo --user demo user                                # demo使用者新增到demo專案 賦予user角色許可權


openstack user create --domain default   --password-prompt glance        # 密碼設定:glance
openstack role add --project service --user glance admin

openstack user create --domain default   --password-prompt nova            # 密碼設定:nova
openstack role add --project service --user nova admin

openstack user create --domain default   --password-prompt neutron        # 密碼設定:neutron
openstack role add --project service --user neutron admin    

openstack user create --domain default   --password-prompt cinder        # 密碼設定:cinder
openstack role add --project service --user cinder admin


建立錯誤,如何重新建立賬號?

[[email protected]-node1 conf.d]# openstack user
openstack: 'user' is not an openstack command. See 'openstack --help'.
Did you mean one of these?
  user create
  user delete
  user list
  user password set
  user set
  user show
  consumer create
  consumer delete
  consumer list
  consumer set
  consumer show
  router add port
  router add subnet
  router create
  router delete
  router list
  router remove port
  router remove subnet
  router set
  router show
  router unset
  subnet create
  subnet delete
  subnet list
  subnet pool create
  subnet pool delete
  subnet pool list
  subnet pool set
  subnet pool show
  subnet pool unset
  subnet set
  subnet show
  subnet unset
  
openstack user list        # 先獲取ID
openstack delete id        # 根據ID進行刪除
401認證錯誤


驗證操作
unset OS_AUTH_URL
unset OS_PASSWORD
# 請求認證令牌,密碼admin
openstack --os-auth-url http://192.168.56.11:5000/v3   --os-project-domain-name default --os-user-domain-name default   --os-project-name admin --os-username admin token issue
# 請求認證令牌,密碼demo
openstack --os-auth-url http://192.168.56.11:5000/v3   --os-project-domain-name default --os-user-domain-name default   --os-project-name demo --os-username demo token issue

建立 OpenStack 客戶端環境指令碼
[[email protected]-node1 ~]# cat admin-openstack 
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
export OS_AUTH_URL=http://192.168.56.11:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

[[email protected]-node1 ~]# cat demo-openstack 
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
export OS_AUTH_URL=http://192.168.56.11:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

使用指令碼
source admin-openstack 
openstack token issue


Keystone常見錯誤
401            # 驗證失敗,keystone相關使用者賬戶密碼設定錯誤,時間不同步,或者輸入的專案名稱不對
409            # keystone建立使用者,使用者已存在
500            # 伺服器內部錯誤,服務配置有問題,看日誌,檢查配置
服務故障    # 相關服務沒有起來
提示:解決Keystone最好的方法,一定要學會檢視日誌


埠記錄:
MySQL----------3306
RabbitMQ-------5672
RabbitMQ Web---15672
Memcached------11211

相關推薦

OpenStack部署應用第一認證服務keystone安裝

注:OpenStack版本N版 1、網路時間協議(NTP) 注:一定要保證openstack所有節點的時間一致性,不然無法正常建立虛擬機器 1.1 控制節點 # yum install -y chrony ntpdate # 安裝軟體包 # vim /etc/chro

OpenStack部署應用第二映象服務glance

1、映象服務Glance介紹   映象服務 (glance) 允許使用者發現、註冊和獲取虛擬機器映象。它提供了一個 REST API,允許您查詢虛擬機器映象的 metadata 並獲取一個現存的映象。您可以將虛擬機器映象儲存到各種位置,從簡單的檔案系統到物件儲存系統—-例如 OpenStack 物件儲存, 並

OpenStack部署應用第七虛擬機器建立流程

1、虛擬機器建立流程 2、深入理解虛擬機器的磁碟、網路及Metadata 3、OpenStack虛擬機器生產映象構建實踐 1.建立虛擬機器硬碟 qemu-img create -f qcow2 /tmp/centos.qcow2 10G 2.建立虛擬機器 virt-install --virt-type

第一面向物件程式設計基礎

面向物件程式設計(Object Oriented Programming),簡稱OOP。是java程式設計的核心,也是java web應用開發的核心。主要有三個概念:封裝,繼承,和多型。 簡要闡述下三個概念:1、封裝:封裝是OOP語言的優點之一。把一個物件的資

阿裏雲一 第一服務器ECS

更新 廠商 隔離 linux 操作 last 彈性 攻擊 培訓 linu 阿裏雲(www.aliyun.com)創立於2009年,是全球領先的雲計算及人工智能科技公司,為200多個國家和地區的企業、開發者和政府機構提供服務。截至2017年3月,阿裏雲付費雲計算用戶達8

Spring Cloud系列教程 | 第一服務架構演進

架構的演變過程: 單體架構——>垂直架構——>soa面向服務架構——>微服務架構 我們為什麼要使用Spring Cloud? 單體架構 在網站開發的前期,專案面臨的流量相對較少,單一應用可以實現我們所需要的功能,從而減少開發、部署和維護的難度。

第一Tomcat介紹、安裝、配置

分享圖片 訪問網站 esp ext .tar.gz resp less a20 關閉防火墻 一、Tomcat介紹 Tomcat是Apache軟件基金會(Apache Software Foundation)的Jakarta項目中的一個核心項目,有Apache 、Sun和其

linux學習第一在VirtualBox下安裝linux作業系統

轉載地址:https://blog.csdn.net/yuchao2015/article/details/52132270 感謝博主提供如此詳細的linux安裝地址  目標:在linux伺服器上部署Java開發的網站  工具 VirtualBox-4.3.8:下載後

2017年第一關於EKF2的討論總有你想要的

一、開篇         首先,自我介紹一下,我叫summer,很久很久很久沒有更新blog了,這一段時間確實是太忙了,         然後,很多人應該都知道summer開PX4培訓班了吧,在此非常感謝大家的捧場。         接著,也接觸了很多神一樣的人物,交流一些

安全類工具制作第005進程管理器

btn creat lan 控件 lookup 包括 lln create tdi 一、前言 這次的程序是為了完好上一次所編寫的進程管理器。使得當我們選中某一個進程的時候。能夠查看其DLL文件,而且能夠對可疑的模塊進行卸載操作。這樣就能夠有效對抗DLL的

《Java從入門到放棄》入門springMVC數據傳遞

java springmvc modelandview 上一篇講完了springMVC中數據傳遞中的接收數據,今天繼續完成數據的向後傳遞。數據傳遞的核心對象ModelAndView,註意其包名,不要引用錯了!正確的:org.springframework.web.servlet.ModelAndV

分享知識-快樂自己服務配置檔案 整合

單機版 dubbo 配置: 釋出服務:   <!-- 釋出dubbo服務 --> <!-- 提供方應用資訊,用於計算依賴關係 名稱可以自擬 --> <dubbo:application name="taotao_manager" />

Spring第一基於XML裝配bean,三種例項化方式預設構造、靜態工廠、例項工廠

Spring中基於XML中的裝配bean有三種方式: 1.預設構造 2.靜態工廠 3.例項工廠 1.預設構造     在我們在Spring的xml檔案中直接通過:     <bean id="名字" class="全限定類名" ></bea

註解提高自定義註解處理器APT

## 0x01 繼承AbstractProcessor抽象類 當定義好Annotation註解後,接下來就需要一個註解處理器來處理我們的自定義註解了。實現Java Annotation一般需要繼承AbstractProcessor抽象類,並且重寫其四個方法來實現提取,解析並處理自定義註解的邏輯如下: cla

從蘇寧電器到卡巴斯基第21單證這一年

單證的學習與生活       這是我第一次來到北京工業大學學習,我覺得與我的本科學校相比,那麼這裡簡直就是天堂了。唯一可能不太好的,就是寢室裡面是那種上下鋪的設定,而本科是上床下桌。我覺得上床下桌那種,

第一計算機網路與因特網1

1.1 端系統通過通訊鏈路和分組交換機連線到一起; 分組交換機從它的一條入通訊鏈路接收到達的分組,並從它的一條出通訊鏈路轉發該分組,目前市面上兩種著名的分組交換機包括路由器和鏈路層交換機 鏈路層交換

《OneForAll框架搭建之旅》前端微前端架構設計Vue

心之所向,勇往直前!記錄開發過程中的那些小事,給自己加點經驗值。 前言 作為一個.Net後端開發,在競爭愈加激烈的當下,掌握點前端配菜好像已經是家常便飯了。 剛好在工作的第5個年頭,辭去小主管職務的我要再次踏上面試之路,為了要避免被面試官吊打,除了複習《吊打面試

Mac服務管理-Launchd

dir keepal item tcp/ip 開發 定時 ram com tdi 背景: 在Mac下沒有像Linux那樣有很多的關於init方面的工具,從init的發展歷史https://en.wikipedia.org/wiki/Init上可以知道,Mac使用的是Lau

CentOS設置程序開機啟動程序/服務的方法

關閉 str 兩種 title sin 命令 系統環境變量 file lamp 註意:CentOS 6下基本沒什麽問題,CentOS 7估計不一定能行。 在CentOS系統下,主要有兩種方法設置自己安裝的程序開機啟動。 1、把啟動程序的命令添加到/etc/rc.d/rc

window下如何使用Git上傳代碼到github遠程服務器上

輸入密碼 msysgit 9.png users erl create 建立 OS 要求 註冊賬戶以及創建倉庫 首先你得有一個github賬號,沒有自行註冊,登錄成功後應該是這樣 在頁面上方用戶菜單上選擇 “+”->New repository 創建一個新的倉庫