本篇博文主要搭建OpenStack架構中的keystone組件,以後會依次帶來OpenStack中的glance、nova、neutron、horizon、cinder和虛擬機的管理操做。在實驗部署以前,先對OpenStack進行如下了解!python
OpenStack既是一個社區,也是一個項目和一個開源軟件,提供開放源碼軟件,創建公共和私有云,它提供了一個部署雲的操做平臺或工具集,其宗旨在於:幫助組織運行爲虛擬計算或存儲服務的雲,爲公有云、私有云,也爲大雲、小云提供可擴展的、靈活的雲計算。
OpenStackd開源項目由社區維護,包括OpenStack計算(代號爲Nova),OpenStack對象存儲(代號爲Swift),並OpenStack鏡像服務(代號Glance)的集合。 OpenStack提供了一個操做平臺,或工具包,用於編排雲。mysql
OpenStack當前主要有三個組件:計算,存儲,鏡像。linux
整個OpenStack是由控制節點,計算節點,網絡節點,存儲節點四大部分組成。
控制節點:負責對其他節點的控制,包含虛擬機創建,遷移,網絡分配,存儲分配等等
計算節點:負責虛擬機運行
網絡節點:負責對外網絡與內網絡之間的通訊
存儲節點:負責對虛擬機的額外存儲管理等等算法
控制節點包括如下服務:sql
本實驗需三臺虛擬機,分別爲控制節點(包含鏡像服務)、計算節點、存儲節點;建議三臺虛擬機配置2個CPU,內存設置爲4G。數據庫
主機 | 系統 | IP地址 | 角色 |
---|---|---|---|
controller | CentOS7 | 192.168.37.128 | keystone、ntp、mariadb、rabbitmq、memcached、etcd、apache |
compute | CentOS7 | 192.168.37.130 | nova、ntp |
cinder | CentOS7 | 192.168.37.131 | cinder、ntp |
一、關閉防火牆 關閉selinuxapache
systemctl stop firewalld.service
setenforce 0bootstrap
二、分別修改主機名vim
hostnamectl set-hostname controller #控制節點
bash
hostnamectl set-hostname compute #計算節點
bash
hostnamectl set-hostname cinder #存儲節點
bashcentos
三、修改hosts文件
vim /etc/hosts
192.168.37.128 controller
192.168.37.130 compute
192.168.37.131 cinder
四、節點互通測試
ping -c 4 openstack.org #發送4個包測試官網聯通
ping -c 4 compute
ping -c 4 openstack.org #計算節點測試
ping -c 4 controller
ping -c 4 openstack.org #存儲節點測試
ping -c 4 controller
五、備份默認yum源
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
七、安裝所需openstack軟件包
yum install centos-release-openstack-queens -y
yum upgrade -y #更新軟件倉庫
yum install python-openstackclient -y
yum install openstack-selinux -y
##controller節點##
一、yum安裝chrony軟件包
yum install chrony -y
二、修改chrony配置文件
vim /etc/chrony.conf #文件開頭插入 server controller iburst #本身爲時間源點全部節點向controller節點同步時間 allow 192.168.37.0/24 #設置時間同步網段
三、開啓NTP服務
systemctl enable chronyd
systemctl stop chronyd
systemctl start chronyd
#因chrony服務自己開機自啓動,因此須要關閉後從新開啓
##其餘節點配置##
一、yum安裝chrony軟件包
yum install chrony -y
二、修改chrony配置文件
vim /etc/chrony.conf server controller iburst #同步controller
三、開啓服務
systemctl stop chronyd
systemctl start chronyd
四、controller上驗證時鐘同步服務
chronyc sources
一、yum安裝mariadb
yum install mariadb mariadb-server python2-PyMySQL -y
二、修改mariadb配置文件
vim /etc/my.cnf.d/mariadb-server.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid #如下是新增內容 bind-address = 192.168.37.128 #綁定地址controller default-storage-engine = innodb #默認存儲引擎 innodb_file_per_table = on #獨立表空間 max_connections = 4096 #最大鏈接 collation-server = utf8_general_ci #字符集設定 character-set-server = utf8
三、開啓mariadb服務,設置開啓自啓動
systemctl enable mariadb.service
systemctl start mariadb.service
四、數據庫基本設置
mysql_secure_installation
#基本設置,除設置密碼爲abc123外所有回車
一、yum安裝rabbitmq-server包
yum install rabbitmq-server -y
二、開啓rabbitmq服務,設置開啓自啓動
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
三、重啓服務後添加用戶及權限
rabbitmqctl add_user openstack 123456 #添加用戶
rabbitmqctl set_permissions openstack "." "." ".*"
一、yum安裝memcached包
yum install memcached python-memcached -y
二、修改memcached配置文件
vim /etc/sysconfig/memcached PORT="11211" USER="memcached" MAXCONN="1024" CACHESIZE="64" OPTIONS="-l 192.168.37.128,::1" #修改監聽IP地址
三、開啓memcached服務,設置開啓自啓動
systemctl enable memcached.service
systemctl start memcached.service
一、yum安裝etcd包
yum install etcd -y
二、修改etcd配置文件,結果以下:
ETCD_INITIAL_CLUSTER #開啓羣集功能:匹配羣集中全部url地址(public、admin、internal) ETCD_INITIAL_ADVERTISE_PEER_URLS ETCD_ADVERTISE_CLIENT_URLS ETCD_LISTEN_CLIENT_URLS [Member] ETCD_DATA_DIR="/var/lib/etcd/default.etcd" #文件存放位置 ETCD_LISTEN_PEER_URLS="http://192.168.37.128:2380" #監聽羣集服務端地址 ETCD_LISTEN_CLIENT_URLS="http://192.168.37.128:2379" #宣告客戶端地址 ETCD_NAME="controller" [Clustering] #匹配羣集地址 ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.37.128:2380" #控制端地址 ETCD_ADVERTISE_CLIENT_URLS="http://192.168.37.128:2379" #客戶端地址 ETCD_INITIAL_CLUSTER="controller=http://192.168.37.128:2380" #羣集名稱設定 ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01" #令牌設定 ETCD_INITIAL_CLUSTER_STATE="new"
三、開啓etcd服務,設置開機自啓動
systemctl enable etcd.service
systemctl start etcd.service
一、單首創建數據庫keystone,聲明用戶並受權
mysql -uroot -p #密碼abc123
create database keystone;
grant all privileges on keystone. to 'keystone'@'localhost' identified by '123456'; #本地用戶受權
grant all privileges on keystone. to 'keystone'@'%' identified by '123456';
flush privileges; #其餘用戶受權
二、yum安裝軟件包
yum install openstack-keystone httpd mod_wsgi -y
三、編輯keystone配置文件
vim /etc/keystone/keystone.conf [database] #737行 connection = mysql+pymysql://keystone:123456@controller/keystone [token] #2922行 provider = fernet #安全消息傳遞算法
四、同步數據庫
su -s /bin/sh -c "keystone-manage db_sync" keystone
五、初始化數據庫
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
六、給管理員設置密碼,註冊三種訪問方式
keystone-manage bootstrap --bootstrap-password 123456 \
--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
一、編輯httpd配置文件
vim /etc/httpd/conf/httpd.conf ServerName controller
二、創建軟鏈接,使apache識別keystone
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
三、開啓Apache服務,設置開機自啓動
systemctl enable httpd.service
systemctl start httpd.service
四、聲明環境變量
export OS_USERNAME=admin
export OS_PASSWORD=123456
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
openstack domain create --description "Domain" example
二、建立項目Service Project
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
#輸入密碼:123456
五、建立用戶角色
openstack role create user
六、添加用戶角色到demo項目和用戶
openstack role add --project demo --user demo user
一、取消環境變量
unset OS_AUTH_URL OS_PASSWORD
二、admin用戶返回的認證token
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
#密碼:123456
三、demo用戶返回的認證token
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
#密碼:123456
四、建立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=123456 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=123456 export OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
六、使用腳本,返回認證token
source ~/admin-openrc
openstack token issue