本文根据OpenStack官方安装教程《openstack-install-guide-apt-havana》,翻译并重新整理成简易版的安装教程,安装了keystone、glance、nova、horizon四个组件,网络使用nova-network,由于条件所限,其他组件没有安装。

一、架构设计

两个节点:controller和compute
节点 外网ip 内网ip
controller 10.82.83.140 192.168.0.10
compute 10.82.83.155 192.168.0.11

二、基本操作系统配置

1、操作系统准备、ubuntu 12.04(LTS)64位、确保联网
2、确保物理机开启虚拟化,如果在虚拟机上安装openstack,请监测是否支持kvm

# grep -E '(vmx|svm)' /proc/cpuinfo

然后安装

#apt-get install qemu-kvm ubuntu-vm-builder bridge-utils

执行如下命令,如果没有任何显示则正常

#modprobe kvm
#modprobe kvm_intel
#modprobe kvm_amd

然后执行如下命令

#kvm-ok
#adduser root kvm

2、两台机器都创建root用户、执行 apt-get update
3、查看网关和子网掩码

  # route -n

4、查看dns

  # cat /etc/resolv.conf

5、分别配置网络

#vi /etc/network/interfaces
例如:controller配置后的内容为:# External Networkauto eth0iface eth0 inet staticaddress 10.82.83.140netmask 255.255.252.0gateway 10.82.81.1dns-nameservers 221.12.33.227# Internal Networkauto eth1iface eth1 inet staticaddress 192.168.0.10netmask 255.255.255.0

另外,在/etc/resolv.conf中配置dns

# nameserver 221.12.33.227

6、重启网络服务

# service networking restart

7、分别修改hostname,例如controller

#hostname controller

8、分别编辑 /etc/hostname文件

#文件内容为:
127.0.0.1 localhost
192.168.0.10 controller
192.168.0.11 compute1

9、分别执行更新

#apt-get update

分别安装ntp服务器

# apt-get install ntp

使compute1节点与controller同步,进入/etc/ntp.conf
server ntp.ubuntu.com改为 server controller iburst,然后重启ntp

# service ntp restart

10、controller节点安装MySQL

# apt-get install python-mysqldb mysql-server

为mysql创建root密码,再编辑mysql配置文件/etc/mysql/my.cnf
将绑定地址从127.0.0.1改为192.168.0.10,如下所示:bind-address =192.168.0.10
重启mysql使配置生效

# service mysql restart

【可不操作】删除匿名用户

# mysql_install_db
# mysql_secure_installation

11、在controller以外的其他节点(即compute1)安装mysql客户端

# apt-get install python-mysqldb

12、controller安装Messaging服务——RabbitMQ

# apt-get install rabbitmq-server

RabbitMQ默认用户guest的密码是guest,修改RabbitMQ密码的命令是:

# rabbitmqctl change_password guest 123456

13、分别安装Havana源

# apt-get install python-software-properties
# add-apt-repository cloud-archive:havana

然后执行更新系统并重启

# apt-get update && apt-get dist-upgrade
# reboot

三、配置Identity Service——keystone

1、在controller节点上安装keystone和python-keystoneclient(系统会自动安装)

# apt-get install keystone

2、编辑/etc/keystone/keystone.conf这个文件,主要修改如下几个参数:

# vi /etc/keystone/keystone.conf
admin_token=openstack(生产环境应该将这个参数设置得非常复杂)
connetion = mysql://keystone:123456@controller/keystone(123456是mysql密码)
【可添加】设置debug和verbose为true来排错
debug=True
verbose=True

3、建立一个keystone数据库,并赋予其相应的操作权限

# mysql -u root -p
mysql> CREATE DATABASE keystone;
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY '123456';
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY '123456';

4、初始化keystone的表结构

# keystone-manage db_sync

5、重启服务

# service keystone restart

可以通过 #service keystone status查看状态,确认服务正常启动
!可以通过/var/log/keystone/keystone.log查看log文件
6、调用命令“keystone client”,验证keystone是否正常工作

# export OS_SERVICE_TOKEN=openstack
# export OS_SERVICE_ENDPOINT=http://controller:35357/v2.0/
# keystone user-list(出现空行是正常的表现)

7、接下来,创建一个用户、一个tenant和一个role,创建之前必须设置TOKEN和ENDPOINT这两个环境变量。
创建一个为admin使用的tenant和一个为其他openstack服务使用的tenant

# keystone tenant-create --name=admin --description="Admin Tenant"
# keystone tenant-create --name=service --description="Service Tenant"

创建一个名为admin的用户,密码是123456

# keystone user-create --name=admin --pass="123456" --email=admin@example.com

创建一个名为admin的角色

# keystone role-create --name=admin

最后将tenant、user、role组合起来,在admin的tenant中分配admin的角色给用户admin

# keystone user-role-add --user admin --role admin --tenant admin

8、定义Services和API Endpoints
创建一个keystone的服务和keystone的API Endpoints

# keystone service-create --name keystone --type identity --description 'OpenStack Identity'
# keystone endpoint-create --service-id 5d7efff76645438893de385aff310f5d\
--adminurl 'http://controller:35357/v2.0'\
--internalurl 'http://controller:5000/v2.0'

9、验证keystone的安装
取消设置OKEN和ENDPOINT这两个环境变量

# unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT

使用常规的用户名和密码来验证

# keystone --os-username=admin --os-password=123456 \
--os-auth-url=http://controller:35357/v2.0 token-get

确认验证是按期望在tenant上进行的

# keystone --os-username=admin --os-password=123456\
--os-auth-url=http://controller:35357/v2.0 token-get

使用keystone中床架的用户名和密码进行认证,设置如下代码,可以写在一个脚本里,如 openrc.sh

#openrc.sh脚本内容为
export OS_USERNAME=admin
export OS_PASSWORD=123456
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://controller:35357/v2.0

让配置的环境变量生效

# source openrc.sh

验证环境变量是否配置成功

# keystone token-get

验证admin账号能够管理

# keystone user-list

四、配置镜像服务(Image Service)——Glance

1、安装镜像服务

(1)在controller节点上安装镜像服务

# apt-get install glance python-glanceclient

(2)修改/etc/glance/glance-api.conf和/etc/glance/glance-registry.conf

#两个文件的[Default]部分
sql_connection = mysql://glance:123456@controller/glance

(3)删除/var/lib/glance/目录下的glance.sqlite文件,防止出错
(4)创建glance数据库

# mysql -u root -p
mysql> CREATE DATABASE glance;
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '123456';
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '123456';

(5)初始化表结构

# glance-manage db_sync

(6)创建一个glance用户,使用service tenant给用户admin的角色(需要执行一遍之前的openrc.sh脚本)

# keystone user-create --name=glance --pass=123456 --email=glance@example.com
# keystone user-role-add --user=glance --tenant=service --role=admin

(7)修改/etc/glance/glance-api.conf/etc/glance/glance-registry.conf[keystone_authtoken][paste_deploy]部分

#[keystone_authtoken]部分
[keystone_authtoken]
auth_uri = http://controller:5000
auth_host = controller
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = glance
admin_password = 123456
#[paste_deploy]部分
[paste_deploy]
flavor = keystone

(8)编辑/etc/glance/glance-api-paste.ini/etc/glance/glance-registry-paste.ini文件

#[filter:authtoken]部分
[filter:authtoken]
paste.filter_factory=keystoneclient.middleware.auth_token:filter_factory
auth_host=controller
admin_user=glance
admin_tenant_name=service
admin_password=123456

(9)在keystone中创建Glance服务

# keystone service-create --name=glance --type=image\
--description="Glance Image Service"

(10)使用上面得到的id属性创建Endpoint API

# keystone endpoint-create --service-id=6364f6ae0cbf4af9a821361140da3793\
--internalurl=http://controller:9292\
--adminurl=http://controller:9292

(11)重启glance服务

# service glance-registry restart
# service glance-api restart

2、验证镜像服务(Image Service)的安装

(1)下载CirrOS镜像

#mkdir images
#cd images/
#wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

havana版本中下载地址为 http://cdn.download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-disk.img
但并不可用,更新为kilo版本中的 http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
(2)上传镜像

# glance image-create --name=imageLabel --disk-format=fileFormat\
--container-format=containerFormat --is-public=accessValue < imageFile
# 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

(3)确认镜像上传成功

# glance image-list

五、配置计算服务(Compute services)——Nova

1、安装计算控制服务——在controller节点

(1)安装compute packages

# apt-get install nova-novncproxy novnc nova-api nova-ajax-console-proxy\nova-cert nova-conductor nova-consoleauth\ nova-doc nova-scheduler python-novaclient

(2)修改/etc/nova/nova.conf,添加[database][keystone_authtoken]部分

#[database]部分
[database]
connection = mysql://nova:123456@controller/nova
#[keystone_authtoken]部分
[keystone_authtoken]
auth_host = controller
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = nova
admin_password =123456

(3)修改/etc/nova/nova.conf,在 [DEFAULT] 部分添加以下内容

#[DEFAULT]  部分添加内容
rpc_backend = nova.rpc.impl_kombu
rabbit_host = controller
rabbit_password =guest

(4)删除/var/lib/nova/目录下的nova.sqlite
(5)创建一个nova数据库

# mysql -u root -p
mysql> CREATE DATABASE nova;
mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '123456';
mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '123456';

(6)初始化表结构

# nova-manage db sync

(7)修改/etc/nova/nova.conf,在[DEFAULT] 部分添加以下内容

#[DEFAULT]  部分添加内容
my_ip=192.168.0.10
vncserver_listen=192.168.0.10
vncserver_proxyclient_address=192.168.0.10

(8)创建一个nova用户,使用service tenant给用户admin的角色

# keystone user-create --name=nova --pass=123456 --email=nova@example.com
# keystone user-role-add --user=nova --tenant=service --role=admin

(9)修改/etc/nova/nova.conf,在[DEFAULT] 部分添加以下内容

#[DEFAULT]  部分添加的内容
auth_strategy=keystone

(10)添加[filter:authtoken]/etc/nova/api-paste.ini文件

#[filter:authtoken]内容
[filter:authtoken]
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
auth_host = controller
auth_port = 35357
auth_protocol = http
auth_uri = http://controller:5000/v2.0
admin_tenant_name = service
admin_user = nova
admin_password =123456

(11)在keystone中创建nova服务

# keystone service-create --name=nova --type=compute\--description="Nova Compute service"

(12)使用上面得到的id属性创建Endpoint API

# keystone endpoint-create --service-id=76525b703d104371afc7a2da9b894a79\--publicurl=http://controller:8774/v2/%\(tenant_id\)s\ --internalurl=http://controller:8774/v2/%\(tenant_id\)s\--adminurl=http://controller:8774/v2/%\(tenant_id\)s

(13)重启Compute services

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

(14)验证配置是否正确

#nova image-list

2、配置compute节点

(1)安装相应的package

# apt-get install nova-compute-kvm python-guestfs

(2)让内核稳定,执行

# dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-$(uname -r)

或者,新建文件/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

(4)编辑/etc/nova/nova.conf

#添加以下内容
[DEFAULT]
auth_strategy=keystone
[database]
connection = mysql://nova:123456@controller/nova

(5)修改/etc/nova/nova.conf

#[DEFAULT]  部分添加内容
rpc_backend = nova.rpc.impl_kombu
rabbit_host = controller
rabbit_password =guest

(6)修改/etc/nova/nova.conf

#[DEFAULT]  部分添加内容
my_ip=192.168.0.11
vnc_enabled=True
vncserver_listen=0.0.0.0
vncserver_proxyclient_address=192.168.0.11
novncproxy_base_url=http://controller:6080/vnc_auto.html

(7)修改/etc/nova/nova.conf

#[DEFAULT]  部分添加内容
glance_host=controller

(8)编辑/etc/nova/api-paste.ini文件

#修改[filter:authtoken]部分
[filter:authtoken]
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
auth_host = controller
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = nova
admin_password =123456

(9)重启compute service

# service nova-compute restart

(10)删除文件

# rm /var/lib/nova/nova.sqlite

3、让网络生效

(1)在compute1节点上安装packages

# apt-get install nova-network nova-api-metadata

(2)编辑/etc/nova/nova.conf

#在部分添加以下内容
[DEFAULT]
network_manager=nova.network.manager.FlatDHCPManager
firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver
network_size=254
allow_same_net_traffic=False
multi_host=True
send_arp_for_ha=True
share_dhcp_address=True
force_dhcp_release=True
flat_network_bridge=br100
flat_interface=eth0
public_interface=eth0

(3)重启network service

# service nova-network restart

(4)所有的安装结束后,在controller节点执行如下命令,请注意是controller节点!!!

# source openrc.sh
# nova network-create vmnet --fixed-range-v4=10.0.0.0/24\
--bridge=br100 --multi-host=T

六、添加Dashboard

1、安装dashboard——controller节点

(1) 执行下面命令安装dashboard

# apt-get install memcached libapache2-mod-wsgi openstack-dashboard

此时可以通过 查看,也可以通过如下命令去除ubuntu的界面,还原Horizon的界面

# apt-get remove --purge openstack-dashboard-ubuntu-theme

(2)【可不做】确保/etc/openstack-dashboard/local_settings.py中的值和/etc/memcached.conf对应的值相同,主要是address和port
(3)【谨慎操作】使用下面命令将使OpenStack只能在安装的机器上运行,编辑/etc/openstack-dashboard/local_settings.py

#修改如下
ALLOWED_HOSTS = ['localhost', 'my-desktop']

(4)编辑/etc/openstack-dashboard/local_settings.py

#修改如下
OPENSTACK_HOST = "controller"

(5)重启Apache web server和 memcached

# service apache2 restart
# service memcached restart

(6)可以通过http://10.82.83.140/horizon 访问

openstack简易教程到此结束


tips:

1、在配置compute1节点时:
配置/etc/nova/nova.conf时,novncproxy_base_url=http://controller:6080/vnc_auto.html 不要写成controller
因为在外网环境下解析不了该域名,应该写成控制节点的外网IP,例如:
novncproxy_base_url=http://10.82.83.129:6080/vnc_auto.html

2、在配置dashboard时,ALLOWED_HOSTS不要配成ALLOWED_HOSTS = ['localhost', 'my-desktop'],而是配成ALLOWED_HOSTS=['*']
否则外网访问不了dashboard,即horizon。
3、常用检查命令:
Controller节点检查命令:

# nova-manage service list
如果state是笑脸,表明服务正常。

4、通过VMware等工具创建虚拟机,将vmdk文件拷贝至images的目录下,然后执行下面命令转换成qcow2格式。

# qemu-img convert -f vmdk -O qcow2 ubuntu.vmdk ubuntu.qcow2

再执行下面命令就上传成功

# glance image-create --name="ubuntu" --disk-format=qcow2\--container-format=bare --is-public=true < ubuntu.img

OpenStack简易安装教程--Havana版本相关推荐

  1. Axure for mac安装教程(版本8.1.0.3382)

    Axure for mac安装教程(版本8.1.0.3382) 第一步--下载安装包 官网下载安装包:https://www.axure.com/download 第二步--安装 如图双击刚下下来的A ...

  2. Ubuntu16.04环境下PyTorch简易安装教程

    安装NVIDIA GPU显卡驱动 如果需要安装cuda版本的PyTorch,电脑也有独立显卡的时候,一般需要更新一下Ubuntu独立显卡驱动.否则即使安装了cuda版本的PyTorch也没办法使用GP ...

  3. python官网下载安装教程-各种版本的Python下载安装教程

    python从17年开始大火,自然想学python的同学就多了,小编整理了这篇文章,从python的功能介绍.各系统最新版本python下载.python全部版本下载.python下载后安装教程以及p ...

  4. npm,vue简易安装教程

    npm,vue安装教程 1.下载node.js 直接去官网下载就好:Node.js 官网 点进去有两个选项,一个是LTS版本,一个是Current版本,下载LTS版本就好. LTS是长期支持(Long ...

  5. Python安装教程(版本3.8.10)windows10

    Python目前已支持市面上的各大主流操作系统,在Linux.Unix.Mac系统已经自带Python环境,本章将介绍在Windows系统上安装Python.一般下载 executable insta ...

  6. CUDA简易安装教程

    我的当前配置是Win10+GTX1060,大部分的笔记本电脑其实都是独立显卡,不需要太多的检查吧,如果电脑比较特殊就检查一下自己的硬件设备是否完全支持,CUDA版本应该都差不多,我就选择11.0来安装 ...

  7. mysql5.7安装教程centos_MySQL5.7版CentOS系统简易安装教程

    这一篇教程,我们一起来完成MySQL在CentOS系统中的安装. 1.下载MySQL(Community版)RPM安装源. 如果没有安装wget,需要先执行命令安装. 执行命令: yum -y ins ...

  8. Kubuntu简易安装教程(压缩磁盘版)

    所有文件都在这个链接的文件夹里面 所需文件 - 123云盘https://www.123pan.com/s/DLbDVv-y7DfA 1.下载系统和Refus 点进去下载这两个 2.制作U盘启动盘 假 ...

  9. pytorch安装教程 GPU版本

    1.首先安装Anaconda 官网http://www.anaconda.com/ 下载最新版本就好 下载完后点下一步安装直到这一步选择just me 是只对当前用户 all users是所有用户 这 ...

最新文章

  1. 最全的CSS浏览器兼容问题整理
  2. Pycharm运行Scrapy报错:no active project Unknown command: crawl Use “scrapy“ to see available commands
  3. pstack命令学习
  4. nbiot模块WH-NB73 UDP透传和透传云使用说明
  5. php 5.2.6升级,Centos5.5 简单方法升级php到php5.2.6
  6. (转)淘淘商城系列——SSM框架整合之Dao层整合
  7. Head First 设计模式 —— 单例模式(Singleton)
  8. python学习网站-Python学习网站
  9. SET-Priority_Queue
  10. [源]云计算技术堆栈系列——鸟瞰
  11. base scroll横向滚动_微信小程序实践:2.3 可滚动的容器组件之 scroll-view
  12. CTF_RSA_N不互素
  13. 浮标水质监测站--河流湖泊水库现场水质自动监测的解决方案
  14. ArcGIS Engine环境下VS窗体与Unity虚拟现实地理空间的嵌套和交互
  15. 【JavaEE】进入Web开发的世界-HTML
  16. 领跑全球安全行业,为什么是以色列?
  17. Humanoid动画显示与Generic不一致
  18. EDIUS中怎么实现卡拉OK字幕的制作
  19. 针对宽带拨号错误代码及解决方法
  20. VC++实现双人对决的围棋程序,附源码

热门文章

  1. Aruba无线网络学习(二)
  2. 移动端图形化报表界面设计_移动端几种常见的界面设计布局
  3. python **幂次方
  4. 一个Json、数组、Dictionary转换和数组对比的C#实例
  5. 项目拆包后报错 Consider defining a bean of type
  6. 99999款PS笔刷合集,简直就是绘画神器(全网最全系列)
  7. 微信公众号H5页面中获取openId
  8. Unity3D课程——粒子系统与流动效果
  9. 真正的自动剪辑神器auto-editor!Python完全免费开源,无任何功能限制!走,自媒体快速制作视频必备工具!
  10. handbrake下载太慢_俄罗斯视频处理软件HandBrake Mac版本下载镜像服务器遭入侵