實驗環境部署python
主機名 | IP | 備註 |
controllre | 192.168.80.184 | 控制節點 |
compute01 | 192.168.80.185 | 計算節點 |
注:計算節點可有多個mysql
控制節點和計算節點 環境搭建linux
分別配置主機名和hosts文件web
# hostnamectl set-hostname controller # hostnamectl set-hostname compute01 //重啓生效 # vi /etc/hosts 192.168.80.184 controller
192.168.80.185 compute01sql
關閉禁用 防火牆及SELinux數據庫
# systemctl stop firewalldbootstrap
# systemctl disable firewalldvim
# setenforce 0centos
# 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:keystone@192.168.80.184/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項目:用作常規(非管理員)任務應使用非特權項目和用戶。
# openstack project create --domain default \
--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用戶,請求身份驗證令牌:
# openstack --os-auth-url http://192.168.80.184:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--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_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=myproject
export OS_USERNAME=myuser
export OS_PASSWORD=myuser
export OS_AUTH_URL=http://192.168.80.184:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
使用腳本
# source admin-openstack.sh 或者 demo-openstack.sh
# openstack token issue //請求身份驗證令牌