设为首页 收藏本站
查看: 1712|回复: 0

[经验分享] OpenStack云第四天

[复制链接]

尚未签到

发表于 2018-6-2 14:17:36 | 显示全部楼层 |阅读模式
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_*的值。      



  • [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=&quot;tty-linuxOpenStackramdisk&quot;   \      

> 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=&quot;tty-linux&quot;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     

DSC0000.png
  二、配置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 system from 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的网络,但你也可以提供为自己的网络。示例中我们我们把这个网络标记为&quot;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客户端命令显示可用镜像验证认证功能是否正常:     

DSC0001.png    

注意你的系统中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


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-508159-1-1.html 上篇帖子: openstack中resize更改虚拟机内存、cpu大小后虚拟机状态显示VERIFY_RESIZE 下篇帖子: openstack安装rabbitmq
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表