热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

CentOS6.4系统安装配置OpenStack和Essex

首先如果你打算搭建一套单节点环境的Openstack,那一定是用于测试的,真正的Openstack环境请勿使用单节点环境,这仅仅只是让你了解并初步安装Openstack来用的环境。其次,由于Openstack的发展壮大,现在越来越多的公司都开始加入Openstack,包括Redhat,所以
首先如果你打算搭建一套单节点环境的Openstack,那一定是用于测试的,真正的Openstack环境请勿使用单节点环境,这仅仅只是让你了解并初步安装Openstack来用的环境。 其次,由于Openstack的发展壮大,现在越来越多的公司都开始加入Openstack,包括Redhat,所以渐渐地越来越人性化的安装命令也被一步步的完善。对新手安装Openstack来说还是非常有用的。
本文是基于fedora官方的"Getting started with Openstack EPEL"和Redhat官方的"Getting Started Guide"两篇文章,然后根据自己的网络状况进行整合而最终安装完成的,大家在安装的时候只要根据自己的实际情况进行一些简单的调整即可。
之前在摸索Openstack安装的时候,总是被网络环节所卡住研究了很长时间,最后发现Openstack的网络不吭,而是需要选择一个好的镜像才对。稍后我会写一篇关于在安装Openstack时候遇到的一些问题以及解决办法。
 
一、基础硬件环境准备
我这里使用的是一台R410:
系统:CentOS release 6.3 (Final),安装采用最简安装。
网络:单网卡(em1),网卡直接配ip:10.199.21.215,并确保这个网卡到外网畅通无阻。
硬盘分区:由于Openstack的Volume需要一块独立的分卷,所以我在分区的时候就直接创建了一个100G的Volume作为vg。这里注意vg的名字一定要为"nova-vloumes",通过vgdisplay可以看到:
# vgdisplay
 --- Volume group ---
 VG Name               nova-volumes
 System ID Format      lvm2
 Metadata Areas        1
 Metadata Sequence No  1
 VG Access             read/write
 VG Status             resizable
 MAX LV                0
 Cur LV                0
 Open LV               0
 Max PV                0
 Cur PV                1
 Act PV                1
 VG Size               98.38 GiB
 PE Size               4.00 MiB
 Total PE              25186
 Alloc PE / Size       0 / 0
 Free  PE / Size       25186 / 98.38 GiB
 VG UUID               5qKCtl-TSkw-1dq0-vqsd-9PI8-lvVU-KfBHOp
当一切准备就绪,就可以开始准备搭建Openstack环境了。  

二、软件环境准备
2.1.添加epel源
# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm
由于fedora官方的大力支持,Openstack的最新稳定版已经出现在epel的测试源中,我们更新完epel源之后直接使用yum安装即可 # yum update
# yum --enablerepo=epel-testing install openstack-nova openstack-glance openstack-keystone openstack-quantum openstack-swift\* openstack-dashboard openstack-utils memcached qpid-cpp-server mysql-server avahi dnsmasq-utils
2.2.更改安全设置 修改/etc/qpidd.conf文件,确保里面auth=no # sed -i s/^auth=.*/auth=no/g /etc/qpidd.conf
关闭selinux # sed -i s/^SELINUX=.*/SELINUX=disabled/g /etc/selinux/config

三、Openstack安装
3.1 开启各项服务 我们是yum安装的mysql,所以刚上来要先进行第一次启动以及一些配置,mysql的配置这里就不详述了,包括root密码什么的,大家根据自己的环境需要自己给mysql加入密码。之后启动即可
# /etc/init.d/mysqld start && chkconfig mysqld on
为Openstack准备数据库 # openstack-db --init --service nova
# openstack-db --init --service glance
开启提供支持的服务 # service qpidd start && chkconfig qpidd on
# service libvirtd start && chkconfig libvirtd on
开启glance服务 # for svc in api registry; do service openstack-glance-$svc start; chkconfig openstack-glance-$svc on  ; done
开启Nova服务 # for svc in api objectstore compute network volume scheduler cert; do service openstack-nova-$svc start ; chkconfig openstack-nova-$svc on ;  done
按理来说,各项服务都应该能正常开启。我们需要手动检查各个服务的Log查看是否有报错:Log在/var/log/nova下。
3.2 Keystone设置
Keystone就是一个密码库,管理所有的认证机制,包括各种服务的密码验证,以及我们从浏览器访问Web版的控制台的时候的登陆认证等。可以说它就是Openstack的机要处,必须要有它。然后我们使用各个命令来查询状态的时候,都要先进行一个密码的验证,而这个验证有一些明文的参数,这些内容是需要被指定在系统的环境变量中的。所以下面就可以看到我们添加系统环境变量的一步。
首先进行keystone的数据库设置
# openstack-db --init --service keystone
然后添加系统环境变量,由于环境变量会因为我们每次登陆而重置,所以我们把它写到一个文件里,这样我们每次ssh连入系统的时候就可以直接直读这个文件而获得我们自定义的这些系统环境变量。这里OS_PASSWORD对应的密码可以自己设置,由于Openstack中各项认证的密码众多,所以我建议大家都使用统一的密码。注意里面的ADMIN_TOKEN这将是所有服务获取认证的关键。 # cat > keystonerc < export ADMIN_TOKEN=$(openssl rand -hex 10)
export OS_USERNAME=admin
export OS_PASSWORD=Abcd1234
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://127.0.0.1:5000/v2.0/
EOF
这样我们当前目录下就有一个keystonerc的文件,这里记录着这些系统变量。 # . ./keystonerc
在配置文件中设置管理员的token # openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token $ADMIN_TOKEN
开始keystone服务 # service openstack-keystone start && chkconfig openstack-keystone on
创建默认的Tenants, Users和Roles,注意这里的SERVICE_PASSWORD,将会成为这些Users的默认密码 # ADMIN_PASSWORD=$OS_PASSWORD SERVICE_PASSWORD=Abcd1234 openstack-keystone-sample-data
创建好后,验证一下,如果弹出下面的内容,那就是创建完成了。 # keystone user-list
+----------------------------------+---------+--------------------+--------+ |                id                | enabled |       email        |  name  |
+----------------------------------+---------+--------------------+--------+
| 1581bec2ca864aa7b6a88947dddf7926 | True    | glance@example.com | glance |
| 3170c1630b154997acd9aed847ef3f48 | True    | nova@example.com   | nova   |
| 8b0d755e74524742966fdaf14a6e77d6 | True    | admin@example.com  | demo   |
| c2a3f53f014445a88650ba14a264e207 | True    | admin@example.com  | admin  |
+----------------------------------+---------+--------------------+--------+
3.3 配置nova
更改nova配置文件中的相关keystone认证的配置,注意,由于我们是单网卡节点,所以我们一定要制定flat_interface和public_interface为我们的网卡"em1" # openstack-config --set /etc/nova/api-paste.ini filter:authtoken admin_tenant_name service
# openstack-config --set /etc/nova/api-paste.ini filter:authtoken admin_user nova
# openstack-config --set /etc/nova/api-paste.ini filter:authtoken admin_password Abcd1234
# openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
# openstack-config --set /etc/nova/nova.conf DEFAULT flat_interface em1
# openstack-config --set /etc/nova/nova.conf DEFAULT public_interface em1
# for svc in api compute; do service openstack-nova-$svc restart; done
查看flavor的列表来检查一下我们配置好的nova是否能通过keystone来进行验证了 # nova flavor-list
+----+-----------+-----------+------+-----------+------+-------+-------------+
| ID |    Name   | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor |
+----+-----------+-----------+------+-----------+------+-------+-------------+
| 1  | m1.tiny   | 512       | 0    | 0         |      | 1     | 1.0         |
| 2  | m1.small  | 2048      | 10   | 20        |      | 1     | 1.0         |
| 3  | m1.medium | 4096      | 10   | 40        |      | 2     | 1.0         |
| 4  | m1.large  | 8192      | 10   | 80        |      | 4     | 1.0         |
| 5  | m1.xlarge | 16384     | 10   | 160       |      | 8     | 1.0         |
+----+-----------+-----------+------+-----------+------+-------+-------------+
3.4 配置glance
与nova的配置一样,我们也依然需要先设置glance来能使用keystone进行认证 # openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone
# openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone
# openstack-config --set /etc/glance/glance-api-paste.ini filter:authtoken admin_tenant_name  service
# openstack-config --set /etc/glance/glance-api-paste.ini filter:authtoken admin_user glance
# openstack-config --set /etc/glance/glance-api-paste.ini filter:authtoken admin_password Abcd1234
# openstack-config --set /etc/glance/glance-registry-paste.ini filter:authtoken admin_tenant_name service
# openstack-config --set /etc/glance/glance-registry-paste.ini filter:authtoken admin_user glance
# openstack-config --set /etc/glance/glance-registry-paste.ini filter:authtoken admin_password Abcd1234
# service openstack-glance-api restart
# service openstack-glance-registry restart
配置完后,使用查看当前镜像命令进行验证: # glance index
如果命令正确的话,返回值是0,当前我们没有添加任何镜像,所以这个一定是查不出内容的。但是返回值可以告诉我们是否命令执行正常。 3.5 添加网络
创建一个网络,这个网络是到时候由openstack创建出的虚拟机的主网络,所以我们可以根据自己的需要来创建,并且制定网桥,Openstack的虚拟网络会在创建第一个实例的时候由openstack自动创建出来,无需我们手动添加。
# nova-manage network create weiyantest 192.168.0.0/24 1 256 --bridge=weiyanbr01
3.6 创建一个keypair
keypair实际上就是ssh认证时候的私钥,我们创建好的实例想进入它还不知道密码的时候就需要使用它来进入,而如果有keypair,则所有新创建出来的实例都是已它来作为自己的私钥的。我们这里创建一个名字叫mykey的私钥 # nova keypair-add mykey > oskey.priv
# chmod 600 oskey.priv
设置keypair的加载类型,允许我们使用这一个私钥进入多个不同的实例 # openstack-config --set /etc/nova/nova.conf DEFAULT libvirt_inject_partition -1
# service openstack-nova-compute restart
3.7 设置Dashboard
Dashboard实际上就是Openstack的Web控制端,比较好安装 # yum install openstack-dashboard
# service httpd restart && chkconfig httpd on
之后,我们就可以通过 http://你机器的IP/dashboard 的方式访问到了,用户名是admin,密码是我们在系统环境中指定的密码
3.8 设置安全策略
这里的安全策略实际上就是后台那些创建出来的实例的防火墙~~ # 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
# nova secgroup-list
# nova secgroup-list-rules default
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port |  IP Range | Source Group |
+-------------+-----------+---------+-----------+--------------+
| icmp        | -1        | -1      | 0.0.0.0/0 |              |
| tcp         | 22        | 22      | 0.0.0.0/0 |              |
+-------------+-----------+---------+-----------+--------------+
创建确保从任意ip访问能ping通,能ssh进   3.9 设置VNC(可选)
VNC实际上是非必须的,不过既然Openstack有这功能,我们加入它实际上也不费力: 首先修改/etc/nova/nova.conf,在里面加入下面的内容,确保novncproxy_base_url这里的ip是你自己openstack的ip
novncproxy_host = 0.0.0.0
novncproxy_port = 6080
novncproxy_base_url=http://10.199.21.215:6080/vnc_auto.html
vnc_enabled=true
vncserver_listen=127.0.0.1
vncserver_proxyclient_address=127.0.0.1
安装novnc模块 # yum install openstack-nova-novncproxy openstack-nova-consoleauth
# service openstack-nova-novncproxy start
# service openstack-nova-consoleauth start
# chkconfig openstack-nova-novncproxy on
# chkconfig openstack-nova-consoleauth on
# service openstack-nova-compute restart
如果你安装到这里,那么基本上大部分的内容都已经安装完了,接下来就剩上传镜像并创建第一个实例了~! 

四、上传镜像,开启实例
关于镜像的制作,网上有很多教程,不过镜像制作好后能不能直接使用还是另一回事,至于能否使用,需要根据创建实例的时候它是否报错来对症下药。这里我只说明,使用一个简单的镜像来帮助大家先能正确的上传外加开启实例。  
4.1 上传镜像
首先我们把别人已经制作好的镜像下载下来,这里使用的是一个12.1版本的Ubuntu的精简系统(至于其他的系统如CentOS,Windows什么的,大家可以多找找类似的文章,然后自己制作一个适合自己的镜像):
# wget http://smoser.brickies.net/ubuntu/ttylinux-uec/ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz
# tar zxvf ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz
根据镜像的不同,添加到Openstack的方式也不同,这里使用的是指定内核和分区的添加方式,首先加载内核 # glance add name="tty-ubuntu-kernel" disk_format=aki container_format=aki < ttylinux-uec-amd64-12.1_2.6.35-22_1-vmlinuz
结束后会出现一个image的ID,注意我们要暂时的记录一下,后面还要用到 然后添加分区表bootloader的镜像 # glance add name="tty-ubuntu-ramdisk" disk_format=ari container_format=ari < ttylinux-uec-amd64-12.1_2.6.35-22_1-loader
之后也会生成一个ID。 最后添加真正的系统镜像,注意这里的kernel_id就是我们添加的第一个vmlinuz之后生成的ID,而ramdisk_id则是我们添加第二个bootloader后生成的ID,每个人的环境生成的ID不同,这里我将我生成的ID填上去,大家安装的时候一定不要照搬! # glance add name="tty-ubuntu" disk_format=ami container_format=ami kernel_id=492e2667-ad20-4bf4-9aeb-dc54c4078695 ramdisk_id=ccd7403a-ea56-44e9-b281-d785ea5fe733 < ttylinux-uec-amd64-12.1_2.6.35-22_1.img
成功添加后,我们使用命令查看一下添加的镜像: # glance index
ID                                   Name                           Disk Format          Container Format     Size
------------------------------------ ------------------------------ -------------------- -------------------- --------------
069d6ea1-fc3e-4894-8da2-596bc80c86b9 ttyubuntu                      ami                  ami                        25165824
ccd7403a-ea56-44e9-b281-d785ea5fe733 ttyubuntu-ramdisk              ari                  ari                           96629
492e2667-ad20-4bf4-9aeb-dc54c4078695 ttyubuntu-kernel               aki                  aki                         4404752
4.2 创建/启动实例
4.2.1 使用命令行创建一个实例:
# nova boot --flavor 2 --key_name mykey --image 069d6ea1-fc3e-4894-8da2-596bc80c86b9 这里,flavor实际上就是选择这个实例的"型号",可以通过nova flavor-list来查看都有什么样的配置;--key_name就是我们的keypair的名字,这里我们用自己的--mykey,最后--image就是我们选用的image了。 创建完成后我们可以来查看一下实例的状态
# nova list
+--------------------------------------+----------+--------+---------------------+
|                  ID                  |   Name   | Status |       Networks      |
+--------------------------------------+----------+--------+---------------------+
| aa4b06a0-db0f-4d37-bacc-b610266785a5 | linux456 | ACTIVE | demOnet=192.168.0.5 |
+--------------------------------------+----------+--------+---------------------+
需要查看详细,我们也可以使用 # nova show linux456
+-------------------------------------+----------------------------------------------------------+
|               Property              |                          Value                           |
+-------------------------------------+----------------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL                                                   |
| OS-EXT-SRV-ATTR:host                | openstack-all.ubisoft.org                                |
| OS-EXT-SRV-ATTR:hypervisor_hostname | None                                                     |
| OS-EXT-SRV-ATTR:instance_name       | instance-00000009                                        |
| OS-EXT-STS:power_state              | 1                                                        |
| OS-EXT-STS:task_state               | None                                                     |
| OS-EXT-STS:vm_state                 | active                                                   |
| accessIPv4                          |                                                          |
| accessIPv6                          |                                                          |
| config_drive                        |                                                          |
| created                             | 2012-10-09T10:23:45Z                                     |
| demonet network                     | 192.168.0.5                                              |
| flavor                              | m1.small                                                 |
| hostId                              | a8b209232974e07c716015d75757d6c07c83b11dbba6012f94fec285 |
| id                                  | aa4b06a0-db0f-4d37-bacc-b610266785a5                     |
| image                               | ttyubuntu                                                |
| key_name                            | mykey                                                    |
| metadata                            | {}                                                       |
| name                                | linux456                                                 |
| progress                            | 0                                                        |
| status                              | ACTIVE                                                   |
| tenant_id                           | d389ef56457647a6bb8c40818bcf9d3f                         |
| updated                             | 2012-10-09T10:24:19Z                                     |
| user_id                             | c2a3f53f014445a88650ba14a264e207                         |
+-------------------------------------+----------------------------------------------------------+
当实例彻底启动完之后,Status为ACTIVE的话,这时我们就可以使用ssh连接进我们的实例了。 # ssh -i oskey.priv root@192.168.0.5
The authenticity of host '192.168.0.5 (192.168.0.5)' can't be established. RSA key fingerprint is 95:13:b6:8b:84:79:f5:b7:00:7b:4f:7d:c6:1a:6b:ef. Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.5' (RSA) to the list of known hosts.
Chop wood, carry water.
VM># ll
total 18
drwx------    3 root     root        1.0K Oct  9 10:24 ./
drwxr-xr-x   18 root     root        1.0K Oct  9 10:24 ../
drwx------    2 root     root        1.0K Oct  9 10:24 .ssh/
-rwx------    1 root     root        7.0K Oct 17  2010 g01-static-tests.sh*
-rw-r--r--    1 root     root         691 Oct  9 10:24 ssh-host-dss-key.pub
-rw-r--r--    1 root     root         315 Oct  9 10:24 ssh-host-rsa-key.pub
-rwx------    1 root     root        2.0K Oct 17  2010 ssh_key_gen.sh*
4.2.2 使用图形化界面创建实例
如果使用Dashboard提供的Web页面来创建一个实例的话则相对会简单不少,于是我们登陆到Web页面上。注意,这里建议大家使用Chrome登陆,使用IE登陆可能会有一些不好用…… 登陆进Openstack,然后在Images & Snapshots这个页面中在我们自己上传的Images上点击Launch即可

之后弹出创建一个实例的配置页面:我们只需要填好名字,选好Flavor,设置好Keypair,然后点击Launch Instance即可
之后,页面自动跳入Instances界面我们可以看到我们的Instances的加载状态,没过1分钟,我们可以看到已经是Active的状态了。
单网卡单节点环境安装Essex的基础就是这些,稍后我会放出多节点,多网卡,以及手动用源码包安装,以及最新的F版本的安装过程,以及安装中出现的错误解决


推荐阅读
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • Docker入门与实践指南
    本文介绍了Docker的基础知识,包括其作为开源应用容器引擎的特点,以及如何利用Docker将应用程序及其依赖项打包成轻量级的容器镜像。同时,还详细讲解了Docker的核心概念、安装过程及基本命令操作。 ... [详细]
  • GNU GRUB(简称GRUB)是一个来自GNU项目的支持多启动的引导加载程序。它允许用户在同一台计算机上安装多个操作系统,并在启动时选择希望启动的系统。 ... [详细]
  • 本文将探讨iOS开发过程中需要掌握的三种关键编程语言——C、Objective-C和Swift,并深入解析面向过程与面向对象编程的概念,同时对比iOS与Android两大移动平台的特点。 ... [详细]
  • 成为一名高效的Java架构师不仅需要掌握高级Java编程技巧,还需深入理解JVM的工作原理及其优化方法。此外,对池技术(包括对象池、连接池和线程池)的应用、多线程处理、集合对象的内部机制、以及常用的数据结构和算法的精通也是必不可少的。同时,熟悉Linux操作系统、TCP/IP协议栈、HTTP协议等基础知识,对于构建高效稳定的系统同样重要。 ... [详细]
  • 本文深入探讨了分布式文件系统的核心概念及其在现代数据存储解决方案中的应用,特别是针对大规模数据处理的需求。文章不仅介绍了多种流行的分布式文件系统和NoSQL数据库,还提供了选择合适系统的指导原则。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
  • 版本控制工具——Git常用操作(下)
    本文由云+社区发表作者:工程师小熊摘要:上一集我们一起入门学习了git的基本概念和git常用的操作,包括提交和同步代码、使用分支、出现代码冲突的解决办法、紧急保存现场和恢复 ... [详细]
  • 探讨在开发、学习和实验过程中,使用 VMware 和 Docker 的优劣,帮助用户根据具体需求做出最佳选择。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • 在Swift项目中集成Objective-C类或第三方框架的方法
    本文通过实例讲解如何在Swift项目中引入并使用Objective-C编写的ProgressHUD库。首先需要在项目中添加库文件,并设置Objective-C桥接头文件以实现语言间的互操作性。 ... [详细]
  • 2023年,Android开发前景如何?25岁还能转行吗?
    近期,关于Android开发行业的讨论在多个平台上热度不减,许多人担忧其未来发展。本文将探讨当前Android开发市场的现状、薪资水平及职业选择建议。 ... [详细]
author-avatar
爱智孝的蛋清汤
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有