⑴ openstack必須安裝哪些組件
一、 資料庫
a) 安裝
# apt-get install python-mysqldb mysql-server
b) 配置
修改 /etc/mysql/my.cnf
[mysqld]
…
bind-address = 127.0.0.1 # ip 地址全部使用本機
default-storage-engine = innodb #設置默認存儲引擎為 Innodb
innodb_file_per_table
collation-server = utf8_general_ci #設置編碼格式
init-connect = 'SET NAMES utf8'
character-set-server = utf8
c) 重啟 mysql 服務,使用安全模式初始化資料庫,刪除匿名用戶
# service mysql restart
# mysql_secure_installation 或 # mysql_install_db
二、 軟體包配置
a) 安裝 OpenStack Havana Ubuntu 雲檔案
# apt-get install python-software-properties
# add-apt-repository cloud-archive:Havana
b) 更新軟體包資料庫,更新系統
# apt-get update && apt-get dist-upgrade
# reboot
三、 消息服務
消息服務使用 rabbitmq
# apt-get install rabbitmq-server
註: rabbitmq 默認提供一個 guest 用戶和默認的 guest 密碼,這里需要修改一下 guest 用戶的密碼,因為後面配置 nova 服務的時候需要用到 rabbitmq 密碼
# rabbitmqctl change_password guest openstack
四、 Keystone 認證服務
a) 安裝
# apt-get install keystone
b) 配置
1) 修改資料庫連接方式,編輯配置文件 /etc/keystone/keystone.conf
...
[sql]
# The SQLAlchemy connection string used to connect to the database
connection = mysql://keystone:[email protected]/keystone
...
2) 刪除默認創建的資料庫
rm –f /var/lib/keystone/keystone.db
3) 創建資料庫
# mysql -u root -p
mysql> CREATE DATABASE keystone;
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'openstack';
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'openstack';
4) 創建數據表
# keystone-manage db_sync
5) 創建一個隨機的 Token 用於連接認證服務時使用
# openssl rand -hex 10 > /root/token # 後面還會用到所以可以保存起來
編輯 /etc/keystone/keyston.conf
[DEFAULT]
# A "shared secret" between keystone and other openstack services
admin_token = ADMIN_TOKEN
...
6) 重啟服務
# service keystone restart
c) 創建租戶 (tenant) 、用戶 (user) 、角色 (role)
在還沒有創建任何用戶之前,我們必須要使用 token 來進行認證,可以將 token 設置為環境變數,或者在使用 keystone 命令的時候使用 –os-token 命令來指定 token 。
這里設置為環境變數:
# export OS_SERVICE_TOKEN=ADMIN_TOKEN
# export OS_SERVICE_ENDPOINT=http://127.0.0.1:35357/v2.0
1) 創建租戶 admin 和 service
# keystone tenant-create --name=admin --description="Admin Tenant"
# keystone tenant-create --name=service --description="Service Tenant"
2) 創建用戶 admin
#keystone user-create --name=admin --pass=openstack --email=admin@localhost
# keystone role-create --name=admin
3) 為 admin 創建 role
4) 關聯 user 、 tenant 和 role
# keystone user-role-add --user=admin --tenant=admin --role=admin
d) 創建服務 (service) 和訪問端點 (endpoint)
1) 創建 keystone 服務,類型為 identity( 認證 )
# keystone service-create --name=keystone --type=identity --description="Keystone Identity Service"
2) 使用上面返回的 service id 來創建服務的訪問端點
# keystone endpoint-create \
--service-id=the_service_id_above\
--publicurl=http://127.0.0.1:5000/v2.0 \
--internalurl=http://127.0.0.1:5000/v2.0 \
--adminurl=http://127.0.0.1:35357/v2.0
e) 校驗 keystone 服務
現在已經創建了 admin 用戶,所以可以通過 admin 用戶來訪問 keystone 服務
$ unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT
$ keystone --os-username=admin --os-password=openstack --os-auth-url=http://127.0.0.1:35357/v2.0 token-get
為了避免每次都需要輸入用戶名和密碼,可以將它們保存為環境變數。編輯 /root/keystone.sh
export OS_USERNAME=admin
export OS_PASSWORD=openstack
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://127.0.0.1:35357/v2.0
這樣只要執行 # source keystone.sh 命令就可以連接 keystone 了
五、 鏡像服務 —glance
a) 安裝
# apt-get install glance python-glanceclient
b) 配置
1) 設置資料庫連接
編輯配置文件 /etc/glance/glance-api.conf 和 /etc/glance/glance-registry.conf
...
[DEFAULT]
...
# SQLAlchemy connection string for the reference implementation
# registry server. Any valid SQLAlchemy connection string is fine.
# See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.
html#sqlalchemy.create_engine
sql_connection = mysql://glance:[email protected]/glance
...
2) 創建資料庫
# mysql -u root -p
mysql> CREATE DATABASE glance;
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
IDENTIFIED BY 'openstack';
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
IDENTIFIED BY 'openstack';
3) 創建數據表
# glance-manage db_sync
4) 創建 glance 用戶並關聯到角色
# keystone user-create --name=glance --pass=openstack --email=glance@localhost
# keystone user-role-add --user=glance --tenant=service --role=admin
5) 配置 glance 服務使用 keystone 來進行認證
編輯 /etc/glance/glance-api.conf 和 /etc/glance/glance-registry.conf 文件
[keystone_authtoken]
...
auth_uri = http://127.0.0.1:5000
auth_host = 127.0.0.1
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = glance
admin_password = openstack
...
[paste_deploy]
...
flavor = keystone
6) 添加認證信息到 /etc/glance/glance-api-paste.ini 和 /etc/glance/glance-registry-paste.ini 文件
[filter:authtoken]
paste.filter_factory=keystoneclient.middleware.auth_token:filter_factory
auth_host=127.0.0.1
admin_user=glance
admin_tenant_name=service
admin_password=openstack
7) 注冊鏡像服務
# keystone service-create --name=glance --type=image --description="Glance Image Service"
8) 使用上面返回的 service id 創建訪問點
# keystone endpoint-create \
--service-id=the_service_id_above \
--publicurl=http://127.0.0.1:9292 \
--internalurl=http://127.0.0.1:9292 \
--adminurl=http://127.0.0.1:9292
9) 重啟鏡像服務
# service glance-registry restart
# service glance-api restart
c) 創建鏡像文件
CirrOS 鏡像是常用的一個 qcow2 類型的鏡像,下載鏡像並上傳到 glance 伺服器
$ mkdir images
$ cd images/
$ wget http://cdn.download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-disk.img
# glance image-create --name="CirrOS 0.3.1" --disk-format=qcow2 --container-format=bare --is-public=true < cirros-0.3.1-x86_64-disk.img
查看上傳的鏡像可以使用
# glance image-list
六、 計算服務
a) 安裝計算服務軟體包
# apt-get install nova-novncproxy novnc nova-api nova-ajax-console-proxy nova-cert nova-conctor nova-consoleauth nova-doc nova-scheler python-novaclient
# apt-get install nova-compute-kvm python-guestfs
修改內核 bug
# dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-$(uname -r)
# vim /etc/kernel/postinst.d/statoverride
#!/bin/sh
version="$1"
# passing the kernel version is required
[ -z "${version}" ] && exit 0
dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-${version}
# chmod +x /etc/kernel/postinst.d/statoverride
b) 配置
1) 配置資料庫
編輯配置文件 /etc/nova/nova.conf
...
[database]
# The SQLAlchemy connection string used to connect to the database
connection = mysql://nova:[email protected]/nova
[keystone_authtoken]
auth_host = 127.0.0.1
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = nova
admin_password = openstack
2) 配置計算服務使用 rabbitmq 消息隊列傳送信息
編輯配置文件 /etc/nova/nova.conf
...
[DEFAULT]
rpc_backend = nova.rpc.impl_kombu
rabbit_host = 127.0.0.1
rabbit_password = openstack # 如果rabbitmq未改,則使用默認guest密碼
...
⑵ nova資料庫拒絕訪問
系統不兼容。nova資料庫拒絕訪問是由於系統不兼容,將系統更新到最新版本重新訪問即可,nova手機是華為公司於2016年9月開始發布的系列手機,通常使用MySQL架構。