OpenStack简易安装教程--Havana版本

来源:互联网 发布:佐治亚州知乎 编辑:程序博客网 时间:2024/06/05 02:14

本文根据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 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
0 0
原创粉丝点击