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:~$
这个时候,你就可以。剩下的就是如何分区,格式化,挂载。