enabled=1
[mitaka]
name=mitaka
baseurl=http://172.25.254.1/mitaka/Openstack-Mitaka
gpgcheck=0
在主机上升级包:
安装 Openstack客户端:
两个节点都要操作
[root@server1 ~]# yum install -y python-openstackclient
[root@server2 ~]# yum install openstack-selinux
[root@server1 ~]# yum upgrade
[root@server2 ~]# yum upgrade
[root@server2 ~]# yum install -y python-openstackclient
[root@server2 ~]# yum install openstack-selinux
安全并配置组件¶
以下操作控制节点上
[root@server1 ~]# yum install -y mariadb mariadb-server python2-PyMySQL
//在 [mysqld] 部分,设置 bind-address
值为控制节点的管理网络IP地址以使得其它节点可以通过管理网络访问数据库:
[root@server1 ~]# vim /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 172.25.254.11
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
完成安装
[root@server1 ~]# systemctl enable mariadb.service
[root@server1 ~]# systemctl start mariadb.service
//为了保证数据库服务的安全性,运行mysql\_secure\_installation
脚本。特别需要说明的是,为数据库的root用户设置一个适当的密码。
[root@server1 ~]# mysql_secure_installation
安装MongoDB包:
[root@server1 ~]# yum install mongodb-server mongodb
[root@server1 ~]# vim /etc/mongod.conf
bind_ip = 172.25.254.11
默认情况下,MongoDB会在/var/lib/mongodb/journal
目录下创建几个 1 GB 大小的日志文件。如果你想将每个日志文件大小减小到128MB并且限制日志文件占用的总空间为512MB,配置 smallfiles 的值:
完成安装
启动MongoDB 并配置它随系统启动:
[root@server1 ~]# systemctl enable mongod.service
[root@server1 ~]# systemctl start mongod.service
消息队列
安全并配置组件
1.安装包:
[root@server1 ~]# yum install -y rabbitmq-server
2.启动消息队列服务并将其配置为随系统启动:
[root@server1 ~]# systemctl enable rabbitmq-server.service
[root@server1 ~]# systemctl start rabbitmq-server.service
3.查看端口:
[root@server1 ~]# netstat -antlp | grep :5672
添加 openstack 用户,密码 为openstack
[root@server1 ~]# rabbitmqctl add_user openstack openstack
给openstack
用户配置写和读权限:
[root@server1 ~]# rabbitmqctl set_permissions openstack “.*” “.*” “.*”
[root@server1 ~]# rabbitmq-plugins list
[root@server1 ~]# rabbitmq-plugins enable rabbitmq_management
[root@server1 ~]# netstat -antlp | grep :15672
访问 http://172.25.254.11:15672/
Memcached
认证服务认证缓存使用Memcached缓存令牌。缓存服务memecached运行在控制节点。在生产部署中,我们推荐联合启用防火墙、认证和加密保证它的安全。
安全并配置组件
[root@server1 ~]# yum install memcached python-memcached
启动 memcached
[root@server1 ~]# systemctl enable memcached.service
[root@server1 ~]# systemctl start memcached.service
认证服务
Openstack 身份认证服务
在控制节点
进入 mysql 创建 keystone 数据库并授予权限
在你配置 OpenStack 身份认证服务前,你必须创建一个数据库和管理员令牌。
1、完成下面的步骤以创建数据库
数据库连接客户端以 root 用户连接到数据库服务器:
[root@server1 ~]# mysql -uroot -p //我在这里的密码是redhat
创建 keystone 数据库:
MariaDB [(none)]> create database keystone;
对
keystone
数据库授予恰当的权限:
MariaDB [(none)]> grant all privileges on keystone.* to ‘keystone’@‘localhost’ identified by ‘keystone’;
退出数据库客户端。
MariaDB [(none)]> exit
2、 生成一个随机值在初始的配置中作为管理员的令牌。
[root@server1 ~]# openssl rand -hex 10
29c27f7d00a35bc3380a
安全并配置组件
运行以下命令来安装 httpd,mod_wsgi,keystoen
[root@server1 ~]# yum install -y openstack-keystone httpd mod_wsgi
3、编辑文件 /etc/keystone/keystone.conf 并完成如下动作:
[root@server1 ~]# vim /etc/keystone/keystone.conf
[DEFAULT] //在[DEFAULT]
部分,定义初始管理令牌的值
admin_token = 29c27f7d00a35bc3380a
[database]
connection = mysql+pymysql://keystone:keystone@controller/keystone //在 [database] 部分,配置数据库访问
[token]
provider = fernet //在[token]
部分,配置Fernet UUID令牌的提供者。
4、初始化身份认证服务的数据库:
[root@server1 ~]# su -s /bin/sh -c “keystone-manage db_sync” keystone
5、初始化Fernet keys:
[root@server1 ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
配置 Apache HTTP 服务器
1、编辑/etc/httpd/conf/httpd.conf
文件,配置ServerName
选项为控制节点:
[root@server1 ~]# vim /etc/httpd/conf/httpd.conf
ServerName controller
2、用下面的内容创建文件 /etc/httpd/conf.d/wsgi-keystone.conf。
[root@server1 ~]# vim /etc/httpd/conf.d/wsgi-keystone.conf
Listen 5000
Listen 35357
<VirtualHost *:5000>
WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-public
WSGIScriptAlias / /usr/bin/keystone-wsgi-public
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
ErrorLogFormat “%{cu}t %M”
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
Require all granted
<VirtualHost *:35357>
WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-admin
WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
ErrorLogFormat “%{cu}t %M”
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
Require all granted
启动 Apache HTTP 服务:
[root@server1 ~]# systemctl enable httpd.service
[root@server1 ~]# systemctl start httpd.service
创建服务实体和API端点
1、配置认证令牌:
[root@server1 ~]# export OS_TOKEN=29c27f7d00a35bc3380a
2、配置端点URL:
[root@server1 ~]# export OS_URL=http://controller:35357/v3
3、配置认证 API 版本:
[root@server1 ~]# export OS_IDENTITY_API_VERSION=3
创建服务实体和API端点
1、在你的Openstack环境中,认证服务管理服务目录。服务使用这个目录来决定您的环境中可用的服务。
创建服务实体和身份认证服务:
[root@server1 ~]# openstack service create --name keystone --description “OpenStack Identity” identity
创建认证服务的 API 端点:
[root@server1 ~]# openstack endpoint create --region RegionOne identity public http://controller:5000/v3
[root@server1 ~]# openstack endpoint create --region RegionOne identity admin http://controller:35357/v3
创建域、项目、用户和角色
1.创建域default
:
[root@server1 ~]# openstack domain create --description “Default Domain” default
2.在你的环境中,为进行管理操作,创建管理的项目、用户和角色:
创建 admin 项目
[root@server1 ~]# openstack project create --domain default --description “Admin Project” admin
创建 admin 用户
[root@server1 ~]# openstack user create --domain default --password-prompt admin
创建 admin 角色
[root@server1 ~]# openstack role create admin
添加
admin
角色到 admin 项目和用户上:
[root@server1 ~]# $ openstack role add --project admin --user admin admin //这个命令执行后没有输出。
3.本指南使用一个你添加到你的环境中每个服务包含独有用户的service 项目。创建service
项目:
[root@server1 ~]# openstack project create --domain default --description “Service Project” service
4.常规(非管理)任务应该使用无特权的项目和用户。作为例子,本指南创建 demo 项目和用户。
创建
demo
项目:
[root@server1 ~]# penstack project create --domain default --description “Demo Project” demo
//当为这个项目创建额外用户时,不要重复这一步。
创建
demo
用户:
[root@server1 ~]# openstack user create --domain default --password-prompt demo
创建 user 角色:
[root@server1 ~]# openstack role create user
添加 user
角色到
demo 项目和用户:
[root@server1 ~]# openstack role add --project demo --user demo user
//你可以重复此过程来创建额外的项目和用户。
验证操作
//在控制节点上执行这些命令。
1.重置OS\_TOKEN
和OS\_URL
环境变量:
unset OS_TOKEN OS_URL
2.作为 admin 用户,请求认证令牌:
[root@server1 ~]# 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 //这个命令使用admin
用户的密码。
3.作为demo
用户,请求认证令牌:
[root@server1 ~]# 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
//这个命令使用demo
用户的密码和API端口5000,这样只会允许对身份认证服务API的常规(非管理)访问。
创建 OpenStack 客户端环境脚本
创建脚本
1.编辑文件 admin-openrc 并添加如下内容:
[root@server1 ~]# vim admin-openrc //将 ADMIN_PASS 为在认证服务中为 admin 用户选择的密码,我的为westos
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=westos
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
2.编辑文件 demo-openrc 并添加如下内容:
[root@server1 ~]# vim demo-openrc //将 DEMO_PASS 为在认证服务中为 demo 用户选择的密码,我这里也是westos
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=westos
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
使用脚本
1.加载admin-openrc
文件来身份认证服务的环境变量位置和admin
项目和用户证书:
[root@server1 ~]# . admin-openrc
2.请求认证令牌:
[root@server1 ~]# openstack token issue
镜像服务
OpenStack镜像服务包括以下组件:
glance-api :接收镜像API的调用,诸如镜像发现、恢复、存储。
glance-registry :存储、处理和恢复镜像的元数据,元数据包括项诸如大小和类型。
数据库 :存放镜像元数据,用户是可以依据个人喜好选择数据库的,多数的部署使用MySQL或SQLite。
镜像文件的存储仓库:支持多种类型的仓库,它们有普通文件系统、对象存储、RADOS块设备、HTTP、以及亚马逊S3。记住,其中一些仓库仅支持只读方式使用。
元数据定义服务:通用的API,是用于为厂商,管理员,服务,以及用户自定义元数据。这种元数据可用于不同的资源,例如镜像,工件,卷,配额以及集合。一个定义包括了新属性的键,描述,约束以及可以与之关联的资源的类型。
安装和配置
安装和配置镜像服务之前,你必须创建创建一个数据库、服务凭证和API端点。
1.完成下面的步骤以创建数据库:
用数据库连接客户端以 root 用户连接到数据库服务器:
[root@server1 ~]# mysql -u root -p
创建 glance 数据库:
对
glance
数据库授予恰当的权限:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO ‘glance’@‘localhost’ IDENTIFIED BY ‘glance’;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO ‘glance’@‘%’ IDENTIFIED BY ‘glance’;
退出数据库客户端。
2.获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
[root@server1 ~]# . admin-openrc
3.要创建服务证书,完成这些步骤:
创建 glance 用户:
[root@server1 ~]# openstack user create --domain default --password-prompt glance
添加 admin 角色到 glance 用户和 service 项目上。
[root@server1 ~]# openstack role add --project service --user glance admin //这个命令执行后没有输出。
创建
glance
服务实体:
[root@server1 ~]# openstack service create --name glance --description “OpenStack Image” image
创建镜像服务的 API 端点:
[root@server1 ~]# openstack endpoint create --region RegionOne image public http://controller:9292
[root@server1 ~]# openstack endpoint create --region RegionOne image internal http://controller:9292
[root@server1 ~]# openstack endpoint create --region RegionOne image admin http://controller:9292
安全并配置组件
1.安装软件包:
[root@server1 ~]# yum install openstack-glance
2.编辑文件 /etc/glance/glance-api.conf 并完成如下动作:
[root@server1 ~]# vim /etc/glance/glance-api.conf
在 [database] 部分,配置数据库访问:
[database]
connection = mysql+pymysql://glance:glance@controller/glance
在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问:
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance
[paste_deploy]
flavor = keystone
//GLANCE_PASS 为认证服务中 glance 用户选择的密码。
//在 [keystone_authtoken] 中注释或者删除其他选项。
在 [glance_store] 部分,配置本地文件系统存储和镜像文件位置
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
3.编辑文件 []( )/etc/glance/glance-registry.conf
并完成如下动作:
[root@server1 ~]# vim /etc/glance/glance-registry.conf
在 [database] 部分,配置数据库访问:
[database]
connection = mysql+pymysql://glance:glance@controller/glance
在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问:
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance
[paste_deploy]
flavor = keystone
//密码为镜像服务选择的密码。
4.写入镜像服务数据库
[root@server1 ~]# su -s /bin/sh -c “glance-manage db_sync” glance
查看 glance 数据库是否有数据已经同步:
[root@server1 ~]# mysql -uroot -p
MariaDB [(none)]> use glance;
MariaDB [glance]> show tables;
完成安装
启动镜像服务:
[root@server1 ~]# systemctl enable openstack-glance-api.service openstack-glance-registry.service
[root@server1 ~]# systemctl start openstack-glance-api.service openstack-glance-registry.service
验证操作
在控制节点上执行这些命令
1.获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
[root@server1 ~]# . admin-openrc
[root@server1 ~]# wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
-bash: wget: command not found //没有此命令
如果您的发行版里没有包含wget,请安装它
[root@server1 ~]# yum install -y wget //进行下载
2.下载源镜像:
[root@server1 ~]# wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
该过程下载有点慢
3.使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它:
[root@server1 ~]# openstack image create “cirros” --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --public
4.确认镜像的上传并验证属性:
[root@server1 ~]# openstack image list
计算服务概览
OpenStack计算服务由下列组件所构成:
nova-api 服务
nova-api-metadata 服务
[]( )nova-compute
服务
[]( )nova-scheduler
服务
[]( )nova-conductor
模块
[]( )nova-cert
模块
nova-network worker 守护进程
nova-consoleauth 守护进程
nova-novncproxy 守护进程
nova-spicehtml5proxy 守护进程
nova-xvpvncproxy 守护进程
nova-cert 守护进程
[]( )nova
客户端
队列
SQL数据库
安装并配置控制节点
这个部分将描述如何在控制节点上安装和配置 Compute 服务
1.为了创建数据库,必须完成这些步骤:
用数据库连接客户端以 root 用户连接到数据库服务器:
[root@server1 ~]# mysql -u root -p
创建 nova_api 和 nova 数据库:
MariaDB [(none)]> CREATE DATABASE nova_api;
MariaDB [(none)]> CREATE DATABASE nova;
对数据库进行正确的授权:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO ‘nova’@‘localhost’
-> IDENTIFIED BY ‘nova’;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO ‘nova’@‘%’
-> IDENTIFIED BY ‘nova’;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO ‘nova’@‘localhost’
-> IDENTIFIED BY ‘nova’;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO ‘nova’@‘%’
-> IDENTIFIED BY ‘nova’;
退出数据库客户端。
2.获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
[root@server1 ~]# . admin-openrc
3.要创建服务证书,完成这些步骤:
创建 nova 用户:
[root@server1 ~]# openstack user create --domain default --password-prompt nova
给 nova 用户添加 admin 角色:
[root@server1 ~]# $ openstack role add --project service --user nova admin
创建 nova 服务实体:
[root@server1 ~]# openstack service create --name nova --description “OpenStack Compute” compute
4.创建 Compute 服务 API 端点 :
[root@server1 ~]# openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1/%(tenant_id)s
[root@server1 ~]# openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1/%(tenant_id)s
[root@server1 ~]# openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1/%(tenant_id)s
安全并配置组件
1.安装软件包:
[root@server1 ~]# yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler
2.编辑/etc/nova/nova.conf
文件并完成下面的操作:
[root@server1 ~]# vim /etc/nova/nova.conf
在
[DEFAULT]
部分,只启用计算和元数据API:
[DEFAULT]
enabled_apis = osapi_compute,metadata
在
[api\_database]
和[database]
部分,配置数据库的连接:
api_database]
connection = mysql+pymysql://nova:nova@controller/nova_api
[database]
connection = mysql+pymysql://nova:nova@controller/nova
在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:
[DEFAULT]
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack
[DEFAULT]
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = nova
在 [DEFAULT 部分,配置
my\_ip
来使用控制节点的管理接口的IP 地址。
[DEFAULT]
my_ip = 172.25.254.11
在 [DEFAULT] 部分,使能 Networking 服务: