openstack-newton搭建记录
本文最后更新于 124 天前,其中的信息可能已经有所发展或是发生改变。

环境:

  • Ubuntu16.0.4(虚拟机)
  • 单网卡
  • open stack-newton版本

此次搭建是为了学习openstack搭建

首先更新软件源(建议使用阿里云软件源)

sudo apt-get update && sudo apt-get dist-upgrade

修改hosts(192.168.5.1为自己ip)

vi /etc/hosts
192.168.5.1 controller

一、安装Openstack Packages

sudo apt-get install software-properties-common
sudo add-apt-repository cloud-archive:newton
sudo apt-get install python-openstackclient
sudo apt-get update && sudo apt-get dist-upgrade

二、安装MariaDB和创建数据库

一、安装MariaDB

apt install mariadb-server python-pymysql

配置MariaDB数据库配置文件

vi /etc/mysql/mariadb.conf.d/99-openstack.cnf

在配置文件里面添加以下内容(#后的内容不需要写入)

[mysqld]
bind-address = 192.168.5.1
# 此处为控制节点ip
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

使用命令重启MariaDB

service mysql restart

安装部署MySQL(会要求创建密码)

mysql_secure_installation

二、安装消息队列服务

apt install rabbitmq-server

使用rabbitmqctl工具创建一个新用户(openstack为用户名,RABBIT_PASS为密码自行修改)

rabbitmqctl add_user openstack RABBIT_PASS

设置OpenStack权限

rabbitmqctl set_permissions openstack ".*" ".*" ".*"

安装memcached服务

apt install memcached python-memcache

配置memcached服务

vi /etc/memcached.conf

加入以下内容(括号内容不需要写入)

-l 192.168.5.1  (控制节点的管理网ip)

重启memcached服务

service memcached restart

三、安装和配置Keystone

首先以root用户登录MariaDB数据库

mysql -u root -p

创建Keystone数据库(其中KEYSTONE_DBPASS 为密码,自行修改)

CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';

安装并修改Keystone

apt-get install keystone

配置Keystone

vi /etc/keystone/keystone.conf

修改以下内容(其中KEYSTONE_DBPASS为你之前设置的密码)

[database]
connection = mysql+pymysql://keystone:[email protected]/keystone
[token]
provider = fernet

填充keystone数据库

su -s /bin/sh -c "keystone-manage db_sync" keystone

初始化Fernet key

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

启动认证服务(其中ADMIN_PASS为密码,自行修改)

keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
  --bootstrap-admin-url http://controller:35357/v3/ \
  --bootstrap-internal-url http://controller:35357/v3/ \
  --bootstrap-public-url http://controller:5000/v3/ \
  --bootstrap-region-id RegionOne

配置httpd

 vi /etc/apache2/apache2.conf

将以下内容添加进去

ServerName controller

重启apache服务

service apache2 restart

创建domains, projects, users, and roles(其中ADMIN_PASS为之前设置的密码,自行修改)

rm -f /var/lib/keystone/keystone.db
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
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

创建一个Service项目为每项提供服务添加环境中

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

创建user角色

openstack role create user

把用户demo添加demo项目中

openstack role add --project demo --user demo user

结束后清理配置:

1.出于安全考虑,把临时授权令牌取消掉

vi /etc/keystone/keystone-paste.ini

 把[pipeline:public_api], [pipeline:admin_api], [pipeline:api_v3] 段中的admin_token_auth移除

2.清除授权环境变量

 unset OS_AUTH_URL OS_PASSWORD

测试是否安装成功

1.使用admin和demo用户请求令牌测试

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
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


创建admin和demo项目、用户的客户端环境脚本

创建admin-openrc文件

vi admin-openrc

添加以下内容(其中ADMIN_PASS为之前设定的密码)

export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

加载admin项目脚本内容(注意admin-openrc与”.”之间有空格)

. admin-openrc

请求一个认证密钥进行测试

openstack token issue

创建demo-openrc文件

vi demo-openrc

添加以下内容(其中DEMO_PASS为之前设定的密码)

export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

加载admin项目脚本内容(注意demo-openrc与”.”之间有空格)

. demo-openrc

请求一个认证密钥进行测试

openstack token issue

四、安装和配置Glance

进入数据库

mysql -u root -p

创建Glance数据库(其中GLANCE_DBPASS为密码,自行设定)

CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';

进入admin模式

. admin-openrc

创建用户(会需要设置密码)

openstack user create --domain default --password-prompt glance

为Glance和Service项目添加admin角色

openstack role add --project service --user glance admin

创建Glance服务实体

openstack service create --name glance --description "OpenStack Image" image

创建镜像服务API

openstack endpoint create --region RegionOne image public http://controller:9292
openstack endpoint create --region RegionOne image internal http://controller:9292
openstack endpoint create --region RegionOne image admin http://controller:9292

配置完成后,开始安装Glance

sudo apt-get install glance

编辑/etc/glance/glance-api.conf

vi /etc/glance/glance-api.conf

对以下内容进行修改

[database]
connection = mysql+pymysql://glance:[email protected]/glance
# 此处GLANCE_DBPASS为上面设置的数据库密码
[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_PASS
# 此处的GLANCE_PASS为上面设置的Glance密码
[paste_deploy]
flavor = keystone
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

编辑/etc/glance/glance-registry.conf

vi /etc/glance/glance-registry.conf

修改以下内容

[database]
connection = mysql+pymysql://glance:[email protected]/glance
[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_PASS
# 此处GLANCE_PASS为上面设置的Glance密码
[paste_deploy]
flavor = keystone 

填充glance数据库

su -s /bin/sh -c "glance-manage db_sync" glance

启动glance服务

service glance-registry restart
service glance-api restart

Glance配置完成,验证Glance

加载.admin权限脚本

. admin-openrc

下载Cirros镜像进行测试(部分地区网络因GFW可能无法下载或者下载速度过慢)

wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
# 或者使用我网盘保存的镜像
wget http://pan.him.plus/cirros-0.3.4-x86_64-disk.img

使用openstack脚本添加一个镜像服务

openstack image create "cirros" \
  --file cirros-0.3.4-x86_64-disk.img \
  --disk-format qcow2 --container-format bare \
  --public

创建完毕后,使用以下命令检查镜像状态是否处于active

openstack image list

五、安装配置Nova

进入数据库

mysql -u root -p

创建数据库nova和nova_api(以下NOVA_DBPASS为数据库密码,自行设定)

CREATE DATABASE nova_api;
CREATE DATABASE nova;
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';

进入admin模式

. admin-openrc

创建Nova用户(会要求创建Nova用户的密码)

openstack user create --domain default --password-prompt nova

添加Nova用户到admin角色中

openstack role add --project service --user nova admin

创建Nova服务实体

openstack service create --name nova --description "OpenStack Compute" compute

创建计算服务API

openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1/%\(tenant_id\)s
openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1/%\(tenant_id\)s
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1/%\(tenant_id\)s

创建完成后,开始安装Nova核心组件

sudo apt-get install nova-api nova-conductor nova-consoleauth nova-novncproxy nova-scheduler

编辑/etc/nova/nova.conf

vi /etc/nova/nova.conf

修改以下内容

[api_database]
connection = mysql+pymysql://nova:[email protected]/nova_api
# 此处密码为数据库密码
[database]
connection = mysql+pymysql://nova:[email protected]/nova
# 此处密码为数据库密码
[DEFAULT]
transport_url = rabbit://openstack:[email protected]
# 此处密码为消息队列密码
[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_PASS
# 此处NOVA_PASS为你设定的nova密码
[DEFAULT]
my_ip = 192.168.5.1
# 控制节点的管理网ip
[DEFAULT]
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
[vnc]
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
[glance]
api_servers = http://controller:9292
[oslo_concurrency]
lock_path = /var/lib/nova/tmp

填充nova数据库

su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage db sync" nova

启动nova服务

service nova-api restart
service nova-consoleauth restart
service nova-scheduler restart
service nova-conductor restart
service nova-novncproxy restart

若此时使用demo-openrc,则将环境切换至admin环境下:

. admin-openrc

查看Nova服务列表,并检查status与state是否正常

openstack compute service list

五、安装配置Dashboard

sudo apt-get install openstack-dashboard

编辑/etc/openstack-dashboard/local_settings.py

vi /etc/openstack-dashboard/local_settings.py

对其进行修改

1、配置Dashboard在控制节点上使用openstack服务

OPENSTACK_HOST = "controller"

2、配置Dashboard主机访问权限

ALLOWED_HOSTS = ['*', ]

3、配置memcached session存储服务

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'

CACHES = {
    'default': {
         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
         'LOCATION': 'controller:11211',
    }
}

4、启用认证API V3版本服务

OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST

5、启用域名支持

OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT=Ture

6、配置API

OPENSTACK_API_VERSIONS = {
    "identity": 3,
    "image": 2,
    "volume": 2,
}

7、将通过Dashboard创建的用户的默认域配置为Default

OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "default"

8、通过Dashboard创建的用户的默认角色设置为user

OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"

9、禁用所有L3网络服务

OPENSTACK_NEUTRON_NETWORK = {
   'enable_router': False,
   'enable_quotas': False,
   'enable_ipv6': False,
   'enable_distributed_router': False,
   'enable_ha_router': False,
   'enable_lb': False,
   'enable_firewall': False,
   'enable_vpn': False,
   'enable_fip_topology_check': False,
}

10、配置时间区域

TIME_ZONE = "Asia/Shanghai"

重启apache2服务

service apache2 reload

DashBoard访问地址为

http://controller/horizon
# 或
http://你的ip/horizon

问题:

一、访问http://controller/horizon发现出现无法访问

查看apache日志 (/var/log/apache2/error.log),出现错误:

"Truncated or oversized response headers received from daemon process 'horizon':
/usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi"

解决方案:

在文件/etc/apache2/conf-available/openstack-dashboard.conf中添加一句 
WSGIApplicationGroup %{GLOBAL}

二、解决以上问题后发现可以访问仪表盘,但是登录发现提示“出错啦!遇到异常情况,请刷新。如需帮助请联系管理员。”

解决方案:

# 编辑/etc/openstack-dashboard/local_settings.py
vi /etc/openstack-dashboard/local_settings.py

#找到这一行代码
#SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
#修改为
SESSION_ENGINE = 'django.contrib.sessions.backends.file'
重启服务
service apache2 reload
systemctl restart httpd memcached
systemctl status httpd memcached
本文仅用于学习、研究和交流目的,欢迎非商业性质转载。
本文链接:https://him.plus/archives/116
本人邮箱:[email protected]
● 文章内容仅供参考,所涉及的软件以具体使用情况为准!
● 文章内容部分来源于互联网,本站不代表任何立场;涉及到的软件来源于互联网,仅供个人学习参考,请勿用于商业用途,版权归软件开发者所有,下载后请务必于24小时内删除,请支持正版!因下载本站任何资源造成的损失,全部责任由使用者本人承担!如果你是版权方,认为本文内容对您的权益有所侵犯,请联系本站管理员,并参照侵删联系的说明提交相应的证明材料,本站将进行严格地资质审查和背景调查后,情况属实的将在三天内对本文删除或修正。本站对互联网版权绝对支持!
● 本站一贯非常高度重视知识产权保护并遵守各项知识产权法律、法规和具有约束力的规范性文件。重视正版,打击盗版。根据法律、法规和规范性文件要求,本站旨在保护权利人的合法权益的措施和步骤,当权利人发现在本站生成的链接所指向的第三方网页的内容侵犯其合法权益时,权利人应事先向本站发出"权利通知",本站将根据当地法律法规和政府规范性文件采取措施移除相关内容或链接。
● 访问本站的用户必须明白,本站对提供下载的第三方软件不拥有任何权利,其版权归该资源的合法拥有者所有。
● 本站保证站内提供的所有可下载资源(软件等)都是按“原样”提供,本站未做过任何改动;但本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。不论何种情形我们都不对任何由于使用或无法使用本站提供的信息所造成的直接的、间接的、附带的、特殊的或余波所及的损失、灵失、债务或中断负任何责任﹝不论是可预见或是不可预见的,即使我们巳被告知这种可能性﹞。
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇