Ubuntu12.04Openstack部署(单节点、单网卡)

参考文章:http://blog.csdn.net/sweetburden2011/article/details/7859081(在此感谢此文章的作者,同时感谢onestack.sh的作者)

一、系统准备

1. 安装ubuntu系统(我使用的Ubuntu12.04-desktop-amd64)

以150G硬盘为例:

分出5个区,3个主分区,2个逻辑分区;

Primary1:100G   挂载到目录/root下;

Primary2:20G    挂载到目录/nova-volume下;

Primary3:  2G      更改分区类型为Swap,作为系统的交换分区;

Logical 1:15G    挂载到目录/swift下;

Logical 2:10G    可不进行挂载,也可挂载到/home

2. 登录系统,获取root权限;(本文档中,主机名为template)

3. 检查是否联网:如pingwww.baidu.com,确认可以联网进行下一步。

4. 检查cpu是否支持kvm虚拟技术(有的教程上说可以使用qemu,但我使用qemu,虽然最后能成功创建虚拟机,但不能正常访问创建的虚拟机,应该是Hypervisor调用虚拟机出错)

输入#kvm-ok,如果输出以下信息,则说明支持,否则说明kvm不可用

#INFO:/dev/kvm exists

#KVM acceleration can be used

设置PC支持KVM

(1)首先进入Bios使用箭头键滚动到“System Configuration”
选择“Virtualization Technology”,然后按 Enter 
选择“Enabled”,然后按 Enter 
 F10 键以保存并退出

(2)如果是在虚拟机中安装的操作系统还要将虚拟机的processor选中Virtualize Intel VT-x/EPT or AMD-V/RVI


(3)#egrep '(vmx|svm)' --color=always /proc/cpuinfo

执行上述命令,如果输出的结果包含 vmx,它是 Intel;如果包含 svm,它是 AMD。如果你甚么都得不到,那应你的系统并没有支持虚拟化的处理。

(4)然后执行命令安装kvm  #apt-get install -y kvm libvirt-bin qemuqemu-kvm

安装完执行命令#reboot重启系统

(5)再次执行kvm-ok查看是否正常支持KVM。

5. 系统更新:

#apt-get update

#apt-get upgrade

6.       配置网络

(1)修改/etc/network/interfaces文件,在该文件中添加如下信息,设置eth0为静态地址

auto eth0

iface eth0 inet static

address 192.168.252.136

netmask 255.255.255.0

network 192.168.252.0

broadcast 192.168.252.255

gateway 192.168.252.2

dns-nameservers 210.72.128.8

(2)重启网络服务:

root@template:~# /etc/init.d/networking restart

(3)检查网卡状态:

# mii-tool


7. NTP服务器

对于单节点来说,NTP服务器,但不是必须的。如果是多台机器的环境,就需要设置所有的节点,将NTP服务指向同一个NTP服务器上。

NTP安装:

# apt-get install ntp

NTP配置:

编辑 /etc/ntp.conf,在 server ntp.ubuntu.com下添加两行

server 127.127.1.0

fudge 127.127.1.0 stratum 10

重启NTP服务:

# service ntp restart

8.       ISCSI设置

这是为测试Nova-volume服务使用的。不过目前nova-volume并不稳定,故简单测试一下就可以。未来的Folsom版本,将会有新的组件来替代Nova-volume。

安装tgt和iscsi客户端:

# apt-get install tgt

# apt-get install open-iscsi open-iscsi-utils

9.       Nova-volume

安装系统的时候,我们已经创建了一个nova-volume的分区,首先对它进行umount操作,再创建一个volume,名字为nova-volumes。nova的默认使用的volume的名字就是叫 nova-volumes. 如果你希望改变,就需要指定在nova.conf 文件里。

通过指令查看系统分区;

# df –h


# umount /dev/sda2

# pvcreate /dev/sda2


# vgcreate nova-volumes /dev/sda2


编辑 /etc/fstab ,将nova-volumes开机加载注释掉,否则会导致开机无法启动服务。

# sed -i '/nova-volume/s/^/#/' /etc/fstab

10.       Bridge (目前Openstack的网络是通过linux的bridge和iptables来实现的。)

# apt-get install bridge-utils

重启网络:

# /etc/init.d/networking restart

11.   RabbitMQ和Memcache等

RabbitMQ是用来做调度使用。Memcache是给Dashboard使用。

# apt-get install rabbitmq-server memcached python-memcache kvmlibvirt-bin

二、数据库

在Openstack组件里,Nova,Keystone, Glance, Horizon,都需要用到数据库。所以我们需要创建相关的数据库和用户。默认Dashboard(horizon)是使用sqlite,文档大部分都是没有修改。生产环境建议改成mysql。

1. mysql安装

Openstack都是Python写的,所以你需要python-mysqldb,安装过程,会提示你输入mysql的root的密码。(该文档中设置密码为:password)

# apt-get installmysql-server python-mysqldb

提示输入密码的界面:


2.  mysql配置

编辑/etc/mysql/my.cnf,允许网络访问mysql

#bind-address          =127.0.0.1

bind-address= 0.0.0.0

3. 重启mysql服务

# service mysql restart

4. 创建相关数据库:

# mysql -u root –ppassword    #进入数据库

mysql> CREATE DATABASE nova;

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

mysql> CREATE DATABASE glance;

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

mysql> CREATE DATABASE keystone;

mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%'IDENTIFIEDBY 'password';

mysql> CREATE DATABASE horizon;

mysql> GRANT ALL PRIVILEGES ON horizon.* TO 'horizon'@'%'IDENTIFIED BY'password';

mysql> quit;

 

三、Keystone

Keystone是Openstack的核心,所有的组件,都需要通过keystone进行认证和授权。

租    户

用    户

密    码

admin

admin

password

service

nova

password

 

glance

password

 

swift

password

1.  keystone安装

# apt-get install keystone python-keystone python-mysqldbpython-keystoneclient

2.  keystone配置

编辑/etc/keystone/keystone.conf,需要修改

•keystone的默认token是ADMIN,我这里修改alfred

 •默认是采用sqlite连接,我们需要改成mysql

admin_token = ADMIN换成admin_token = alfred

connection = sqlite:///var/lib/keystone/keystone.db换成connection = mysql://keystone:password@192.168.1.105/keystone

重启服务:

# service keystone restart

同步keystone数据库:

# keystone-manage db_sync

keystone的数据库,需要导入数据和endpoint,你可以参考官方文档,一步一步用命令行导入。为了方便,你也可以直接使用下面2个脚本来进行全部的设置:

1.keystone_data.sh导入用户信息

#wget http://www.chenshake.com/wp-content/uploads/2012/07/keystone_data.sh_.txt

#mv keystone_data.sh_.txt keystone_data.sh

对于keystone_data.sh 脚本,下载完成后对它进行修改,默认登陆dashboard的密码是:chenshake,Token是chenshake。我这里登录密码修改为:password,Token为alfred;修改keystone_data.sh的第1、3两行:

ADMIN_PASSWORD=${ADMIN_PASSWORD:-password}

export SERVICE_TOKEN="alfred"

并把以下各行中开头#号去掉:
#SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}
#export SERVICE_ENDPOINT="http://localhost:35357/v2.0"

赋给shell脚本可执行权限

#chmod +x keystone_data.sh

运行脚本:

#./keystone_data.sh

没任何输出,就表示正确,可以通过下面命令检查:

#echo $?

此输出表示脚本运行正常。千万不要重复运行脚本!!!

2.endpoints.sh 设置endpoint

#wget http://www.chenshake.com/wp-content/uploads/2012/07/endpoints.sh_.txt

#mv endpoints.sh_.txt endpoints.sh

#chmod +x endpoints.sh

这个脚本运行,需要使用不少参数:

#./endpoints.sh -m 192.168.1.105 -u keystone -D keystone -p password -Talfred -K 192.168.1.105 -R RegionOne -E "http://localhost:35357/v2.0"-S 192.168.1.105

正常运行,会输出以下内容:

 

设置环境变量:

#export OS_TENANT_NAME=admin

#export OS_USERNAME=admin

#export OS_PASSWORD=password

#export OS_AUTH_URL=http://localhost:5000/v2.0/

检查当前的环境变量:

#export | grep OS_

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

declare-xOS_PASSWORD="password"             

declare-xOS_TENANT_NAME="admin"            

declare-xOS_USERNAME="admin"               

 

测试keystone:

#keystone user-list

#keystone endpoint-list

可以使用下面命令来查看结果:

#keystone tenant-list

#keystone role-list 

四、Glance

Glance是提供镜像管理服务,可以理解成一个中间件,后面的存储可以是本地存储,也可以使用swift存储。

1. glance安装

# apt-get install glance glance-api glance-client glance-commonglance-registry python-glance

2. glance配置

编辑 /etc/glance/glance-api-paste.ini,/etc/glance/glance-registry-paste.ini,两个文件,都是修改文档最后3行

admin_tenant_name = service
admin_user = glance
admin_password = password

编辑/etc/glance/glance-registry.conf,改成使用mysql验证:

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

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

编辑/etc/glance/glance-registry.conf 和 /etc/glance/glance-api.conf,都在文件末尾添加两行

[paste_deploy]

flavor = keystone

同步glance数据库:

# glance-manage version_control 0

# glance-manage db_sync

重启glance服务:

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

设置永久生效环境变量

为了简化日后的操作,这里设置永久的环境变量,修改 /etc/profile,在末尾添加下面内容:

export OS_TENANT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=password

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

3. glance测试

# glance index      没有结果输出就表示正常,因为还没有安装镜像;

CirrOS

下载Image:

我们下载CirrOS的image作为测试使用,只有10M。如果是ubuntu官方的image,220M,并且ubuntu官方的image,都是需要使用密钥登陆。

#wget https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img

上传image:

# glance add name=cirros-0.3.0-x86_64is_public=true container_format=bare disk_format=qcow2</root/cirros-0.3.0-x86_64-disk.img

Cirros,是可以使用用户名和密码登陆,也可以使用密钥登陆

user: cirros        password: cubswin:)

  Ubuntu官方image

下载image:

# wget http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img

上传image:

# glance add name="Ubuntu 12.04 cloudimg amd64" is_public=true container_format=ovfdisk_format=qcow2 <precise-server-cloudimg-amd64-disk1.img

user:ubuntu   password:只能使用密钥登陆

查看image:

# glance index

 

五、Nova

1. nova安装

# apt-get install nova-api nova-cert nova-common nova-objectstorenova-scheduler nova-volume nova-consoleauth novnc python-nova python-novaclientnova-compute nova-compute-kvm nova-network

如果你希望控制节点,不安装计算服务,那么 nova-compute nova-compute-kvmnova-network 这3个包不安装就可以。

2. nova配置

编辑 /etc/nova/api-paste.ini , 修改末尾3行

#admin_tenant_name = %SERVICE_TENANT_NAME%

#admin_user = %SERVICE_USER%

#admin_password = %SERVICE_PASSWORD%

admin_tenant_name = service

admin_user = nova

admin_password = password (此处密码不要设为数字,否则会报错)

编辑/etc/nova/nova.conf 文件,下面是我的nova.conf文件的配置。需要注意的一点是Essex版本的nova,配置文件不需要前面加上—。日后我会逐步调整nova.conf文件,让他更加可读和方便大家理解。

[DEFAULT]

###### LOGS/STATE

#verbose=True

verbose=False

 

###### AUTHENTICATION

auth_strategy=keystone

 

###### SCHEDULER

#--compute_scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler

scheduler_driver=nova.scheduler.simple.SimpleScheduler

 

###### VOLUMES

volume_group=nova-volumes

volume_name_template=volume-%08x

iscsi_helper=tgtadm

iscsi_ip_prefix=192.168.22

 

###### DATABASE

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

 

###### COMPUTE

#libvirt_type=kvm

libvirt_type=qemu

connection_type=libvirt

instance_name_template=instance-%08x

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

allow_resize_to_same_host=True

libvirt_use_virtio_for_bridges=true

start_guests_on_host_boot=true

resume_guests_state_on_host_boot=true

 

###### APIS

osapi_compute_extension=nova.api.openstack.compute.contrib.standard_extensions

allow_admin_api=true

s3_host=192.168.1.105

cc_host=192.168.1.105

 

###### RABBITMQ

rabbit_host=192.168.1.105

 

###### GLANCE

image_service=nova.image.glance.GlanceImageService

glance_api_servers=192.168.1.105:9292

 

###### NETWORK

network_manager=nova.network.manager.FlatDHCPManager

force_dhcp_release=True

dhcpbridge_flagfile=/etc/nova/nova.conf

dhcpbridge=/usr/bin/nova-dhcpbridge

firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver

public_interface=eth0

flat_interface=eth0

flat_network_bridge=br100

fixed_range=192.168.22.0/24

multi_host=true

 

###### NOVNC CONSOLE

novnc_enabled=true

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

vncserver_proxyclient_address=192.168.1.105

vncserver_listen=192.168.1.105

 

########Nova

logdir=/var/log/nova

state_path=/var/lib/nova

lock_path=/var/lock/nova

 

#####MISC

use_deprecated_auth=false

root_helper=sudo nova-rootwrap

查看/etc/nova/nova-compute.conf,内容应该如下:

--libvirt_type=kvm

设置目录权限:

# chown -R nova:nova /etc/nova

重启所有服务:

由于服务数量比较多,创建一个脚本 restart.sh来重启所有服务。

#!/bin/bash

for a in rabbitmq-server libvirt-bin nova-network nova-cert nova-computenova-api nova-objectstore nova-scheduler nova-volumenovnc nova-consoleauth; do service "$a" stop; done

for a in rabbitmq-server libvirt-bin nova-network nova-cert nova-computenova-api nova-objectstore nova-scheduler nova-volumenovnc nova-consoleauth; do service "$a" start; done

运行脚本:

# chmod +x restart.sh

# ./restart.sh

同步数据库:

# nova-manage db sync

看到上面的输出,检查nova数据库里已经有相应的表,就表示正确。

创建Fix IP

FIX IP,就是分配给虚拟机的实际IP地址,这些数据都会写入数据库:

# nova-manage network createprivate --fixed_range_v4=192.168.22.0/24--num_networks=1 --bridge=br100 --bridge_interface=eth1 --network_size=256--multi_host=T

创建floating IP

所谓Floating IP,是亚马逊EC2的定义。简单说,就是公网的IP。他其实是通过类似防火墙类似,做一个映射。实际上是通过iptables来实现映射。

# nova-manage floating create --ip_range=192.168.1.122/27

重启nova服务:

3. nova测试

可以尝试用下面命令去检查nova的状况:

# nova-manage service list

六、创建一个VM

1. 创建第一个VM

以下是用命令行创建vm的方法,你可以跳过:

1创建密钥:

#ssh-keygen  (执行时一路回车即可,生成的密钥在/root/.ssh/下)

2上传密钥到数据库:

#nova keypair-add --pub_key  ~/.ssh/id_rsa.pubkey_for_template

3查看到上传的key:

#nova keypair-list


4开始创建虚拟机

#nova image-list

#nova flavor-list

创建虚拟机:

其中a59bd299-3839-448e-a6e1-9ead497a61ff为使用的镜像的ID(可自由选择要使用的镜像)、key_for_template为创建的密钥名称、template_test为即将创建的虚拟机的名称

#nova boot --flavor 1 --image a59bd299-3839-448e-a6e1-9ead497a61ff --key_namekey_for_template  template_test

查看刚创建的虚拟机(创建成功则显示如下图所示):

#nova show template_test

2. ssh访问VM

1)打开防火墙:

# nova secgroup-add-rule default tcp 22 22 0.0.0.0/0   (打开SSH端口)

# nova secgroup-add-rule default tcp 3306 3306 0.0.0.0/0  (mysql)

# nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0(ping)

查看防火墙

#nova secgroup-list


#nova secgroup-list-rules default


2)ssh到虚拟机上:

 #ssh -i .ssh/id_rsa cirros@192.168.22.2

这样就可以登录服务器。

3) Floating IP访问:

申请floating IP:

# nova floating-ip-create

关联vm:

# nova add-floating-iptemplate_test 192.168.1.97

将以上两部合为一步:#nova add-floating-ip template_test `nova floating-ip-create | awk 'FNR==4{print $2}'`

查看虚拟机:

# nova show template_test

ssh访问虚拟机:

# ssh -i .ssh/id_rsa cirros@192.168.1.97

 删除虚拟机绑定的浮动IP:

# nova remove-floating-ip template_test 192.168.1.97

查询浮动IP分配情况:

# nova floating-ip-list

移除浮动IP:

# nova floating-ip-delete 192.168.1.97

查看关于float的命令:

# nova help | grep float

其它命令:删除虚拟机命令:nova delete vm_name   停止虚拟机:nova stop vm_name  挂起:nova suspend vm_name  重启:nova reboot  vm_name

七、Dashboard

1. dashboard安装

# apt-get install apache2 libapache2-mod-wsgi openstack-dashboard

2. dashboard配置

默认采用sqlite来存储,直接访问就可以。如果希望改成mysql存储,才需要做下面的配置。

编辑 /etc/openstack-dashboard/local_settings.py,添加下面内容:

DATABASES={

   'default':{

       'ENGINE':'django.db.backends.mysql',

       'NAME':'horizon',

       'USER':'horizon',

       'PASSWORD':'password',

       'HOST':'192.168.1.105',

       'default-character-set':'utf8'

   },

}

同步数据库:

#/usr/share/openstack-dashboard/manage.py syncdb

重启nova api:

# restart nova-api

3. dashboard测试

登陆dashobard:

注意:登录dashboard请使用IE浏览器,其他的浏览器可能会导致下载的密钥无法使用!!!

Address

User

Password

http://192.168.1.105

admin

password

 Word版和shell脚本链接地址如下:http://pan.baidu.com/s/1jG84SJW

虚拟机访问方式:

(1)  直接从openstack宿主机上访问:

# ssh  –i ~/.ssh/id_rsa  ubuntu@192.168.22.2(此处IP为内网或外网IP都可以);

(2)  从其他机器上使用putty软件访问,对于putty,需要对密钥进行转换。具体步骤如下:

① PUTTYGEN,通过load,找到刚才下载的私钥(id_rsa),注意,要选择全部文件(all files),才可以找到。通过转换,选择保存私钥就可以


② 存放到本地:


③ 设置putty使用密钥:


④ 出现如下界面表示登录成功:

以上方式在windows平台上使用,如果是在linux平台下登录,可直接使用ssh命令方式登录:# ssh –I id_rsaubuntu@10.103.240.225(这个一定要是外网IP)

2、  sftp方式访问虚拟机用于实现文件传输

目前只会在windows平台下使用Xftp软件实现文件传输,如何在linux平台下使用sftp命令传输还未搞定。

(1)      首先打开Xftp,点击左上角“新建连接”,在弹出框中设置如下(用户密钥即为openstack创建该虚拟机时使用的私钥):


(2)      点击确定后,出现如下图所示画面(输入用户名,这里的用户名为ubuntu):


(3)      点击确定后在右侧会显示虚拟机上的相应文件目录,然后就可以直接复制、粘贴文件了:





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值