OpenStack简易安装教程--Havana版本
本文根据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版本相关推荐
- Axure for mac安装教程(版本8.1.0.3382)
Axure for mac安装教程(版本8.1.0.3382) 第一步--下载安装包 官网下载安装包:https://www.axure.com/download 第二步--安装 如图双击刚下下来的A ...
- Ubuntu16.04环境下PyTorch简易安装教程
安装NVIDIA GPU显卡驱动 如果需要安装cuda版本的PyTorch,电脑也有独立显卡的时候,一般需要更新一下Ubuntu独立显卡驱动.否则即使安装了cuda版本的PyTorch也没办法使用GP ...
- python官网下载安装教程-各种版本的Python下载安装教程
python从17年开始大火,自然想学python的同学就多了,小编整理了这篇文章,从python的功能介绍.各系统最新版本python下载.python全部版本下载.python下载后安装教程以及p ...
- npm,vue简易安装教程
npm,vue安装教程 1.下载node.js 直接去官网下载就好:Node.js 官网 点进去有两个选项,一个是LTS版本,一个是Current版本,下载LTS版本就好. LTS是长期支持(Long ...
- Python安装教程(版本3.8.10)windows10
Python目前已支持市面上的各大主流操作系统,在Linux.Unix.Mac系统已经自带Python环境,本章将介绍在Windows系统上安装Python.一般下载 executable insta ...
- CUDA简易安装教程
我的当前配置是Win10+GTX1060,大部分的笔记本电脑其实都是独立显卡,不需要太多的检查吧,如果电脑比较特殊就检查一下自己的硬件设备是否完全支持,CUDA版本应该都差不多,我就选择11.0来安装 ...
- mysql5.7安装教程centos_MySQL5.7版CentOS系统简易安装教程
这一篇教程,我们一起来完成MySQL在CentOS系统中的安装. 1.下载MySQL(Community版)RPM安装源. 如果没有安装wget,需要先执行命令安装. 执行命令: yum -y ins ...
- Kubuntu简易安装教程(压缩磁盘版)
所有文件都在这个链接的文件夹里面 所需文件 - 123云盘https://www.123pan.com/s/DLbDVv-y7DfA 1.下载系统和Refus 点进去下载这两个 2.制作U盘启动盘 假 ...
- pytorch安装教程 GPU版本
1.首先安装Anaconda 官网http://www.anaconda.com/ 下载最新版本就好 下载完后点下一步安装直到这一步选择just me 是只对当前用户 all users是所有用户 这 ...
最新文章
- 最全的CSS浏览器兼容问题整理
- Pycharm运行Scrapy报错:no active project Unknown command: crawl Use “scrapy“ to see available commands
- pstack命令学习
- nbiot模块WH-NB73 UDP透传和透传云使用说明
- php 5.2.6升级,Centos5.5 简单方法升级php到php5.2.6
- (转)淘淘商城系列——SSM框架整合之Dao层整合
- Head First 设计模式 —— 单例模式(Singleton)
- python学习网站-Python学习网站
- SET-Priority_Queue
- [源]云计算技术堆栈系列——鸟瞰
- base scroll横向滚动_微信小程序实践:2.3 可滚动的容器组件之 scroll-view
- CTF_RSA_N不互素
- 浮标水质监测站--河流湖泊水库现场水质自动监测的解决方案
- ArcGIS Engine环境下VS窗体与Unity虚拟现实地理空间的嵌套和交互
- 【JavaEE】进入Web开发的世界-HTML
- 领跑全球安全行业,为什么是以色列?
- Humanoid动画显示与Generic不一致
- EDIUS中怎么实现卡拉OK字幕的制作
- 针对宽带拨号错误代码及解决方法
- VC++实现双人对决的围棋程序,附源码
热门文章
- Aruba无线网络学习(二)
- 移动端图形化报表界面设计_移动端几种常见的界面设计布局
- python **幂次方
- 一个Json、数组、Dictionary转换和数组对比的C#实例
- 项目拆包后报错 Consider defining a bean of type
- 99999款PS笔刷合集,简直就是绘画神器(全网最全系列)
- 微信公众号H5页面中获取openId
- Unity3D课程——粒子系统与流动效果
- 真正的自动剪辑神器auto-editor!Python完全免费开源,无任何功能限制!走,自媒体快速制作视频必备工具!
- handbrake下载太慢_俄罗斯视频处理软件HandBrake Mac版本下载镜像服务器遭入侵