OpenStack简易安装教程--Havana版本
来源:互联网 发布:佐治亚州知乎 编辑:程序博客网 时间:2024/06/05 02:14
本文根据OpenStack官方安装教程《openstack-install-guide-apt-havana》,翻译并重新整理成简易版的安装教程,安装了keystone、glance、nova、horizon四个组件,网络使用nova-network,由于条件所限,其他组件没有安装。
一、架构设计
两个节点:controller和compute
二、基本操作系统配置
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 Network auto eth0 iface eth0 inet static address 10.82.83.140 netmask 255.255.252.0 gateway 10.82.81.1 dns-nameservers 221.12.33.227 # Internal Network auto eth1 iface eth1 inet static address 192.168.0.10 netmask 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 localhost192.168.0.10 controller192.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.confadmin_token=openstack(生产环境应该将这个参数设置得非常复杂)connetion = mysql://keystone:123456@controller/keystone(123456是mysql密码)【可添加】设置debug和verbose为true来排错debug=Trueverbose=True
3、建立一个keystone数据库,并赋予其相应的操作权限
# mysql -u root -pmysql> 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=adminexport OS_PASSWORD=123456export OS_TENANT_NAME=adminexport 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 -pmysql> 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:5000auth_host = controllerauth_port = 35357auth_protocol = httpadmin_tenant_name = serviceadmin_user = glanceadmin_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_factoryauth_host=controlleradmin_user=glanceadmin_tenant_name=serviceadmin_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 = controllerauth_port = 35357auth_protocol = httpadmin_tenant_name = serviceadmin_user = novaadmin_password =123456
(3)修改/etc/nova/nova.conf
,在 [DEFAULT] 部分添加以下内容
#[DEFAULT] 部分添加内容rpc_backend = nova.rpc.impl_komburabbit_host = controllerrabbit_password =guest
(4)删除/var/lib/nova/
目录下的nova.sqlite
(5)创建一个nova数据库
# mysql -u root -pmysql> 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.10vncserver_listen=192.168.0.10vncserver_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_factoryauth_host = controllerauth_port = 35357auth_protocol = httpauth_uri = http://controller:5000/v2.0admin_tenant_name = serviceadmin_user = novaadmin_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/shversion="$1"# passing the kernel version is required[ -z "${version}" ] && exit 0dpkg-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_komburabbit_host = controllerrabbit_password =guest
(6)修改/etc/nova/nova.conf
#[DEFAULT] 部分添加内容my_ip=192.168.0.11vnc_enabled=Truevncserver_listen=0.0.0.0vncserver_proxyclient_address=192.168.0.11novncproxy_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_factoryauth_host = controllerauth_port = 35357auth_protocol = httpadmin_tenant_name = serviceadmin_user = novaadmin_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.FlatDHCPManagerfirewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDrivernetwork_size=254allow_same_net_traffic=Falsemulti_host=Truesend_arp_for_ha=Trueshare_dhcp_address=Trueforce_dhcp_release=Trueflat_network_bridge=br100flat_interface=eth0public_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版本
- 使用RDO安装havana、icehouse版本的openstack(centos)
- openstack (havana) 计算节点安装
- openstack (havana) 控制节点安装
- openstack havana vlan 模式 安装配置
- Openstack安装与部署(Havana)-ubuntu
- OpenStack Keystone Havana版本的新变化 (by quqi99)
- OpenStack Glance&Cinder Havana版本的新变化 (by quqi99)
- 最新发行版Openstack Havana单机安装指引
- Ubuntu 12.04 Server OpenStack Havana多节点(OVS+GRE)安装
- OpenStack Havana版发布
- openstack havana release
- OpenStack Havana版发布
- Openstack Havana学习总结
- OpenStack 入门学习之一: OpenStack是什么、版本演变、组件关系(Havana)、同类产品及个人感想
- pci-passthrough of openstack havana
- 用pdb调试OpenStack Havana
- CentOS下搭建openstack-Havana
- ListView中getView()多次调用原因
- 每天一个linux命令(47):iostat命令
- Netty In Action(翻译)
- WinForm实现仿视频播放器左下角滚动新闻效果的方法
- activity异常被系统杀死处理方法
- OpenStack简易安装教程--Havana版本
- Cookie/Session机制详解
- C#实现实体类与字符串互相转换的方法
- 内存泄漏以及常见的解决方法
- dialog加载动画实例
- ListView的优化问题
- C#实现语音视频录制-附demo源码
- Hibernate 数据的批量插入、更新和删除
- Unity3D的两个坑