Ubuntu12.04下配置安装OpenStack(ESSEX)

本流程主要参考官方文档,有少许改动,暂时未装swift,按照此流程笔者安装成功。

 

从ALL-IN-ONE到多台部署,笔者遇到太多问题,物理环境换了几波。现在实验环境为:

DELL PowerEdgeR710服务器两台、笔记本一台、Ubuntu12.04-server系统。

 

提一下必须的参数:

两台R710都四块网卡,这里只需要两块,eth0都连到实验室交换机,两机eth1直连。

R710两块硬盘,控制节点匀出一块做swift;计算节点两块硬盘做Raid 0。

 

控制节点安装所有组件,计算节点仅仅安装nova-compute模块,笔记本也是ubuntu系统,做client用(上传镜像之类的工作)。

 

配置

 

控制节点

计算节点

用户机

安装组件

所有组件

nova-compute

 

网络接口

eth0-Public/eth1-Private

eth0-Public/eth1-Private

eth0-Public

IP地址

eth0-192.168.1.22

eth1-10.10.10.22

eth0-192.168.1.21

eth1-10.10.10.21

eth0-192.168.1.125

DNS服务器

192.168.0.1

192.168.0.1

192.168.0.1

网关

192.168.0.1

192.168.0.1

192.168.0.1

主机名

OpenStack-center22

OpenStack-nc21

 

 

 

 

Part:控制节点

换了源以后重新update一把

sudo apt-get update

sudo apt-get upgrade

 

安装网桥组件

sudo apt-get install bridge-utils

 

修改配置文件/etc/network/interfaces如下

 

# The loopback network interface

auto lo

iface lo inet loopback

 

# The primary network interface

auto eth0

iface eth0 inet static

        address 192.168.1.22

        netmask 255.255.0.0

        network 192.168.0.0

        broadcast 192.168.255.255

        gateway 192.168.0.1

        dns-nameservers 192.168.0.1

        dns-search NDSL

 

auto eth1

iface eth1 inet static

        address 10.10.10.22

        netmask 255.255.255.0

        network 10.10.10.0

        broadcast 10.10.10.255

 

重启network服务

sudo /etc/init.d/networking restart

 

安装NTP server

sudo apt-get install ntp

 

修改配置文件/etc/ntp.conf添加如下代码

 

server ntp.ubuntu.com

server 127.127.1.0

fudge 127.127.1.0 stratum 10

 

重启NTP服务

sudo service ntp restart

 

安装数据库

sudo apt-get install mysql-server python-mysqldb

 

安装的时候会要求输入用户自己密码,这里我们用’password’代替。

 

修改配置文件/etc/mysql/my.cnf

把bind-address一栏的127.0.0.1改为0.0.0.0,即如下

bind-address = 0.0.0.0

 

重启mysql服务器

sudo restart mysql

 

创建三个数据库,及其管理员

sudo mysql -uroot -ppassword -e 'CREATE DATABASE nova;'

sudo mysql -uroot -ppassword -e 'CREATE USER novadbadmin;'

sudo mysql -uroot -ppassword -e "GRANT ALL PRIVILEGES ON nova.* TO

'novadbadmin'@'%';"

sudo mysql -uroot -ppassword -e "SET PASSWORD FOR 'novadbadmin'@'%' =

PASSWORD('novasecret');"

 

sudo mysql -uroot -ppassword -e 'CREATE DATABASE glance;'

sudo mysql -uroot -ppassword -e 'CREATE USER glancedbadmin;'

sudo mysql -uroot -ppassword -e "GRANT ALL PRIVILEGES ON glance.* TO

'glancedbadmin'@'%';"

sudo mysql -uroot -ppassword -e "SET PASSWORD FOR 'glancedbadmin'@'%' =

PASSWORD('glancesecret');"

 

sudo mysql -uroot -ppassword -e 'CREATE DATABASE keystone;'

sudo mysql -uroot -ppassword -e 'CREATE USER keystonedbadmin;'

sudo mysql -uroot -ppassword -e "GRANT ALL PRIVILEGES ON keystone.* TO

'keystonedbadmin'@'%';"

sudo mysql -uroot -ppassword -e "SET PASSWORD FOR 'keystonedbadmin'@'%' =

PASSWORD('keystonesecret');"

 

安装keystone

sudo apt-get install keystone python-keystone python-keystoneclient

 

修改配置文件/etc/keystone/keystone.conf,有两处修改,修改如下

admin_token = admin

connection = mysql://keystonedbadmin:keystonesecret@192.168.1.22/keystone

 

重启keystone服务

sudo service keystone restart

sudo keystone-manage db_sync

 

设置环境变量

export SERVICE_ENDPOINT="http://192.168.1.22:35357/v2.0"

export SERVICE_TOKEN=admin

 

创建Tenant

keystone tenant-create --name admin

keystone tenant-create --name service

 

创建User

keystone user-create --name admin --pass admin

keystone user-create --name nova --pass nova

keystone user-create --name glance --pass glance

//keystone user-create --name swift --pass swift

 

创建Role

keystone role-create --name admin

keystone role-create --name Member

 

ps:role的权限的管理在/etc/相应服务/policy.conf里面做更改

 

查看刚创建tenant、user、role的id,下条命令要用

keystone tenant-list

keystone user-list

keystone role-list

 

把role赋予user,并分配到tenant

利用上面的命令看到的id来替换本文中的各id

 

先把Role ‘admin’ 赋予 User ‘admin’, 再分配到Tenant ‘admin’

keystone user-role-add --user b3de3aeec2544f0f90b9cbfe8b8b7acd --role

2bbe305ad531434991d4281aaaebb700 --tenant_id 7f95ae9617cd496888bc412efdceabfd

再把Role ‘Member’ 赋予 User ‘admin’, 再分配到Tenant ‘admin’

keystone user-role-add --user b3de3aeec2544f0f90b9cbfe8b8b7acd --role

d983800dd6d54ee3a1b1eb9f2ae3291f --tenant_id 7f95ae9617cd496888bc412efdceabfd

 

把Role ‘admin’ 赋予 User ‘nova’, ‘glance’, ‘swift’, 再分配到Tenant ‘service’

keystone user-role-add --user ce8cd56ca8824f5d845ba6ed015e9494 --role

2bbe305ad531434991d4281aaaebb700 --tenant_id c7970080576646c6959ee35970cf3199

keystone user-role-add --user 518b51ea133c4facadae42c328d6b77b --role

2bbe305ad531434991d4281aaaebb700 --tenant_id c7970080576646c6959ee35970cf3199

//keystone user-role-add --user 1b986cca67e242f38cd6aa4bdec587ca --role

2bbe305ad531434991d4281aaaebb700 --tenant_id c7970080576646c6959ee35970cf3199

 

创建服务

keystone service-create --name nova --type compute --description 'OpenStack

Compute Service'

keystone service-create --name volume --type volume --description 'OpenStack

Volume Service'

keystone service-create --name glance --type image --description 'OpenStack

Image Service'

//keystone service-create --name swift --type object-store --description

'OpenStack Storage Service'

keystone service-create --name keystone --type identity --description

'OpenStack Identity Service'

keystone service-create --name ec2 --type ec2 --description 'EC2 Service'

 

查看刚创建service的id

keystone service-list

 

创建endpoint

创建nova-compute的endpoint

keystone endpoint-create --region myregion --service_id 1e93ee6c70f8468c88a5cb1b106753f3 –publicurl 'http://192.168.1.22:8774/v2/$(tenant_id)s' --adminurl 'http://192.168.1.22:8774/v2/$(tenant_id)s' --internalurl 'http://192.168.1.22:8774/v2/$(tenant_id)s'

创建nova-volume的endpoint

keystone endpoint-create --region myregion --service_id f38f4564ff7b4e43a52b2f5c1b75e5fa –publicurl 'http://192.168.1.22:8776/v1/$(tenant_id)s' --adminurl 'http://192.168.1.22:8776/v1/$(tenant_id)s' --internalurl 'http://192.168.1.22:8776/v1/$(tenant_id)s'

创建glance的endpoint

keystone endpoint-create --region myregion --service_id fbafab6edcab467bb734380ce6be3561 --publicurl 'http://192.168.1.22:9292/v1' --adminurl 'http://192.168.1.22:9292/v1' –internalurl 'http://192.168.1.22:9292/v1'

//创建swift的endpoint

//keystone endpoint-create --region myregion --service_id 96f35e1112b143e59d5cd5d0e6a8b22d –publicurl 'http://192.168.1.22:8080/v1/AUTH_$(tenant_id)s' --adminurl 'http://192.168.1.22:8080/v1' –internalurl 'http://192.168.1.22:8080/v1/AUTH_$(tenant_id)s'

创建keystone的endpoint

keystone endpoint-create --region myregion --service_id 7d4ec192dfa1456996f0f4c47415c7a7 --publicurl http://192.168.1.22:5000/v2.0 --adminurl http://192.168.1.22:35357/v2.0 --internalurl http://192.168.1.22:5000/v2.0

创建ec2的endpoint

keystone endpoint-create --region myregion --service_id 28fd92ffe3824004996a3e04e059d875 –publicurl http://192.168.1.22:8773/services/Cloud --adminurl http://192.168.1.22:8773/services/Admin --internalurl http://192.168.1.22:8773/services/Cloud

 

安装glance

sudo apt-get install glance glance-api glance-client glance-common glanceregistry python-glance

 

修改配置文件/etc/glance/glance-api-paste.ini和/etc/glance/glance-registry-paste.ini

原文

admin_tenant_name = %SERVICE_TENANT_NAME%

admin_user = %SERVICE_USER%

admin_password = %SERVICE_PASSWORD%

改为

admin_tenant_name = service

admin_user = glance

admin_password = glance

 

修改配置文件/etc/glance/glance-registry.conf,一处改动一处添加

改动

sql_connection = mysql://glancedbadmin:glancesecret@192.168.1.22/glance

在末尾添加

[paste_deploy]

flavor = keystone

 

修改配置文件/etc/glance/glance-api.conf

在末尾添加

[paste_deploy]

flavor = keystone

 

执行命令

sudo glance-manage version_control 0

sudo glance-manage db_sync

sudo restart glance-api

sudo restart glance-registry

 

设置环境变量

export OS_TENANT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=admin

export OS_AUTH_URL="http://192.168.1.22:5000/v2.0/"

 

安装nova

sudo apt-get install nova-api nova-cert nova-compute nova-compute-kvm novadoc

nova-network nova-objectstore nova-scheduler nova-volume rabbitmq-server

novnc nova-consoleauth

 

修改配置文件/etc/nova/nova.conf,里面的东西根据自己的需要来改

--dhcpbridge_flagfile=/etc/nova/nova.conf

--dhcpbridge=/usr/bin/nova-dhcpbridge

--logdir=/var/log/nova

--state_path=/var/lib/nova

--lock_path=/run/lock/nova

--allow_admin_api=true

--use_deprecated_auth=false

--auth_strategy=keystone

--scheduler_driver=nova.scheduler.simple.SimpleScheduler

--s3_host=192.168.1.22

--ec2_host=192.168.1.22

--rabbit_host=192.168.1.22

--cc_host=192.168.1.22

--nova_url=http://192.168.1.22:8774/v1.1/

--routing_source_ip=192.168.1.22

--glance_api_servers=192.168.1.22:9292

--image_service=nova.image.glance.GlanceImageService

--iscsi_ip_prefix=10.0.0

--sql_connection=mysql://novadbadmin:novasecret@192.168.

1.22/nova

--ec2_url=http://192.168.1.22:8773/services/Cloud

--keystone_ec2_url=http://192.168.1.22:5000/v2.0/ec2toke

ns

--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

# vnc specific configuration

--novnc_enabled=true

--novncproxy_base_url=http://192.168.1.22:6080/vnc_auto.

html

--vncserver_proxyclient_address=192.168.1.22

--vncserver_listen=192.168.1.22

# network specific settings

--network_manager=nova.network.manager.FlatDHCPManager

--public_interface=eth0

--flat_interface=eth1

--flat_network_bridge=br100

--fixed_range=10.0.0.1/27

--floating_range=192.168.12.0/27

--network_size=32

--flat_network_dhcp_start=10.0.0.33

--flat_injected=False

--force_dhcp_release

--iscsi_helper=tgtadm

--connection_type=libvirt

--root_helper=sudo nova-rootwrap

--verbose

 

创建物理卷(我是留了100G的空间出来给volume用)

sudo pvcreate /dev/sda6

sudo vgcreate nova-volumes /dev/sda6

 

执行以下命令

sudo chown -R nova:nova /etc/nova

sudo chmod 644 /etc/nova/nova.conf

 

修改配置文件/etc/nova/api-paste.ini

原文

admin_tenant_name = %SERVICE_TENANT_NAME%

admin_user = %SERVICE_USER%

admin_password = %SERVICE_PASSWORD%

改为

admin_tenant_name = service

admin_user = nova

admin_password = nova

 

执行以下命令

sudo nova-manage db sync

 

重启所有nova服务

sudo restart libvirt-bin; sudo restart nova-network; sudo restart novacompute;

sudo restart nova-api; sudo restart nova-objectstore; sudo restart

nova-scheduler; sudo restart nova-volume; sudo restart nova-cert; sudo restart nova-consoleauth;

 

利用nova-manage service list可以查看服务当前状况

如果state都是笑脸:-)就没问题

 

安装Dashboard

sudo apt-get install openstack-dashboard

 

重启apache服务

sudo service apache2 restart

 

这时你可以通过192.168.1.22利用浏览器访问dashboard,用户名/密码:admin/admin

 

Part:计算节点

换了源以后重新update一把

sudo apt-get update

sudo apt-get upgrade

 

安装网桥组件

sudo apt-get install bridge-utils

 

修改配置文件/etc/network/interfaces如下

 

# The loopback network interface

auto lo

iface lo inet loopback

 

# The primary network interface

auto eth0

iface eth0 inet static

        address 192.168.1.21

        netmask 255.255.0.0

        network 192.168.0.0

        broadcast 192.168.255.255

        gateway 192.168.0.1

        dns-nameservers 192.168.0.1

        dns-search NDSL

 

auto eth1

iface eth1 inet static

        address 10.10.10.21

        netmask 255.255.255.0

        network 10.10.10.0

        broadcast 10.10.10.255

 

重启network服务

sudo /etc/init.d/networking restart

 

安装NTP server

sudo apt-get install ntp

 

修改/etc/ntp.conf文件

添加

Server 192.168.1.22

与控制节点联系起来

 

重启ntp

sudo service ntp restart

 

安装nova-compute

sudo apt-get install nova-compute

 

修改配置文件/etc/nova/nova.conf

--dhcpbridge_flagfile=/etc/nova/nova.conf

--dhcpbridge=/usr/bin/nova-dhcpbridge

--logdir=/var/log/nova

--state_path=/var/lib/nova

--lock_path=/run/lock/nova

--allow_admin_api=true

--use_deprecated_auth=false

--auth_strategy=keystone

--scheduler_driver=nova.scheduler.simple.SimpleScheduler

--s3_host=192.168.1.22

--ec2_host=192.168.1.22

--rabbit_host=192.168.1.22

--cc_host=192.168.1.22

--nova_url=http://192.168.1.22:8774/v1.1/

--routing_source_ip=192.168.1.22

--glance_api_servers=192.168.1.22:9292

--image_service=nova.image.glance.GlanceImageService

--iscsi_ip_prefix=10.0.0

--sql_connection=mysql://novadbadmin:novasecret@192.168.

1.22/nova

--ec2_url=http://192.168.1.22:8773/services/Cloud

--keystone_ec2_url=http://192.168.1.22:5000/v2.0/ec2toke

ns

--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

# vnc specific configuration

--novnc_enabled=true

 

--novncproxy_base_url=http://192.168.1.22:6080/vnc_auto.Html

--vncserver_proxyclient_address=192.168.1.21

--vncserver_listen=192.168.1.21

 

//ps:上面这三行与官网配置文档中不一致,官网的全是192.168.1.22,结果是没法在计算节点上跑虚拟机,下面两行改了以后就可以了。

 

# network specific settings

--network_manager=nova.network.manager.FlatDHCPManager

--public_interface=eth0

--flat_interface=eth1

--flat_network_bridge=br100

--fixed_range=10.0.0.1/27

--floating_range=192.168.12.0/27

--network_size=32

--flat_network_dhcp_start=10.0.0.33

--flat_injected=False

--force_dhcp_release

--iscsi_helper=tgtadm

--connection_type=libvirt

--root_helper=sudo nova-rootwrap

--verbose

 

 

重启nova-compute服务

sudo service restart nova-compute

 

同样,可以查看服务状况

sudo nova-manage service list

 

客户机

最好是图形化界面的操作系统,这里是ubuntu12.04-desktop

这里的功能主要有几个,制作镜像,上传镜像,查看实例情况等

 

安装NTP

sudo apt-get install -y ntp

 

修改配置文件/etc/ntp.conf,添加

server 192.168.1.22

 

重启NTP服务

sudo service ntp restart

 

安装客户端工具

sudo apt-get install python-novaclient glance-client

 

如果要制作镜像

sudo apt-get install qemu-kvm

 

设置环境变量

export SERVICE_TOKEN=admin

export OS_TENANT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=admin

export OS_AUTH_URL="http://192.168.1.22:5000/v2.0/"

export SERVICE_ENDPOINT=http://192.168.1.22:35357/v2.0

 

制作了镜像(笔者是kvm制作)以后可以利用glance命令上传

glance add name="windows" is_public=true container_format=ovf disk_format=

qcow2 < windowsserver.img

 

之后可以在dashboard中利用该镜像起虚拟机了。

 

需要注意的是

Security group的编辑,在dashboard中找到security group项,添加以下规则

 

 

如果需要floating ip

nova-manage floating create –ip_range=192.168.12.0/27

 

这样就建了一个公网ip池,以后实例的公网ip就在本池中分配,可以通过dashboard操作。

posted @ 2012-07-23 13:25  ryanblog  阅读(788)  评论(0编辑  收藏  举报