文档章节

[官版翻译]OpenStack centos版安装(四)

Andy-xu
 Andy-xu
发布于 2014/07/20 11:51
字数 3544
阅读 218
收藏 3

原创作品:http://manual.blog.51cto.com/3300438/976083

本文翻译自官方部署指南第六章。部署OpenStack Compute及Image服务。在云环境中OpenStack Compute与Image service协同工作,实现通过REST APIs访问虚拟机及镜像的功能。

目录: 
一、安装与配置Image服务 
二、配置Hypervisor 
三、预设网络 
四、部署数据库 
五、安装与配置云控制器

一、安装与配置Image Service 
1.1 使用root身份,安装Image service 
$sudo yum install openstack-nova  openstack-glance 
安装后,你需要删除sqlite数据库文件,然后修改配置指向MySQL数据库。删除/var/lib/glance目录下的glance.sqlite文件。 
# rm  /var/lib/glance/glance.sqlite 
1.2 配置后端镜像(Image)服务数据库 
配置后端数据存储。使用MySQL创建一个glance数据库以及glance账户,赋予"glance”账户对glance数据库的所有权限。 
运行如下命令,进入MySQL数据库: 
$ mysql  -u  root  -p                               //根据提示输入MySQL管理员密码 
创建glance数据库: 
mysql> CREATE  DATABASE  glance; 
为新创建的数据库创建MySQL账户并赋予完全控制权限: 
mysql> GRANT  ALL  ON  glance.*  TO  'glance'@'%’IDENTIFIED  BY  '你的密码’; 
退出数据库: 
mysql> quit 
修改Glance配置文件 
更新/etc/glance/glance-api-paste.ini文件,修改[filter:authtoken]下admin_*的值。

[filter:authtoken] 
admin_tenant_name = service 
admin_user = glance 
admin_password = glance  
确保glance-api管道部分包括authtoken

[pipeline:glance-api] 
pipeline = versionnegotiation authtoken auth-context apiv1app  
在/etc/glance/glance-api.conf文件末尾追加如下内容:

[paste_deploy] 
flavor = keystone  
重启glance-api服务: service   glance-api    restart 
译者备注:重启服务实际应该是: service  openstack-glance-api   restart 
在/etc/glance/glance-registry.conf文件末尾追加如下内容:

[paste_deploy] 
flavor = keystone  
更新/etc/glance/glance-registry-paste.ini文件,修改[filter:authtoken]下admin_*的值:

[filter:authtoken] 
admin_tenant_name = service 
admin_user = glance 
admin_password = glance  
确保glance-registry管道部分包括authtoken: 

[pipeline:glance-registry] 
#pipeline = context registryapp 
# NOTE: use the following pipeline for keystone 
pipeline = authtoken auth-context context registryapp 
确保/etc/glance/glance-registry.conf和/etc/glance/glance-scrubber.conf文件数据库指向是MySQL而不是sqlite。

sql_connection = mysql://glance:yourpassword@192.168.206.130/glance 
注意:任何时候在修改完.conf配置文件后,记得重启相应的服务,使新的修改生效。 
现在,迁移数据库至MySQL: 
# glance-manage   db_sync 
重启glance-registry与glance-api服务: 
# service  openstack-glance-registry   restart 
# service  openstack-glance-api   restart 
注意事项:本文档为配置镜像缓存,读者可参考http://glance.openstack.org获得更多信息。 
Image服务排除,可以参考日志文件/var/log/glance/registry.log或/var/log/glance/api.log。 
1.3 验证Image Service是否安装成功 
你可以使用如下命令获得软件的版本号: 
# glance  --version 
Essex版本的挣钱版本号为glance  2012.1 
下载测试性镜像文件: 
# mkdir   /tmp/images 
# cd   /tmp/images 
# 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 


上传内核: 
# glance --os_username=adminUser  --os_password=secretword  --os_tenant=openstackDemo  \ 
> --os_auth_url=http://127.0.0.1:5000/v2.0   add name="tty-linuxkernel"  \ 
> disk_format=aki container_format=aki     < ttylinux-uec-amd64-12.1_2.6.35-22_1-vmlinuz 
Uploading image 'tty-linux-kernel' 
========================================================================== 
============================================================================== 
=========[100%] 41.8M/s, ETA 0h 0m 0s 
Added new image with ID: 599907ff-296d-4042-a671-d015e34317d2 


上传initrd文件: 
# glance --os_username=adminUser --os_password=secretword   \ 
>--os_tenant=openstackDemo --os_auth_url=http://127.0.0.1:5000/v2.0   \ 
> add name="tty-linuxOpenStackramdisk"   \ 
> disk_format=ari container_format=ari < ttylinux-uec-amd64-12.1_2.6.35-22_1-loader 


Uploading image 'tty-linux-ramdisk' 
========================================================================== 
============================================================================== 
===[100%] 937.483441K/s, ETA 0h 0m 0s 
Added new image with ID: 7d9f0378-1640-4e43-8959-701f248d999d 


上传镜像文件: 
# glance --os_username=adminUser --os_password=secretword   、 
> --os_tenant=openstackDemo  --os_auth_url=http://127.0.0.1:5000/v2.0   \ 
> add name="tty-linux"disk_format=ami    container_format=ami   \ 
> kernel_id=599907ff-296d-4042-a671-d015e34317d2   \ 
> ramdisk_id=7d9f0378-1640-4e43-8959-701f248d999d < ttylinux-uecamd64-12.1_2.6.35-22_1.img 
Uploading image 'tty-linux' 
========================================================================== 
============================================================================== 
===[100%] 118.480514M/s, ETA 0h 0m 0s 
Added new image with ID: 21b421e5-44d4-4903-9db0-4f134fdd0793 


现在在glance索引中将显示有一个合法的Image。 
# glance --os_username=adminUser  --os_password=secretword  \ 
> --os_tenant=openstackDemo  --os_auth_url=http://127.0.0.1:5000/v2.0  index 


二、配置Hypervisor 
对于生产环境,多数人会选择KVM或基于Xen的hypervisor。KVM通过libvirt运行,而Xen则通过XenAPI调用运行。我们默认选择的是KVM,而且它仅需要我们做最少的配置修改。本手册主要讲解KVM。 
2.1 KVM 
KVM是作为Compute默认的hypervisor被配置的。明确的启用KVM,需要在/etc/nova/nova.conf文件中添加如下配置:

connection_type=libvirt 
libvirt_type=kvm  
KVM hypervisor支持如下的虚拟机镜像格式:

Raw
QEMU Copy-on-write(qcow2)
VMware虚拟机格式(vmdk)
本文只要描述如果开启你系统上的KVM,你也需需要以下这些针对特定发行版本的文档作为参考:

Fedora: Getting started with virtualization from the Fedora project wiki.
 Ubuntu: KVM/Installation from the Community Ubuntu documentation.
Debian: Virtualization with KVM from the Debian handbook.
RHEL: Installing virtualization packages on an existing Red Hat Enterprise Linux systemfrom the Red Hat Enterprise Linux Virtualizaiton Host Configuration and Guest 
Installation Guide.
openSUSE: Installing KVM from the openSUSE Virtualization with KVM manual.
SLES: Installing KVM from the SUSE Linux Enterprise ServerVirtualization with KVM manual.
2.2 检查你的硬件是否支持虚拟化 
使用KVM需要主机CPU支持虚拟化技术(VT)。 
如果你在运行Ubuntu,当在BIOS中开启虚拟化功能以及KVM正确的被安装后,可以使用kvm-ok命令检查你的处理器是否支持VT,如果KVM是开启的,输出应该像这样: 
INFO: /dev/kvm exists 
KVM acceleration can be used 
如果未能开启KVM,输出应该像这样的信息: 
INFO: Your CPU does not support KVM extensions 
KVM acceleration can NOT be used 
如果你的发行版本没有kvm-ok命令,你也可以通过检查处理器标记查看是否支持虚拟化技术。对于Intel的处理器标记为vmx,AMD处理器标记为svm。可以通过以下简单命令来判断: 
# egrep  '(vmx|svm)’  --color=always   /proc/cpuinfo 
有些系统 需要你在BIOS中开启virtualization technology(VT),如果你确信自己的处理器支持硬件加速而上面的命令又没有任何输出,你也许需要重启电脑,进入系统BIOS,开启VT选项。 
2.3 开启KVM模块 
由于KVM是基于内核的虚拟化技术,所以需要确保kvm模块已经被正确加载。模块名称为kvm,还有kvm-intel或kvm-amd。这些模块的加载 也许在你安装KVM软件是就已经自动完成了,你可以使用lsmod命令检查它们是否被正确加载,以下是基于Intel处理器的输出结果: 
$ lsmod | grep kvm 
kvm_intel 137721 9 
kvm 415459 1 kvm_intel 
接下来,我们看看如果你的系统未能自动加载模块时,如果手动为基于Intel或AMD处理器加载相应模块。 
如果你的主机是基于Intel的处理器,以root身份运行如下命令加载内核模块: 
# modprobe  kvm 
# modprobe  kvm-intel 
将以下两行追加至/etc/modules文件,这样模块在重启后依然会被字段加载: 
kvm 
kvm-intel 
如果你的主机是基于AMD的处理器,以root身份运行如下命令加载内核模块: 
# modprobe  kvm 
# modprobe  kvm-amd 
将以下两行追加至/etc/modules文件,这样模块在重启后依然会被字段加载: 
kvm 
kvm-amd 
2.4 常见故障 
尝试开启虚拟机实例时提示ERROR状态,并且在/var/log/nova/nova-compute.log日志中有如下信息: 
libvirtError: internal error no supported architecture for os type 'hvm' 
这表明你的KVM内核模块未被正确加载。 
2.5 QEMU 
从Compute service架构来看,QEMU hypervisor非常像KVM hypervisor。两者都通过libvirt控制、都支持一样的特性设置,并且KVM所有的虚拟机镜像都与QEMU兼容。两者最大的差别是QEMU不 支持原生虚拟化技术(虚拟机直接运行于硬件之上)。 
译者备注:虚拟化有原生虚拟化与宿主虚拟化,宿主虚拟化典型代表是VMware Workstation,其运行在一个已经安装好的系统之上。原生虚拟化则可以直接运行与硬件之上。 
所以,QEMU性能比KVM稍差些,一般在生产环境部署的较少。 
使用QEMU的案例有: 
        运行于老的硬件平台上 
        测试环境 
启用QEMU的方式如下: 
connection_type=libvirt 
libvirt_type=qemu 
QEMU支持与KVM一样的虚拟机镜像格式: 
    * Raw 
    * qcow2 
    * vmdk 
译者备注:原文对Xen做了概念性介绍,但无具体配置描述,所以再次省略,感兴趣可以参考xen官方资料http://xen.org/products/xenhyp.html


三、预设网络 
文章将介绍如果在但网络接口上配置使用FlatDHCP模式。 
首先,设置你的/etc/network/interfaces文件:(译者备注,这里说的是Ubuntu环境) 
    * eth0:公网IP,网关 
    * br100:stp off,fd 0 
模版如下:

# The loopback network interface 
auto lo 
iface lo inet loopback 
# The primary network interface 
auto eth0 
iface eth0 inet dhcp 
# Bridge network interface for VM networks 
auto br100 
iface br100 inet static 
address 192.168.100.1 
netmask 255.255.255.0 
bridge_stp off 
bridge_fd 0  
还需要安装bridge-utils: 
sudo  apt-get   install   bridge-utils 
RHEL配置要求 
在/etc/qpidd.conf文件中设置auth=no 
设置SELinux模式为permissive: 
# sudo  setenforce   permissive 
如果是基于RHEL6.2的系统,使用openstack-config包关闭DHCP release。 
# sudo  openstack-config   --set   /etc/nova/nova.conf   DEFAULT  force_dhcp_release  False 
如果是基于RHEL6.3的系统,需要安装dnsmasq工具包: 
$ sudo  yum   install   dnsmasq-utils 
如果你使用的客户机镜像没有单独的分区,要使文件可以注入需要允许libguestfs检查镜像,设置方法如下: 
$ sudo openstack-config --set /etc/nova/nova.conf DEFAULT   libvirt_inject_partition -1

四、在云控制器上配置SQL数据库 
通过mysql客户端工具连接MySQL服务器: 
$ mysql  -u   root   -p                  //根据提示输入密码 
创建nova数据库: 
mysql> CREATE  DATABASE  nova; 
创建MySQL用户并赋予对新建数据库的所有权限: 
mysql> GRANT  ALL ON  nova.*  TO  'nova'@'%’IDENTIFIED  BY  '密码'; 
退出数据库: 
mysql> quit

五、安装与配置云控制器 
安装消息队列服务器,RabbitMQ。当然你也可以选择Apache Qpid,你可以参考官方Compute Administration Manual中的介绍。 
# yum  -y  install   rabbitmq-server 
安装nova-开头的软件包,相关依赖包会被自动安装。 
# yum  -y  install   openstack-nova-compute   openstack-nova-volume   openstack-nova-novncproxy  openstack-nova-api   openstack-nova-ajax-console-proxy   openstack-nova-cert   openstack-nova-consoleauth   openstack-nova-doc   openstack-nova-scheduler  openstack-nova-network 
译者备注:原文此处使用的包为nova-compute格式,不包含openstack。 
5.1 配置OpenStack Compute 
很多Compute服务的配置选项都存放在/etc/nova/nova.conf文件中。这里我们给出了保障运行的最小配置说明。更多配置选项可以参考OpenStack Compute Administration Manual文档。 
一般安装软件包会自动设置用户及权限,如果没有自动完成,以下为手动方式设置: 
# groupadd   nova 
# usermod  -g   nova   nova 
# chown  -R  root:nova   /etc/nova 
# chmod   640   /etc/nova/nova.conf 
编辑/etc/nova/nova.conf设置hypervisor,默认hypervisor为kvm,如果你需要使用其他的hypervisor如Xen,请修改libvirt_type=选项。 
确保数据库的连接设置: 
格式:  sql_connection=mysql://[user]:[pass]@[primary IP]/[db name] 
示例:  sql_connection=mysql://nova:yourpassword@192.168.206.130/nova 
在/etc/nova/nova.conf文件中添加以下这些网络设置,你可以在文件中添加注释说明行,方法是建立以#符号开头的行(以#开头的行全为注释行):

auth_strategy=keystone 
network_manager=nova.network.manager.FlatDHCPManager 
fixed_range=192.168.100.0/24 
flat_network_dhcp_start=192.168.100.2 
public_interface=eth0 
flat_interface=eth0 
flat_network_bridge=br100  
以下为nova.conf文件配置的示例:

[DEFAULT] 
# LOGS/STATE 
verbose=True 
# AUTHENTICATION 
auth_strategy=keystone 
# SCHEDULER 
compute_scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler 
# VOLUMES 
volume_group=nova-volumes 
volumevolume_name_template=volume-%08x 
iscsi_helper=tgtadm 
# DATABASE 
sql_connection=mysql://nova:yourpassword@192.168.206.130/nova 
# COMPUTE 
libvirt_type=qemu 
connection_type=libvirt 
instanceinstance_name_template=instance-%08x 
api_paste_config=/etc/nova/api-paste.ini 
allow_resize_to_same_host=True 
# APIS 
osapi_compute_extension=nova.api.openstack.compute.contrib.standard_extensions 
ec2_dmz_host=192.168.206.130 
s3_host=192.168.206.130 
# RABBITMQ 
rabbit_host=192.168.206.130 
# GLANCE 
image_service=nova.image.glance.GlanceImageService 
glance_api_servers=192.168.206.130:9292 
# NETWORK 
network_manager=nova.network.manager.FlatDHCPManager 
force_dhcp_release=True 
dhcpbridge_flagfile=/etc/nova/nova.conf 
firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver 
my_ip=192.168.206.130 
public_interface=br100 
vlan_interface=eth0 
flat_network_bridge=br100 
flat_interface=eth0 
fixed_range=10.0.0.0/24 
# NOVNC CONSOLE 
novncproxy_base_url=http://192.168.206.130:6080/vnc_auto.html 
vncserver_proxyclient_address=192.168.206.130 
vncserver_listen=192.168.206.130  
你还需要修改api-paste.ini文件,使用keystone作为认证服务器。译者备注:原文档此处无配置说明,原文的附录部分有一个配置文件示例。 
重启nova-服务,接着与数据库同步数据: 
# for  svc  in  api  objectstore  compute  network  volume  scheduler  cert;  \ 
> do  sudo  service  openstack-nova-$svc  start;  sudo  chkconfig  openstack-nova-$svc  on;  done 
检查所有的服务是否启动成功,查看/var/log/nova日志文件是否有错误。 
为Compute配置数据库,通过如下命令在后端数据库中创建数据表: 
sudo  nova-manage   db   sync 
如果你看到任何响应信息,可以查看/var/log/nova/nova-manage.log查看问题所在。没有回应说明命令正确的被执行了。 
重启服务: 
sudo restart openstack-nova-api 
sudo restart openstack-nova-compute 
sudo restart openstack-nova-network 
sudo restart openstack-nova-scheduler 
sudo restart openstack-nova-vncproxy 
sudo restart openstack-nova-volume 
sudo restart libvirt-bin                                            //RHEL中为libvirtd服务 
sudo /etc/init.d/rabbitmq-server restart 
5.2 为Compute虚拟机实例创建网络 
你必须运行如下命令为虚拟机创建在nova.conf中设定的网络及br100桥接设备。这个例子中我们为虚拟机分配192.168.100.0/24的网络,但你也可以提供为自己的网络。示例中我们我们把这个网络标记为"private”: 
# nova-manage network create private --multi_host=T --fixed_range_v4=192.168.100.0/24  \ 
> --bridge_interface=br100 --num_networks=1 --network_size=256 
5.3 验证Compute的安装 
你可以使用root身份运行nova-manage命令来确保所有的Compute服务正常运行: 
# nova-manage   service  list 
正常的话,你会收到笑脸 : -)的回应而不是X符号的回应,以下为示例: 
Binary Host Zone Status State Updated_At 
nova-compute myhost nova enabled :-) 2012-04-02 14:06:15 
nova-cert myhost nova enabled :-) 2012-04-02 14:06:16 
nova-volume myhost nova enabled :-) 2012-04-02 14:06:14 
nova-scheduler myhost nova enabled :-) 2012-04-02 14:06:11 
nova-network myhost nova enabled :-) 2012-04-02 14:06:13 
nova-consoleauth myhost nova enabled :-) 2012-04-02 14:06:10 
你也可以运行nova-manage查看安装软件的版本: 
# nova-manage  version  list 
Essex版本的Compute版本号是2012.1 
2012.1 (2012.1-LOCALBRANCH:LOCALREVISION) 
5.4 定义Compute与Image服务的认证 
创建nova与glance命令行需要使用的变量,并保存至openrc文件,本文将openrc文件保存至~/creds目录下: 
$ mkdir  ~/creds 
$ nano   ~/creds/openrc 
在你创建的openrc文件中粘贴以下内容: 
export OS_USERNAME=adminUser 
export OS_TENANT_NAME=openstackDemo 
export OS_PASSWORD=secretword 
export OS_AUTH_URL=http://192.168.206.130:5000/v2.0/ 
export OS_REGION_NAME=RegionOne 
接着,让这些变量应用到你的系统环境中: 
$ source  ~/creds/openrc 
通过nova客户端命令显示可用镜像验证认证功能是否正常: 
 
注意你的系统中ID号将会此有所不同。 
5.5 安装额外的Compute节点 
为了大规模部署Compute,有多种途径可以帮助你在多个节点安装Compute。 
你可以安装所有的nova- 软件包及其依赖关系包,或仅安装nova-network与nova-compute组件在你的云控制节点上。你可以在任何地方安装nova- 服务,只要服务可以访问nova.conf并知道消息队列软件(Rabbitmq | Qpid)安装在哪即可。 
因为Compute节点需要查询数据库信息,所以nova客户端与MySQL客户端软件包都应该安装在附加Compute节点上。 
拷贝nova.conf到所有的附件compute节点。

本文转载自:http://my.oschina.net/chape/blog/120002

Andy-xu
粉丝 114
博文 118
码字总数 229298
作品 0
大兴
运维
私信 提问
(导航页)OpenStack-M版-双节点手工搭建-附B站视频

↓↓↓↓↓↓↓↓视频已上线B站↓↓↓↓↓↓↓↓ 》》》》》》传送门 本次搭建采用双节点,离线源搭建, 配置如下 本次搭建采用2台4核4G的虚拟机,也可以改为2核4G 主机名 配置 网络 Controll...

指剑
2019/11/29
0
0
OpenStack centos版安装(二)

在OpenStack第一天文档翻译后,丁丁努力坚持每晚抽时间翻译OpenStack官方网站提供的安装与部署指南,本文翻译自官方安装与部署指南的前四章内容,前四章内容主要是对OpenStack整体安装步骤以...

蓝狐乐队
2014/04/18
284
0
OpenStack centos版安装(一)

OpenStack是一个美国国家航空航天局和Rackspace合作研发的,以Apache许可证授权,并且是一个自由软件和开放源代码项目。 OpenStack是一个云平台管理的项目,这个项目由几个主要的组件组合起来...

蓝狐乐队
2014/04/18
252
0
OpenStack基础环境 [一]

OpenStack基础环境 [一] OpenStack基础环境 [一] openstack介绍  openstack是一个云平台管理的项目,它不是一个软件。也就是说我们可以使用来管理我们一个数据中心大量资源池。它里面包含了...

Abcdocker
2018/06/26
0
0
用 OpenStack Designate 构建一个 DNS 即服务(DNSaaS)

学习如何安装和配置 Designate,这是一个 OpenStack 的多租户 DNS 即服务(DNSaaS)。 Designate 是一个多租户的 DNS 即服务,它包括一个用于域名和记录管理的 REST API 和集成了 Neutron 的...

作者: Amjad Yaseen
2019/05/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何优雅地检测JavaScript中的空闲时间?

是否可以在JavaScript中检测“ 空闲 ”时间? 我的主要用例可能是预取或预加载内容。 空闲时间: 用户不活动或没有使用CPU的时间 #1楼 如果不使用jQuery,则仅使用普通JavaScript: var inac...

技术盛宴
37分钟前
31
0
获取枚举值的属性

我想知道是否可以获取枚举值而不是枚举本身的属性? 例如,假设我有以下枚举: using System.ComponentModel; // for DescriptionAttributeenum FunkyAttributesEnum{ [Description(...

javail
今天
70
0
concurrently 启动多个serve时命令行输出混乱

在script中配置中加入参数 -r "start": "npx concurrently -r \"npm:serve\" \"npm:web\"" 输出比较整洁 输出混乱, 会将有用的信息冲掉...

阿豪boy
今天
48
0
每天AC系列(三):电话号码的字母组合

1 题目 Leetcode第17题。 数字2-9映射字母,给出一个包含字符串的数字,列出字母的所有组合。 2 递归 拿到这样的题目想到了递归实现,创建一个Map映射对应的字母,然后把它传给递归函数,同时...

Blueeeeeee
今天
44
0
Kettle自定义jar包供javascript使用

我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。 本篇文章有参考自:https://www...

CREATE_17
昨天
114
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部