OpenStack All in One

系统环境:ubuntu-server-14.04

网络环境:VMware Nat eth0 192.168.149.130

配置密码:为了便于管理,所有服务密码均配置为openstack

一、数据库

a) 安装

# apt-get install python-mysqldb mysql-server

b) 配置

修改 /etc/mysql/my.cnf

[mysqld]
…

bind-address = 127.0.0.1            # ip 地址全部使用本机
default-storage-engine = innodb     #设置默认存储引擎为 Innodb
innodb_file_per_table
collation-server = utf8_general_ci  #设置编码格式
init-connect = ‘SET NAMES utf8‘
character-set-server = utf8

c) 重启 mysql 服务,使用安全模式初始化数据库,删除匿名用户

# service mysql restart
# mysql_secure_installation 或 # mysql_install_db

二、软件包配置

a) 安装 OpenStack Havana Ubuntu 云档案

# apt-get install python-software-properties
# add-apt-repository cloud-archive:Havana

b) 更新软件包数据库,更新系统

# apt-get update && apt-get dist-upgrade
# reboot

三、消息服务

消息服务使用 rabbitmq

# apt-get install rabbitmq-server

注:rabbitmq默认提供一个guest用户和默认的guest密码,这里需要修改一下guest用户的密码,因为后面配置nova服务的时候需要用到rabbitmq密码

# rabbitmqctl change_password guest openstack

四、Keystone认证服务

a) 安装

# apt-get install keystone

b) 配置

1)  修改数据库连接方式,编辑配置文件/etc/keystone/keystone.conf

...
[sql]
# The SQLAlchemy connection string used to connect to the database
connection = mysql://keystone:[email protected]/keystone
...

2)  删除默认创建的数据库

rm –f /var/lib/keystone/keystone.db

3)  创建数据库

# mysql -u root -p
mysql> CREATE DATABASE keystone;
mysql> GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone‘@‘localhost‘ IDENTIFIED BY ‘openstack‘;
mysql> GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone‘@‘%‘ IDENTIFIED BY ‘openstack‘;

4)  创建数据表

# keystone-manage db_sync

5)  创建一个随机的 Token用于连接认证服务时使用

# openssl rand -hex 10 > /root/token      #后面还会用到所以可以保存起来

编辑 /etc/keystone/keyston.conf

[DEFAULT]
# A "shared secret" between keystone and other openstack services
admin_token = ADMIN_TOKEN
...

6)  重启服务

# service keystone restart

c) 创建租户(tenant)、用户(user)、角色(role)

在还没有创建任何用户之前,我们必须要使用token来进行认证,可以将token设置为环境变量,或者在使用keystone命令的时候使用 –os-token 命令来指定token。

这里设置为环境变量:

# export OS_SERVICE_TOKEN=ADMIN_TOKEN
# export OS_SERVICE_ENDPOINT=http://127.0.0.1:35357/v2.0

1)  创建租户admin和service

# keystone tenant-create --name=admin --description="Admin Tenant"

# keystone tenant-create --name=service --description="Service Tenant"

2)  创建用户admin

#keystone user-create --name=admin --pass=openstack [email protected]

# keystone role-create --name=admin

3)  为admin创建role

4)  关联 user、tenant和role

# keystone user-role-add --user=admin --tenant=admin --role=admin

d) 创建服务(service)和访问端点(endpoint)

1)  创建keystone服务,类型为identity(认证)

# keystone service-create --name=keystone --type=identity --description="Keystone Identity Service"

2)  使用上面返回的service id来创建服务的访问端点

# keystone endpoint-create
--service-id=the_service_id_above
--publicurl=http://127.0.0.1:5000/v2.0
--internalurl=http://127.0.0.1:5000/v2.0
--adminurl=http://127.0.0.1:35357/v2.0

e) 校验keystone服务

现在已经创建了admin用户,所以可以通过admin用户来访问keystone服务

$ unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT
$ keystone --os-username=admin --os-password=openstack --os-auth-url=http://127.0.0.1:35357/v2.0 token-get

为了避免每次都需要输入用户名和密码,可以将它们保存为环境变量。编辑 /root/keystone.sh

export OS_USERNAME=admin
export OS_PASSWORD=openstack
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://127.0.0.1:35357/v2.0

这样只要执行 # source keystone.sh 命令就可以连接keystone了

五、镜像服务—glance

a) 安装

# apt-get install glance python-glanceclient

b) 配置

1)  设置数据库连接

编辑配置文件/etc/glance/glance-api.conf和/etc/glance/glance-registry.conf

...
[DEFAULT]
...
# SQLAlchemy connection string for the reference implementation
# registry server. Any valid SQLAlchemy connection string is fine.
# See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.
html#sqlalchemy.create_engine
sql_connection = mysql://glance:[email protected]/glance
...

2)  创建数据库

# mysql -u root -p
mysql> CREATE DATABASE glance;
mysql> GRANT ALL PRIVILEGES ON glance.* TO ‘glance‘@‘localhost‘ IDENTIFIED BY ‘openstack‘;
mysql> GRANT ALL PRIVILEGES ON glance.* TO ‘glance‘@‘%‘ IDENTIFIED BY ‘openstack‘;

3)  创建数据表

# glance-manage db_sync

4)  创建glance用户并关联到角色

# keystone user-create --name=glance --pass=openstack [email protected]

# keystone user-role-add --user=glance --tenant=service --role=admin

5)  配置glance服务使用keystone来进行认证

编辑/etc/glance/glance-api.conf和/etc/glance/glance-registry.conf文件

[keystone_authtoken]
...
auth_uri = http://127.0.0.1:5000
auth_host = 127.0.0.1
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = glance
admin_password = openstack
...
[paste_deploy]
...
flavor = keystone

6)  添加认证信息到/etc/glance/glance-api-paste.ini和/etc/glance/glance-registry-paste.ini文件

[filter:authtoken]
paste.filter_factory=keystoneclient.middleware.auth_token:filter_factory
auth_host=127.0.0.1
admin_user=glance
admin_tenant_name=service
admin_password=openstack

7)  注册镜像服务

# keystone service-create --name=glance --type=image --description="Glance Image Service"

8)  使用上面返回的service id创建访问点

# keystone endpoint-create --service-id=the_service_id_above --publicurl=http://127.0.0.1:9292 --internalurl=http://127.0.0.1:9292 --adminurl=http://127.0.0.1:9292

9)  重启镜像服务

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

c) 创建镜像文件

CirrOS镜像是常用的一个qcow2类型的镜像,下载镜像并上传到glance服务器

$ mkdir images
$ cd images/
$ wget http://cdn.download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-disk.img
# glance image-create --name="CirrOS 0.3.1" --disk-format=qcow2 --container-format=bare --is-public=true < cirros-0.3.1-x86_64-disk.img

查看上传的镜像可以使用

# glance image-list

六、计算服务

a) 安装计算服务软件包

# apt-get install nova-novncproxy novnc nova-api nova-ajax-console-proxy nova-cert nova-conductor nova-consoleauth nova-doc nova-scheduler python-novaclient
# apt-get install nova-compute-kvm python-guestfs

修改内核bug

# dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-$(uname -r)
# vim /etc/kernel/postinst.d/statoverride
#!/bin/sh

version="$1"

# passing the kernel version is required

[ -z "${version}" ] && exit 0

dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-${version}
# chmod +x /etc/kernel/postinst.d/statoverride

b) 配置

1)  配置数据库

编辑配置文件 /etc/nova/nova.conf

...
[database]
# The SQLAlchemy connection string used to connect to the database
connection = mysql://nova:[email protected]/nova
[keystone_authtoken]
auth_host = 127.0.0.1
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = nova
admin_password = openstack

2)  配置计算服务使用rabbitmq消息队列传送信息

编辑配置文件 /etc/nova/nova.conf

...
[DEFAULT]
rpc_backend = nova.rpc.impl_kombu
rabbit_host = 127.0.0.1
rabbit_password = openstack      # 如果rabbitmq未改,则使用默认guest密码
...

3)  创建数据库

# mysql -u root -p
mysql> CREATE DATABASE nova;
mysql> GRANT ALL PRIVILEGES ON nova.* TO ‘nova‘@‘localhost‘ IDENTIFIED BY ‘openstack‘;
mysql> GRANT ALL PRIVILEGES ON nova.* TO ‘nova‘@‘%‘ IDENTIFIED BY ‘openstack‘;

4)  创建数据表

# nova-manage db sync

5)  开启远程访问控制支持

编辑配置文件 /etc/nova/nova.conf

...
[DEFAULT]
...
my_ip=127.0.0.1
vnc_enabled=True
vncserver_listen=127.0.0.1
vncserver_proxyclient_address=127.0.0.1
novncproxy_base_url=http://127.0.0.1:6080/vnc_auto.html

6)  创建nova用户

# keystone user-create --name=nova --pass=openstack [email protected]

# keystone user-role-add --user=nova --tenant=service --role=admin

7)  配置nova使用keystone认证并配置glance服务

编辑配置文件 /etc/nova/nova.conf

[DEFAULT]
...
auth_strategy=keystone
glance_host=127.0.0.1

8)  添加认证信息到/etc/nova/api-paste.ini文件

[filter:authtoken]
paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
auth_host = 127.0.0.1
auth_port = 35357
auth_protocol = http
auth_uri = http://127.0.0.1:5000/v2.0
admin_tenant_name = service
admin_user = nova
admin_password = openstack

9)  创建计算服务和访问点

keystone service-create --name=nova --type=compute --description="Nova Compute service"

# keystone endpoint-create --service-id=the_service_id_above --publicurl=http://127.0.0.1:8774/v2/%\(tenant_id\)s --internalurl=http://127.0.0.1:8774/v2/%\(tenant_id\)s --adminurl=http://127.0.0.1:8774/v2/%\(tenant_id\)s

10) 重启计算服务

# service nova-api restart
# service nova-cert restart
# service nova-consoleauth restart
# service nova-scheduler restart
# service nova-conductor restart
# service nova-novncproxy restart
# service nova-compute restart

11)   配置网络

# apt-get install nova-network nova-api-metadata

编辑配置文件 /etc/nova/nova.conf

[DEFAULT]
...
network_manager = nova.network.manager.FlatDHCPManager
firewall_driver = nova.virt.libvirt.firewall.IptablesFirewallDriver
network_size = 254
allow_same_net_traffic = False
multi_host = True
send_arp_for_ha = True
share_dhcp_address = True
force_dhcp_release = True
flat_network_bridge = br100
flat_interface = eth1
public_interface = eth1

重启服务

# service nova-network restart

注:安装完成网络服务之后,需要重新安装nova-api软件,否则nova-api服务无法启动

# apt-get install nova-api

创建虚拟网络用于分配给虚拟机实例

# nova network-create vmnet --fixed-range-v4=10.0.0.0/24 --bridge=br100 --multi-host=T

七、载入实例

a) 配置认证服务

$ ssh-keygen
$ cd .ssh
$ nova keypair-add --pub_key id_rsa.pub mykey

b) 添加ssh和ping服务

# nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
# nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0

c) 查看镜像

$ nova image-list

d) 查看flavor列表

$ nova flavor-list

e) 创建虚拟机实例

$ nova boot --flavor 1 --key_name mykey –image IMAGE_ID --security_group default cirrOS

f)  查看实例

$ nova list

g) 连接到实例

$ ssh [email protected]

h) vnc连接
    在命令行执行 # nova get-vnc–console cirrOS novnc 命令,nova会返回一个vnc连接地址,将此地址复制到浏览器的地址栏内,可以通过vnc方式访问虚拟机

八、安装dashboard

首先安装apache-httpd服务器

# apt-get install apache2

然后安装dashboard

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

dashboard安装完成之后,使用默认的配置即可访问

注:kvm不支持嵌套虚拟化,openstack默认使用的Hypervisor是kvm,需要修改配置文件 /etc/nova/nova-compute 文件

compute_driver=libvirt.LibvirtDriver
libvirt_type=kvm

将kvm改为qemu

OpenStack All in One

时间: 2024-11-05 22:46:50

OpenStack All in One的相关文章

CentOS7下利用cobbler搭建openstack本地源

前面提到了使用cobbler进行自动化部署系统,下面我们介绍下如何利用cobbler快速搭建openstack本地源(这里我以我的测试环境中的openstack的Mitaka版本为例). 操作步骤如下: 1.添加openstack源: [[email protected] ~]# cobbler repo add --name=openstack-mitaka --mirror=http://mirrors.163.com/centos/7.3.1611/cloud/x86_64/opensta

OpenStack组件系列?Keystone搭建

一:版本信息 官网:http://docs.openstack.org/newton/install-guide-rdo/keystone.html 二:部署keystone 官网文档:http://docs.openstack.org/newton/install-guide-rdo/ 查看系统信息: [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.0.1406 (Core) [[email prote

OpenStack各组件介绍

OpenStack是一个开源的云计算管理平台项目,由几个组件组合起来完成具体的工作. 先列出其中的3个核心项目: 1. 控制台 服务名:Dashboard 项目名:Horizon 功能:web方式管理云平台,就像你登录aliyun账号一样所见和操作,建立主机,分配带宽,加云盘 2.计算 服务名:Compute 项目名:Nova 功能:负责响应虚拟机的创建请求.调度.销毁 3.网络 服务名:Networking 项目名:Neutron 功能:实现SDN(软件定义网络),提供一整套API,用户可以通

58 Openstack基础、openstack之glance、openstack之keystone

03 openstack之keystone 配置环境 Controller CentOS release 6.7 controller eth0:仅主机 192.168.28.121 eth1:桥接 192.168.1.121 node2 192.168.1.122 CentOS release 6.7 compute1 eth0:仅主机,eth1:VMnet2 不会直接与外部网络通信 node3 192.168.1.123 CentOS release 6.7 networking eth0:

云计算之openstack基础服务之一keystone服务最佳实践

1.openstack简介 Openstack是一个项目,该项目支持所有类型的云环境的一个开源云计算平台,该项目的目的是为了实现简单,大规模可扩展性,以及丰富功能集,来自世界各地的云计算专家项目作出贡献.Openstack提供了一个基础架构即服务(Iaas)并通过各种配套服务的解决方案,每个服务提供一个应用编程接口来完成整个openstack的结合. 架构图如下: 相关服务介绍: 服务名称 项目名称 描述 Dashboard Horizon 基于openstackAPI接口使用Django开发的

【N版】openstack——走进云计算(一)

[N版]openstack--走进云计算 一.云计算 云计算是一种按使用量付费的模式,这种模式提供可用的.便捷的.按需的网络访问,进入可配置的计算资源共享池(资源包括:网络.服务器.存储.应用软件.服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互. 1.1云计算的特点和优势 1)云计算是一种使用模式 2)云计算必须通过网络访问 3)弹性计算,按需付费 1.2在云计算之前的模式或技术 1)IDC托管 2)IDC租用 3)虚拟主机(卖空间的) 4)VPS:虚拟专用

【N版】openstack——认证服务keystone(三)

[N版]openstack--认证服务keystone 一.keystone介绍 1.1keystone Keystone(OpenStack Identity Service)是 OpenStack 框架中负责管理身份验证.服务规则和服务令牌功能的模块.用户访问资源需要验证用户的身份与权限,服务执行操作也需要进行权限检测,这些都需要通过 Keystone 来处理. 用户认证:用户权限与用户行为跟踪 服务目录:提供一个服务目录,包括所有服务项与相关API的端点 主要涉及如下概念: User:  

【N版】openstack——镜像服务glance(四)

[N版]openstack--镜像服务glance 一.openstack之glance镜像服务 1.1glance介绍 glance主要是由三部分组成 glance-api:接收云系统镜像的创建,删除,读取请求,类似nova-api,通过其他模块(glance-registry及image store)来完成诸如镜像的查找.获取.上传.删除等操作,api监听端口9292. glance-registry:云系统的镜像注册服务,用于与mysql数据库交互,存储或获取镜像的元数据(metadata

【转】《从入门到精通云服务器》第六讲—OpenStack基础

前五期的<从入门到精通云服务器>受到了广泛好评,收到留言,有很多读者对云计算相关的技术非常感兴趣.应观众要求,我们这期要安利一条纯技术内容.准备好瓜子.花生,随小编一起进入OpenStack 基础知识大讲堂吧. 了解OpenStack OpenStack 是最火的开源软件之一,活跃度呈指数级别上升:它是一组开源项目,诞生之初是由两个项目组成,目前十几个项目:它是一个云操作系统,OpenStack is a cloud operating system that … OpenStack 管理的资

openstack中eventlet使用

openstack中使用eventlet的协程来实现并发. 第一种,使用eventlet.GreenPool来管理绿色线程 如l3-agent在开启了8个绿色线程来处理router消息 def _process_routers_loop(self): pool = eventlet.GreenPool(size=8) while True: pool.spawn_n(self._process_router_update) 第二种是在oslo.messaging中创建接消息的进程直接创建绿色线程