OpenStack All in One

开源 OpenStack
本文主要讲解Openstack基本组件安装,希望对大家的学习有所帮助。

系统环境:ubuntu-server-14.04

网络环境:VMware Nat eth0 192.168.149.130

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

一、数据库

a) 安装

  1. # apt-get install python-mysqldb mysql-server 

b) 配置

修改 /etc/mysql/my.cnf 

  1. [mysqld]  
  2. …  
  3. bind-address = 127.0.0.1 # ip 地址全部使用本机  
  4. default-storage-engine = innodb #设置默认存储引擎为 Innodb  
  5. innodb_file_per_table  
  6. collation-server = utf8_general_ci #设置编码格式  
  7. init-connect = 'SET NAMES utf8' 
  8. character-set-server = utf8 

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

  1. # service mysql restart  
  2. # mysql_secure_installation 或 # mysql_install_db  

二、软件包配置

a) 安装 OpenStack Havana Ubuntu 云档案

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

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

  1. # apt-get update && apt-get dist-upgrade  
  2. # reboot 

三、消息服务

消息服务使用 rabbitmq

  1. # apt-get install rabbitmq-server 

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

  1. # rabbitmqctl change_password guest openstack 

 

四、Keystone认证服务

a) 安装

  1. # apt-get install keystone 

b) 配置

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

  1. ...  
  2. [sql]  
  3. # The SQLAlchemy connection string used to connect to the database  
  4. connection = mysql://keystone:openstack@127.0.0.1/keystone  
  5. ... 

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

  1. rm <span style="line-height: 1.5; font-size: 9pt;">–f /var/lib/keystone/keystone.db</span> 

3) 创建数据库

  1. # mysql -u root -p  
  2. mysql> CREATE DATABASE keystone;  
  3. mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \  
  4. IDENTIFIED BY 'openstack';  
  5. mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \  
  6. IDENTIFIED BY 'openstack'; 

4) 创建数据表

  1. # keystone-manage db_sync 

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

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

编辑 /etc/keystone/keyston.conf

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

6) 重启服务

  1. # service keystone restart 

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

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

这里设置为环境变量:

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

1) 创建租户admin和service

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

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

#p#

2) 创建用户admin

  1. #keystone user-create --name=admin --pass=openstack --email=admin@localhost 

  1. # keystone role-create --name=admin 

3) 为admin创建role

4) 关联 user、tenant和role

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

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

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

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

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

  1. # keystone endpoint-create \  
  2. --service-id=the_service_id_above\  
  3. --publicurl=http://127.0.0.1:5000/v2.0 \  
  4. --internalurl=http://127.0.0.1:5000/v2.0 \  
  5. --adminurl=http://127.0.0.1:35357/v2.0 

e) 校验keystone服务

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

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

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

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

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

五、镜像服务—glance

a) 安装

  1. # apt-get install glance python-glanceclient 

b) 配置

1) 设置数据库连接

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

  1. ...  
  2. [DEFAULT]  
  3. ...  
  4. # SQLAlchemy connection string for the reference implementation  
  5. # registry server. Any valid SQLAlchemy connection string is fine.  
  6. # See: http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/connections.  
  7. html#sqlalchemy.create_engine  
  8. sql_connection = mysql://glance:openstack@127.0.0.1/glance  
  9. ... 

2) 创建数据库

  1. # mysql -u root -p  
  2. mysql> CREATE DATABASE glance;  
  3. mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \  
  4. IDENTIFIED BY 'openstack';  
  5. mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \  
  6. IDENTIFIED BY 'openstack'; 

3) 创建数据表

  1. # glance-manage db_sync 

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

  1. # keystone user-create --name=glance --pass=openstack --email=glance@localhost 

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

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

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

  1. [keystone_authtoken]  
  2. ...  
  3. auth_uri = http://127.0.0.1:5000  
  4. auth_host = 127.0.0.1  
  5. auth_port = 35357 
  6. auth_protocol = http 
  7. admin_tenant_name = service 
  8. admin_user = glance 
  9. admin_password = openstack 
  10. ...  
  11. [paste_deploy]  
  12. ...  
  13. flavor = keystone 

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

  1. [filter:authtoken]  
  2. paste.filter_factory=keystoneclient.middleware.auth_token:filter_factory  
  3. auth_host=127.0.0.1  
  4. admin_user=glance 
  5. admin_tenant_name=service 
  6. admin_password=openstack 

7) 注册镜像服务

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

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

  1. # keystone endpoint-create \  
  2. --service-id=the_service_id_above \  
  3. --publicurl=http://127.0.0.1:9292 \  
  4. --internalurl=http://127.0.0.1:9292 \  
  5. --adminurl=http://127.0.0.1:9292 

#p#

9) 重启镜像服务

  1. # service glance-registry restart  

  2. # service glance-api restart 

c) 创建镜像文件

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

  1. $ mkdir images  
  2. $ cd images/  
  3. $ wget http://cdn.download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-disk.img  
  4. # 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 

查看上传的镜像可以使用

  1. # glance image-list 

六、计算服务

a) 安装计算服务软件包

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

修改内核bug

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

  2. version="$1" 

  3. # passing the kernel version is required  

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

  5. dpkg-statoverride --update --add root root 0644 /boot/vmlinuz-${version} 

  1. # chmod +x /etc/kernel/postinst.d/statoverride 

b) 配置

1) 配置数据库

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

  1. ...  
  2. [database]  
  3. # The SQLAlchemy connection string used to connect to the database  
  4. connection = mysql://nova:openstack@127.0.0.1/nova  
  5. [keystone_authtoken]  
  6. auth_host = 127.0.0.1  
  7. auth_port = 35357 
  8. auth_protocol = http 
  9. admin_tenant_name = service 
  10. admin_user = nova 
  11. admin_password = openstack 

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

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

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

3) 创建数据库

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

4) 创建数据表

  1. # nova-manage db sync 

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

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

  1. ...  
  2. [DEFAULT]  
  3. ...  
  4. my_ip=127.0.0.1  
  5. vnc_enabled=True 
  6. vncserver_listen=127.0.0.1  
  7. vncserver_proxyclient_address=127.0.0.1  
  8. novncproxy_base_url=http://127.0.0.1:6080/vnc_auto.html 

6) 创建nova用户

  1. # keystone user-create --name=nova --pass=openstack --email=nova@localhost 

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

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

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

  1. [DEFAULT]  
  2. ...  
  3. auth_strategy=keystone 
  4. glance_host=127.0.0.1 

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

  1. [filter:authtoken]  
  2. paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory  
  3. auth_host = 127.0.0.1  
  4. auth_port = 35357 
  5. auth_protocol = http 
  6. auth_uri = http://127.0.0.1:5000/v2.0  
  7. admin_tenant_name = service 
  8. admin_user = nova 
  9. admin_password = openstack 

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

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

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

10) 重启计算服务

  1. # service nova-api restart  
  2. # service nova-cert restart  
  3. # service nova-consoleauth restart  
  4. # service nova-scheduler restart  
  5. # service nova-conductor restart  
  6. # service nova-novncproxy restart  
  7. # service nova-compute restart 

#p#

11) 配置网络

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

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

  1. [DEFAULT]  
  2. ...  
  3. network_manager = nova.network.manager.FlatDHCPManager  
  4. firewall_driver = nova.virt.libvirt.firewall.IptablesFirewallDriver  
  5. network_size = 254 
  6. allow_same_net_traffic = False 
  7. multi_host = True 
  8. send_arp_for_ha = True 
  9. share_dhcp_address = True 
  10. force_dhcp_release = True 
  11. flat_network_bridge = br100 
  12. flat_interface = eth1 
  13. public_interface = eth1 

重启服务

  1. # service nova-network restart 

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

  1. # apt-get install nova-api 

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

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

七、载入实例

a) 配置认证服务

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

b) 添加sshping服务

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

c) 查看镜像

  1. $ nova image-list 

d) 查看flavor列表

  1. $ nova flavor-list 

e) 创建虚拟机实例

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

f) 查看实例

  1. $ nova list 

g) 连接到实例

  1. $ ssh cirros@10.0.0.3 

h) vnc连接

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


八、安装dashboard

首先安装apache-httpd服务器

  1. # apt-get install apache2 

然后安装dashboard

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

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


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

  1. compute_driver=libvirt.LibvirtDriver  
  2. libvirt_type=kvm 
  3. 将kvm改为qemu 

原文链接:http://my.oschina.net/JerryBaby/blog/301407

责任编辑:牛小雨 来源: Jerry_Baby的博客
相关推荐

2021-10-08 08:59:32

CentOSAll-in-One KubeSphere

2009-03-26 17:41:53

2013-06-09 10:34:24

华为网络规划企业ICT

2013-03-10 16:32:09

华为All-in-One-联络中心

2022-01-09 16:41:09

All in One 漏洞安全漏洞

2013-03-06 16:50:23

华为联络中心解决方案

2010-02-02 13:33:13

互联网

2010-04-08 14:42:32

互联网

2023-05-06 13:46:59

开源语言模型

2023-10-30 14:57:04

ChatGPT人工智能

2024-07-04 09:39:40

Go语言MongoDB

2022-05-23 11:21:31

博睿数据智能可观测平台

2015-07-24 17:16:12

Cocos 2d-x

2010-04-13 15:50:36

用友U8 All-in信息化

2010-01-18 15:34:47

互联网

2012-02-29 21:16:24

用友U8信息化

2012-02-29 19:03:31

用友信息化U8

2010-01-22 17:25:11

互联网

2015-11-05 13:51:41

点赞
收藏

51CTO技术栈公众号