Ubuntu环境下openstack的安装

$passwd root //使用root安装,避免安装过程中产生不必要的权限问题
1. nova安装
由于openstack是由python语言编写,所以要先安装python包

apt-get install python-software-properties

add-apt-repository ppa:nova-core/release

apt-get update

安装消息队列服务器rabbitmq:

apt-get install -y rabbitmq-server

安装python依赖包:

apt-get install -y python-greenlet python-mysqldb

安装nova-packages及一些依赖包:

apt-get install -y nova-common nova-doc python-nova nova-api nova-network nova-objectstore nova-scheduler nova-compute glance

安装 euca2ools 工具包,后面注册镜像时候用到,否则会注册失败:

apt-get install -y euca2ools unzip

2. 安装数据库
openstack提供了多种数据库可用,再次我使用mysql(其他数据库不了解):

apt-get install -y mysql-server

设定数据库密码:123456
编辑/etc/mysql/my.cnf,修改‘bind-address’ 从127.0.0.1到0.0.0.0,并重启mysql

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

/etc/init.d/mysql restart

创建”nova”库:
#mysql>create database nova;
#mysql> grant all privileges on . to root@‘%’ identified by ‘123456’;
#mysql> grant all privileges on . to nova@‘%’ identified by ‘123456’;
#mysql> flush privileges;
重启所有服务:
#restart libvirt-bin;restart nova-network;restart nova-compute;restart nova-api;restart nova-objectstore;restart nova-scheduler; restart glance-registry;restart glance-api
3. 配置网络参数

more /etc/network/interfaces

auto br100
iface br100 inet static
bridge_ports eth0
bridge_stp off
bridge_maxwait 0
bridge_fd 0
address 10.11.69.79
netmask 255.255.255.0
broadcast 10.11.69.255
gateway 10.11.69.1
dns-nameservers 192.168.8.57
//我只有一个网卡eth0,使用10.11.69.79上网,网关和dns地址都是公司共同使用的。
#/etc/init.d/networking restart //重启网卡
配置nova:
#more /etc/nova/nova.conf //我使用openstack的dhcp网络模式
–dhcpbridge_flagfile=/etc/nova/nova.conf //dhcp 桥接配置文件位置
–dhcpbridge=/usr/bin/nova-dhcpbridge //桥接命令位置
–logdir=/var/log/nova //nova日志存放路径
–state_path=/var/lib/nova //nova 状态文件位置
–lock_path=/var/lock/nova //lock 文件位置
–force_dhcp_release=True //dhcp 释放
–use_deprecated_auth //是否启用外部认证
–iscsi_helper=tgtadm
–verbose //是否启用详细日志消息
–flagfile=/etc/nova/nova-compute.conf //compute配置文件地址
–network_manager=nova.network.manager.FlatDHCPManager //默认网络模式
–flat_network_dhcp_start=172.16.0.2 //dhcp分配给的实例的ip的起始地址
–flat_injected=False
–public_interface=eth0
–s3_host=10.11.69.79 //objectstore 服务地址
–rabbit_host=10.11.69.79 //rabbitmq 队列服务器地址
–osapi_host=10.11.69.79
–ec2_api=10.11.69.79
–ec2_url=http://10.11.69.79:8773/services/Cloud //nova-api 接口地址
–sql_connection=mysql://root:123456@10.11.69.79/nova //数据库连接参数
–image_service=nova.image.glance.GlanceImageService //默认存储镜像使用的服务
–glance_host=10.11.69.79 //glance 服务地址
–fixed_range=172.16.0.0/8 //运行实例分配 ip段
–iscsi_ip_prefix=10.11.69
–bridge_interface=br100
–flat_interface=eth0
–network_size=256 //网络主机数
–libvirt_type=kvm //通过 libvirt 连接的虚拟化类型
4. 修改sql_connection参数来指定数据库连接地址
#vi /etc/glance/glance-registry.conf
sql_connection = mysql://root:123456@localhost/glance
在mysql建立glance数据库
mysql>create database glance;
#chown -R root:nova /etc/nova
改变一下/etc/nova的属主
#chmod 640 /etc/nova/nova.conf
重启所有的服务:
#restart libvirt-bin;restart nova-network;restart nova-compute;restart nova-api;restart nova-objectstore;restart nova-scheduler; restart glance-registry;restart glance-api
5. nova运行环境配置
#/usr/bin/nova-manage db sync //在数据库nova中建立数据表
创建管理员用户:baiying
#/usr/bin/nova-manage user admin baiying
export EC2_ACCESS_KEY=6aa51bfd-6bfb-4a94-bf55-3c4bacc4d59a export
EC2_SECRET_KEY=aba78372-8a22-460c-af7e-d6da1ebf2eef //产生的密钥
创建管理员用户baiying的工程 baiying-proj
#/usr/bin/nova-manage project create baiying-proj baiying
为实例创建网络:
#nova-manage network create novanet 172.16.0.0/28 1 100 --bridge=br100
//创建了172.16.0.0的网段,含有一个网络,100个ip
查看建立的实例的ip段:
#nova-manage network list
id IPv4 IPv6 start address DNS1
1 172.16.0.0/28 None 172.16.0.2 8.8.4.4
通过命令查看建立的工程:

nova-manage project list

baiying-proj
6. 创建证书
#mkdir creds
#nova-manage project zipfile baiying-proj baiying creds/novacreds.zip
#unzip creds/novacreds.zip -d creds/
#source creds/novarc

cat /root/creds/novarc >> .bashrc

source .bashrc

查看服务是否正常使用

euca-describe-availability-zones verbose

AVAILABILITYZONE nova available
AVAILABILITYZONE |- zhaohh-G41MT-S2
AVAILABILITYZONE | |- nova-scheduler enabled :slight_smile: 2011-11-11 08:34:27
AVAILABILITYZONE | |- nova-compute enabled :slight_smile: 2011-11-11 08:34:27
AVAILABILITYZONE | |- nova-network enabled :slight_smile: 2011-11-11 08:34:27

nova-manage service list

Binary Host Zone Status State Updated_At
nova-scheduler zhaohh-G41MT-S2 nova enabled :slight_smile: 2011-11-11 08:41:02
nova-compute zhaohh-G41MT-S2 nova enabled :slight_smile: 2011-11-11 08:41:04
nova-network zhaohh-G41MT-S2 nova enabled :slight_smile: 2011-11-11 08:41:02
使能够ping 和ssh compute节点上的虚拟机:

euca-authorize -P icmp -t -1:-1 default

euca-authorize -P tcp -p 22 default

7. 镜像制作
http://smoser.brickies.net/Ubuntu/ttylinux-uec/下载镜像并上传到服务器这是我下载的镜像ttylinux-uec-i386-11.2_2.6.35-16_1.tar.tar

注册镜像

uec-publish-tarball ttylinux-uec-i386-11.2_2.6.35-16_1.tar.tar Ubuntu1102

查看注册的镜像:

euca-describe-images

8. 创建ssh keypair密钥

euca-add-keypair mykey > mykey.priv

chmod 600 mykey.priv //权限不可过大,否则登录实例会提示失败

创建一个虚拟机:

euca-run-instances ami-00000006 -k mykey -t m1.tiny

//可以创建多个
查看创建好的实例:

euca-describe-instances

euca-describe-instances

RESERVATION r-b9rwrtsb baiying-proj default
INSTANCE i-00000005 ami-00000006 172.16.0.2 172.16.0.2 running mykey
9. 为实例添加外网地址,并分配
#nova-manage floating create 10.11.69.200

euca-allocate-address

ADDRESS 10.11.69.200
#euca-associate-address -i i-00000006 10.11.69.200
10. 登录实例
root@zhaohh-G41MT-S2:~# ssh -i mykey.priv root@10.11.69.200
Chop wood, carry water.

hostname

server-1
#passwd root
Changing password for root
New password:
Bad password: too weak
Retype password:
Password for root changed by root

exit

logout
Connection to 10.11.69.200 closed.