實驗環境部署
主機名
IP
備注
controllre
192.168.80.184
控制節點
compute01
192.168.80.185
計算節點
注:計算節點可有多個
控制節點和計算節點 環境搭建
分别配置主機名和hosts檔案
# hostnamectl set-hostname controller
# hostnamectl set-hostname compute01 //重新開機生效
# vi /etc/hosts
192.168.80.184 controller
192.168.80.185 compute01
關閉禁用 防火牆及SELinux
# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# vi /etc/sysconfig/selinux
SELINUX=disabled
時間同步
# yum install -y ntp
# ntpdate time1.aliyun.com //同步阿裡雲網絡時間
# date //檢視時間是否同步
安裝必要軟體
# yum install -y vim net-tools wget telnet
安裝openstack包
安裝對應版本的epel庫:
# yum install centos-release-openstack-rocky -y
安裝openstack用戶端:
# yum install python-openstackclient -y
RHEL和CentOS 預設啟用SELinux。安裝 openstack-selinux軟體包以自動管理OpenStack服務的安全政策:
# yum install openstack-selinux -y
資料庫安裝
安裝包:
# yum install mariadb mariadb-server python2-PyMySQL -y
建立和編輯配置檔案 /etc/my.cnf.d/openstack.cnf:
# vi /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 192.168.80.184
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 腳本來保護資料庫服務。特别是,為資料庫root帳戶選擇合适的密碼 :
# mysql_secure_installation
# Enter current password for root (enter for none): Enter(回車) //輸入根目錄的目前密碼(輸入表示無)
# Set root password? [Y/n] y //是否設定root密碼
# New password:
# Re-enter new password:
# Remove anonymous users? [Y/n] y // 是否删除匿名使用者
# Disallow root login remotely? [Y/n] y // 是否禁止root遠端登陸
# Remove test database and access to it? [Y/n] y //是否删除test庫
# Reload privilege tables now? [Y/n] y //加載權限表
Thanks for using MariaDB!
安裝消息隊列
安裝rabbitmq:
# yum install rabbitmq-server -y
啟動rabbitmq:
# systemctl enable rabbitmq-server.service
# systemctl start rabbitmq-server.service
使用此插件實作web管理:
# rabbitmq-plugins enable rabbitmq_management
驗證是否開啟成功
# netstat -anpt | grep 5672
浏覽器通路:192.168.80.184:15672
使用者名 密碼皆為 guest
添加openstack使用者
添加的使用者名為openstack,密碼也是openstack
# rabbitmqctl add_user openstack openstack
對openstack使用者進行讀寫授權:
# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
安裝Memcached
安裝Memacached:
# yum install memcached python-memcached -y
編輯/etc/sysconfig/memcached,修改配置
# vi /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1,::1,192.168.80.184"
注: 修改部分為 ( ,+本機ip)
啟動memcached:
# systemctl enable memcached.service
# systemctl start memcached.service
驗證有沒有開啟
# netstat -anpt | grep memcache
到此環境部署完成。
控制節點: 開始安裝openstack服務
keystone服務安裝
配置keystone資料庫:
使用資料庫通路用戶端以root使用者身份連接配接到資料庫伺服器:
# mysql -u root -p
建立keystone資料庫,授予對keystone資料庫的适當通路權限:
> CREATE DATABASE keystone;
> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';
> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';
> quit
安裝配置keystone
運作以下指令以安裝軟體包:
# yum install openstack-keystone httpd mod_wsgi -y
編輯/etc/keystone/keystone.conf檔案并完成以下操作:
# cd /etc/keystone/
# cp keystone.conf keystone.conf.bak //以防誤操作,盡量先将配置檔案備份一份
# egrep -v "^#|^$" keystone.conf.bak > keystone.conf
# vi keystone.conf
[database]
connection = mysql+pymysql://keystone:[email protected]/keystone
[token]
provider = fernet
填充Identity服務資料庫:
# su -s /bin/sh -c "keystone-manage db_sync" keystone
驗證資料庫表
# mysql -ukeystone -pkeystone -e "use keystone; show tables;"
初始化Fernet密鑰存儲庫:
# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
引導身份服務:
admin為管理使用者的密碼,這裡是設定密碼。
# keystone-manage bootstrap --bootstrap-password admin \
--bootstrap-admin-url http://192.168.80.184:5000/v3/ \
--bootstrap-internal-url http://192.168.80.184:5000/v3/ \
--bootstrap-public-url http://192.168.80.184:5000/v3/ \
--bootstrap-region-id RegionOne
配置Apache HTTP服務
編輯/etc/httpd/conf/httpd.conf
# vi /etc/httpd/conf/httpd.conf
ServerName 192.168.80.184
建立/usr/share/keystone/wsgi-keystone.conf檔案的連結:
# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
啟動服務
啟動Apache HTTP服務并将其配置為在系統引導時啟動:
# systemctl enable httpd.service
# systemctl start httpd.service
配置管理帳戶
# 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.80.184:5000/v3
# export OS_IDENTITY_API_VERSION=3
檢視全局變量是否生效
# env|grep ^OS
建立domain(域),projects(項目),users(使用者) and roles(角色)
# openstack domain create --description "An Example Domain" example
注:OpenStack 是動态生成 ID 的,是以您看到的輸出會與示例中的指令行輸出不相同。
使用預設的domain,建立service項目:用做服務。
# openstack project create --domain default \
--description "Service Project" service
建立myproject項目:用做正常(非管理者)任務應使用非特權項目和使用者。
--description "Demo Project" myproject
建立myuser使用者:
建立使用者需要設定密碼
# openstack user create --domain default \
--password-prompt myuser
注:密碼自定義
建立myrole角色:
# openstack role create myrole
将myuser添加到myproject項目中并賦予myrole的角色:
# openstack role add --project myproject --user myuser myrole
驗證使用者
取消設定臨時 變量OS_AUTH_URL和OS_PASSWORD環境變量:
# unset OS_AUTH_URL OS_PASSWORD
作為admin使用者,請求身份驗證令牌:
執行後需要輸入admin密碼
# openstack --os-auth-url http://192.168.80.184:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name admin --os-username admin token issue
注:
使用者名密碼皆為admin
作為myuser使用者,請求身份驗證令牌:
--os-project-name myproject --os-username myuser token issue
注:上面注冊之後輸入的密碼
建立openstack 用戶端環境腳本
openstack用戶端通過添加參數或使用環境變量的方式來與Identity服務進行互動,為了提高效率,建立環境腳本:
建立admin使用者環境腳本:admin-openstack.sh
# vi admin-openstack.sh
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.80.184:5000/v3
export OS_IDENTITY_API_VERSION=3
建立myuser使用者環境腳本:demo-openstack.sh
# vi demo-openstack.sh
export OS_PROJECT_NAME=myproject
export OS_USERNAME=myuser
export OS_PASSWORD=myuser
export OS_IMAGE_API_VERSION=2
使用腳本
# source admin-openstack.sh 或者 demo-openstack.sh
# openstack token issue //請求身份驗證令牌