Ubuntu 12.04 下 Openstack Essex安装过程详解 (转给自己)

来源:互联网 发布:吉利知豆d2补贴后价格 编辑:程序博客网 时间:2024/05/16 13:40

Ubuntu 12.04 下 Openstack Essex安装过程详解

规划

 

Ubuntu 12.04 (“PrecisePangolin”) 安装 OpenStack Essex http://www.linuxidc.com/Linux/2012-05/60581.htm

这次是采用Ubuntu 12.04 正式版本,在一台物理服务器上安装。机器会有两块硬盘。

2块网卡  2块硬盘,另外一块给volume使用。

 

1:数据库规划

 

nova,keystone,glance,都需要用到数据库。对于keystone和glance,默认是采用sqlite,文档全部会改成使用mysql作为数据库。

 

所以我们需要创建3个数据库

 

数据库管理员 密码

nova nova password

keystone keystone password

glance glance password

 

2:keystone 的token

默认keystone的token:ADMIN

为了方便,我们把keystone的token设置成:1234567890

admin_token = 1234567890

 

3:租户和管理员

我们需要创建一个admin的租户,这个租户下有一个admin的管理员,管理员的密码是admin

这其实也是你web登陆的用户名和密码。

 

admin_tenant_name = admin

admin_user = admin

admin_password = admin

 

4:网络规划

Eth0: 公网IP:172.16.10.6

Eth1: 不需要设置IP

Floating IP: 172.16.10.32/27  (虚拟机的公网IP)

Fix IP:10.10.10.32/27 (虚拟机的固定IP)

 

1:下载Ubuntu 12.04. 服务器版本

ubuntu 12.04正式版本, 下载见http://www.linuxidc.com/Linux/2012-04/59239.htm

 

2:安装OS

安装系统倒是简单。由于我的服务器是两块硬盘,

1块硬盘是装操作系统,另外一块是给nova-volume使用。nova-volume需要一个单独的分区或者一块硬盘。

IP地址的设置,可以等装完系统再修改,问题不大。最小化安装,只需要安装ssh server就可以。

装完系统后。

apt-get update

apt-get upgrade

更新源里的包,更新系统。确保你装的是最新版本的包。

为了方便,我所有操作都是root权限下进行。

sudo passwd root

 

就可以给root设置密码。用root登陆。

 

3:网络

 

# cat /etc/network/interfaces

# This file describes the network interfacesavailable on your system

# and how to activate them. For moreinformation, see interfaces(5).

 

# The loopback network interface

auto lo

iface lo inet loopback

 

# The primary network interface

auto eth0

iface eth0 inet static

       address 172.16.10.6

       netmask 255.255.0.0

       network 172.16.0.0

       broadcast 172.16.255.255

       gateway 172.16.10.1

       # dns-* options are implemented by the resolvconf package, if installed

       dns-nameservers 114.114.114.114

       dns-search test.com

 

4:创建nova-volume

我要对第二块硬盘创建一个vg,名字为nova-volume

parted /dev/sdb --script mklabel gpt

parted /dev/sdb --script -- mkpart primary0 -1

parted /dev/sdb --script print

pvcreate /dev/sdb1

vgcreate nova-volumes /dev/sdb1

5:安装必备软件

我把要用的软件都装上,不需要一个一个安装

 

apt-get install -y  ntp tgt open-iscsi open-iscsi-utilsrabbitmq-server memcached python-memcache kvm libvirt-bin euca2ools

 

6:安装数据库

安装mysql

过程中,会提示你输入root密码。

apt-get install -y mysql-serverpython-mysqldb

让mysql支持外部访问

sed -i 's/127.0.0.1/0.0.0.0/g'/etc/mysql/my.cnf 

service mysql restart

创建nova,keystone,glance数据库

mysql -uroot -p

CREATE DATABASE nova;

GRANT ALL PRIVILEGES ON nova.* TO'nova'@'%' IDENTIFIED BY 'password';

CREATE DATABASE glance;

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%'IDENTIFIED BY 'password';

CREATE DATABASE keystone;

GRANT ALL PRIVILEGES ON keystone.* TO'keystone'@'%' IDENTIFIED BY 'password';

quit

 

在Openstack里,keystone的位置非常重要,所有的组件的认证授权,都需要经过他。

1:安装keystone

apt-get install -y keystone python-keystonepython-keystoneclient

2:配置keystone

需要修改 /etc/keystone/keystone.conf 3个地方

默认定义的token就是ADMIN,改成:1234567890

 

[DEFAULT]

bind_host = 0.0.0.0

public_port = 5000

admin_port = 35357

#admin_token = ADMIN

admin_token =1234567890

mysql的连接,默认是采用sqlite

 

[sql]

#connection =sqlite:////var/lib/keystone/keystone.db

connection=mysql://keystone:password@172.16.10.6:3306/keystone

idle_timeout = 200

 

修改catalog

 

 

[catalog]

#driver =keystone.catalog.backends.sql.Catalog

driver =keystone.catalog.backends.templated.TemplatedCatalog

template_file =/etc/keystone/default_catalog.templates

 重启服务和同步数据库

service keystone restart

keystone-manage db_sync

 

3: 导入数据

 

这个比较有技术含量。通过修改devstack的keystone_data.sh 脚本。实现导入数据。

 

http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt

 

下载脚本

 

 wgethttp://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt

mv keystone_data.sh_.txt keystone_data.sh

 

让脚本可运行

 

chmod +x keystone_data.sh

 

运行脚本前, 你需要修改脚本。修改两个地方

 

第一个是登录dashboard的admin的密码

 

第二个就是keystone的token

 

#ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo}

ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}

SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}

#export SERVICE_TOKEN="hastexo"

export SERVICE_TOKEN="1234567890"

exportSERVICE_ENDPOINT="http://localhost:35357/v2.0"

SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}

 

运行脚本

 

#./keystone_data.sh

 

 

 

4:检查keystone是否运行正常

 

设置环境变量,

 

export OS_TENANT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=admin

exportOS_AUTH_URL="http://localhost:5000/v2.0/"

 

检查一下环境变量是否生效

# export | grep OS_

 

输出下面内容就表示正常

declare -xOS_AUTH_URL="http://localhost:5000/v2.0/"

declare -x OS_PASSWORD="admin"

declare -x OS_TENANT_NAME="admin"

declare -x OS_USERNAME="admin"

 

运行

 

keystone user-list

 

 

5:设置系统的环境变量

 

环境变量设置,如果退出后,就需要再次设置,为了后面试验的方便,我修改系统的环境变量

 

修改/etc/profile , 在最后面添加下面内容

 

export OS_TENANT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=admin

exportOS_AUTH_URL="http://localhost:5000/v2.0/"

 

export EC2_URL=$(keystone catalog --serviceec2 | awk '/ publicURL / { print $4 }')

export CREDS=$(keystone ec2-credentials-create)

export EC2_ACCESS_KEY=$(echo"$CREDS" | awk '/ access / { print $4 }')

export EC2_SECRET_KEY=$(echo"$CREDS" | awk '/ secret / { print $4 }')

 

 退出ssh,再登陆就生效。

 

Glance是用作镜像管理使用。

 

1:安装软件

 

apt-get install -y glance glance-apiglance-client glance-common glance-registry python-glance

 

 

 

2:配置/etc/glance/glance-api-paste.ini

 

修改文件最后3行,这些设置都是keystone导入数据的时候设置的。

 

admin_tenant_name = %SERVICE_TENANT_NAME%

admin_user = %SERVICE_USER%

admin_password = %SERVICE_PASSWORD%

改成

 

admin_tenant_name = admin

admin_user = admin

admin_password = admin

 

 

 

3:设置/etc/glance/glance-registry-paste.ini

 

也是修改文件最后3行,和上面是一样的。

 

admin_tenant_name = %SERVICE_TENANT_NAME%

admin_user = %SERVICE_USER%

admin_password = %SERVICE_PASSWORD%

 

改成

 

admin_tenant_name = admin

admin_user = admin

admin_password = admin

 

4:配置/etc/glance/glance-registry.conf

 

修改

 

#sql_connection =sqlite:////var/lib/glance/glance.sqlite

sql_connection =mysql://glance:password@172.16.10.6/glance

 

 

 

在末尾添加两行

 

[paste_deploy]

flavor = keystone

5:配置/etc/glance/glance-api.conf

 

在末尾添加两行

 

[paste_deploy]

flavor = keystone

6:同步数据库

 

目前glance 需要手工同步数据库。

 

glance-manage version_control 0

 glance-manage db_sync         

/usr/lib/python2.7/dist-packages/glance/registry/db/migrate_repo/versions/003_add_disk_format.py:47:SADeprecationWarning: useexisting is deprecated.  Use extend_existing.

 useexisting=True)

 

 

重启服务

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

glance-api stop/waiting

glance-api start/running, process 13321

stop: Unknown instance:

glance-registry start/running, process13327

 

 

 

7:验证glance服务是否正常

 

glance index

 

没任何输出表示正常。

 

# glance --version

glance 2012.1

 

8:下载镜像并上传

 

Ubuntu官方专门提供image,不过一定要注意

 

这些镜像,都是必须使用密钥登录,直接用用户名密码是无法的登录的。

 

另外ubuntu有两个地方提供类似的image,

 

http://cloud-images.ubuntu.com/precise/

 

http://uec-images.ubuntu.com/releases/

 

我估计ubuntu会推荐大家在http://cloud-images.ubuntu.com下载image。到底他们间有啥区别,还没搞清楚。ubuntu目前还在更新cloud-image里面的内容。

 

下载镜像

 

http://cloud-images.ubuntu.com/precise/current/

 

这应该是ubuntu提供的最新的稳定的镜像。

 

wgethttp://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img

 

上传镜像

glance add name="Ubuntu 12.04 cloudimgamd64" is_public=true container_format=ovf disk_format=qcow2 </root/precise-server-cloudimg-amd64-disk1.img

 

这个时候

 

glance index

 

就可以看到image

 

1:安装nova相关组件

 

apt-get install -y nova-api nova-certnova-common nova-compute nova-compute-kvm nova-doc nova-networknova-objectstore nova-scheduler nova-volume python-nova python-novaclient  nova-consoleauth python-novnc novnc

 

2:配置/etc/nova/nova.conf

 

把nova.conf 原来的内容删除掉。直接贴下面内容。重点需要注意的是,

 

如果你是在虚拟机里测试Openstack。你需要把默认的虚拟化引擎从kvm改成qemu。

 

nova的配置,等下再补上。

 

[DEFAULT]

dhcpbridge_flagfile=/etc/nova/nova.conf

dhcpbridge=/usr/bin/nova-dhcpbridge

logdir=/var/log/nova

state_path=/var/lib/nova

lock_path=/var/lock/nova

allow_admin_api=true

use_deprecated_auth=false

auth_strategy=keystone

scheduler_driver=nova.scheduler.simple.SimpleScheduler

s3_host=172.16.10.6

ec2_host=172.16.10.6

rabbit_host=172.16.10.6

cc_host=172.16.10.6

nova_url=http://172.16.10.6:8774/v1.1/

routing_source_ip=172.16.10.6

glance_api_servers=172.16.10.6:9292

image_service=nova.image.glance.GlanceImageService

iscsi_ip_prefix=10.10.10

sql_connection=mysql://nova:password@172.16.10.6/nova

ec2_url=http://172.16.10.6:8773/services/Cloud

keystone_ec2_url=http://172.16.10.6:5000/v2.0/ec2tokens

api_paste_config=/etc/nova/api-paste.ini

libvirt_type=kvm

libvirt_use_virtio_for_bridges=true

start_guests_on_host_boot=true

resume_guests_state_on_host_boot=true

novnc_enable=true

novncproxy_base_url=http://172.16.10.6:6080/vnc_auto.html

vncserver_proxyclient_address=127.0.0.1

vncserver_listen=127.0.0.1

network_manager=nova.network.manager.FlatDHCPManager

public_interface=eth0

flat_interface=eth1

flat_network_bridge=br0

floating_range=172.16.10.32/27

flat_injected=False

force_dhcp_release=true

iscsi_helper=tgtadm

connection_type=libvirt

root_helper=sudo nova-rootwrap

verbose=False

 

 

 

 

 

3:配置/etc/nova/api-paste.ini

 

也是修改文件最后3行,

 

admin_tenant_name = %SERVICE_TENANT_NAME%

admin_user = %SERVICE_USER%

admin_password = %SERVICE_PASSWORD%

 

改成

 

admin_tenant_name = admin

admin_user = admin

admin_password = admin

 

4:停止和重启nova相关服务

 

for a in libvirt-bin nova-networknova-compute nova-api nova-objectstore nova-scheduler novnc nova-volumenova-consoleauth; do service "$a" restart; done

 

 

 

5:同步数据库

 

nova-manage db sync

 

没有任何输出,就表示正常。

 

6:创建网络

 

nova-manage network create private--fixed_range_v4=10.10.10.32/27 --num_networks=1 --bridge=br100--bridge_interface=eth1 --network_size=32

 

nova-manage floating create--ip_range=172.16.10.32/27

 

 

 

检查nova服务

 

nova-manage service list

 

 

对于安装和配置来说,这是最简单的,装完就马上可以使用。以前还需要配置一下使用memcache,现在默认就启用,基本什么都不需要配置。

 

安装dashbaord

 

apt-get install libapache2-mod-wsgiopenstack-dashboard

 

 

 

这个时候,你就可以登录dashboard

 

http://172.16.10.6

 

user:admin

 

pass:admin

 

使用Dashboard

 

登陆后,如何创建和使用虚拟机呢。是web界面,如果没用过EC2,估计你还是比较晕。下面是8步骤来让你熟悉Dashboard使用。

 

设置安全组

 

创建keypair

 

创建虚拟机

 

vpc访问

 

floating IP设定

 

SecureCRT访问虚拟机

 

给虚拟机添加硬盘

 

虚拟机创建快照

 

 

 

1:设置安全组 (security group)

 

这是相当于打开防火墙端口,允许ssh和ping虚拟机。这是重点,不设置这个,你基本是无法访问到虚拟机。经常有朋友问,虚拟机在跑着,如何访问。

 

2:创建keypair

 

创建完后,会把私钥下载到本地,公钥会注入到你创建的虚拟机里,你必须用私钥登陆。私钥的后缀是:pem

 

登陆的用户名是:ec2。注意,Ubuntu提供的所有image,你是必须用私钥登陆。

 

 

3:创建虚拟机

 

这就是比较简单,正常创建就可以,会用到keypair和安全组,建议别选择tiny类型。

 

tiny,硬盘空间是0,表示当初做image的时候是多大,他就是多大。应该就只有2G的空间大小。另外我这种类型,我无法attach volume。

 

 

4:vnc访问

5:floating IP设定

 

 

6:SecureCRT访问虚拟机

 

ScureCRT6.0,已经支持pem私钥,直接使用就可以

 

 

 

 

 

 

 

 

这就完成了登陆ssh。

 

 7:设置volume

 

先创建一个10G的volume

 

 

ssh到虚拟机后

 

ubuntu@test:~$ ls /dev/vd*

/dev/vda /dev/vda1  /dev/vdb  /dev/vdc

ubuntu@test:~$

 

 

 

这个时候,你就可以。剩下的就是如何分区,格式化,挂载。