OpenStack云第四天

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

OpenStack云第四天

本文翻译自官方部署指南第六章。部署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_*的值。


 
 
  1. [filter:authtoken] 
  2. admin_tenant_name = service 
  3. admin_user = glance 
  4. admin_password = glance  

确保glance-api管道部分包括authtoken


 
 
  1. [pipeline:glance-api] 
  2. pipeline = versionnegotiation authtoken auth-context apiv1app  

在/etc/glance/glance-api.conf文件末尾追加如下内容:


 
 
  1. [paste_deploy] 
  2. flavor = keystone  

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


 
 
  1. [paste_deploy] 
  2. flavor = keystone  

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


 
 
  1. [filter:authtoken] 
  2. admin_tenant_name = service 
  3. admin_user = glance 
  4. admin_password = glance  

确保glance-registry管道部分包括authtoken: 


 
 
  1. [pipeline:glance-registry] 
  2. #pipeline = context registryapp 
  3. # NOTE: use the following pipeline for keystone 
  4. pipeline = authtoken auth-context context registryapp 

确保/etc/glance/glance-registry.conf和/etc/glance/glance-scrubber.conf文件数据库指向是MySQL而不是sqlite。


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

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


 
 
  1. connection_type=libvirt 
  2. libvirt_type=kvm  

KVM hypervisor支持如下的虚拟机镜像格式:

  • Raw
  • QEMU Copy-on-write(qcow2)
  • VMware虚拟机格式(vmdk)

本文只要描述如果开启你系统上的KVM,你也需需要以下这些针对特定发行版本的文档作为参考:

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 
模版如下:


 
 
  1. # The loopback network interface 
  2. auto lo 
  3. iface lo inet loopback 
  4. # The primary network interface 
  5. auto eth0 
  6. iface eth0 inet dhcp 
  7. # Bridge network interface for VM networks 
  8. auto br100 
  9. iface br100 inet static 
  10. address 192.168.100.1 
  11. netmask 255.255.255.0 
  12. bridge_stp off 
  13. 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文件中添加以下这些网络设置,你可以在文件中添加注释说明行,方法是建立以#符号开头的行(以#开头的行全为注释行):


 
 
  1. auth_strategy=keystone 
  2. network_manager=nova.network.manager.FlatDHCPManager 
  3. fixed_range=192.168.100.0/24 
  4. flat_network_dhcp_start=192.168.100.2 
  5. public_interface=eth0 
  6. flat_interface=eth0 
  7. flat_network_bridge=br100  

以下为nova.conf文件配置的示例:


 
 
  1. [DEFAULT] 
  2. # LOGS/STATE 
  3. verbose=True 
  4. # AUTHENTICATION 
  5. auth_strategy=keystone 
  6. # SCHEDULER 
  7. compute_scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler 
  8. # VOLUMES 
  9. volume_group=nova-volumes 
  10. volumevolume_name_template=volume-%08x 
  11. iscsi_helper=tgtadm 
  12. # DATABASE 
  13. sql_connection=mysql://nova:yourpassword@192.168.206.130/nova 
  14. # COMPUTE 
  15. libvirt_type=qemu 
  16. connection_type=libvirt 
  17. instanceinstance_name_template=instance-%08x 
  18. api_paste_config=/etc/nova/api-paste.ini 
  19. allow_resize_to_same_host=True 
  20. # APIS 
  21. osapi_compute_extension=nova.api.openstack.compute.contrib.standard_extensions 
  22. ec2_dmz_host=192.168.206.130 
  23. s3_host=192.168.206.130 
  24. # RABBITMQ 
  25. rabbit_host=192.168.206.130 
  26. # GLANCE 
  27. image_service=nova.image.glance.GlanceImageService 
  28. glance_api_servers=192.168.206.130:9292 
  29. # NETWORK 
  30. network_manager=nova.network.manager.FlatDHCPManager 
  31. force_dhcp_release=True 
  32. dhcpbridge_flagfile=/etc/nova/nova.conf 
  33. firewall_driver=nova.virt.libvirt.firewall.IptablesFirewallDriver 
  34. my_ip=192.168.206.130 
  35. public_interface=br100 
  36. vlan_interface=eth0 
  37. flat_network_bridge=br100 
  38. flat_interface=eth0 
  39. fixed_range=10.0.0.0/24 
  40. # NOVNC CONSOLE 
  41. novncproxy_base_url=http://192.168.206.130:6080/vnc_auto.html 
  42. vncserver_proxyclient_address=192.168.206.130 
  43. 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客户端命令显示可用镜像验证认证功能是否正常: 
2 
注意你的系统中ID号将会此有所不同。 
5.5 安装额外的Compute节点 
为了大规模部署Compute,有多种途径可以帮助你在多个节点安装Compute。 
你可以安装所有的nova- 软件包及其依赖关系包,或仅安装nova-network与nova-compute组件在你的云控制节点上。你可以在任何地方安装nova- 服务,只要服务可以访问nova.conf并知道消息队列软件(Rabbitmq | Qpid)安装在哪即可。 
因为Compute节点需要查询数据库信息,所以nova客户端与MySQL客户端软件包都应该安装在附加Compute节点上。 
拷贝nova.conf到所有的附件compute节点。

未完待续… … 
转载时请务必以超链接形式标明出处,丁丁历险博客: http://manual.blog.51cto.com/3300438/976083






















本文转自丁丁历险51CTO博客,原文链接:http://blog.51cto.com/manual/976083 ,如需转载请自行联系原作者


相关文章
|
运维 架构师 安全
|
存储 Ubuntu Linux
|
MySQL 关系型数据库 API
|
Ubuntu Linux 数据安全/隐私保护
艾普联手OPENSTACK 打造公众云
本文讲的是艾普联手OPENSTACK 打造公众云,3月12日,依托成都市政府大力支持信息化发展及“城市云”建设高速前行的大环境,美国宇谷集团公司与四川省艾普网络股份有限公司联手打造的“艾普.OPENSTACK(中国区)2013高峰论坛”进入前期启动。
1192 0

热门文章

最新文章