QQ音乐节点token部署失败怎么token失效的解决办法

快速入门Openstack,无脑多节点部署Mitaka(5)--Nova部署
什么是Nova?简介Nova是openstack中用来提供高可扩展、按需、自服务的计算资源服务的一个项目。Nova是openstack最老牌的项目,最初刚发布的时候集成了很多的功能,既包括计算,也包括网络和存储。后来随着openstack的发展壮大,相应的功能被拆分成单独的项目,使得相应功能及开发可以更加细致和深入。最初的nova-network现在被neutron项目取代,最初的nova-volume从nova中分离出来,变成了cinder项目。分离之后,Nova的功能相对单一,结构也更加清楚,更容易理解。Nova是一个虚拟机的管理程序,为虚拟机的管理和维护提供了一套高度抽象的API,允许用户通过API来管理自己的虚拟机。Nova与系统虚拟化关系不大,Nova是通过调用各种虚拟化方案提供的接口来管理虚拟机的,因此,Nova能够支持多种不同的虚拟化方案。目前,Nova支持的虚拟化方案包括:Libvirt + KVM/Qemu;Libvirt + LXC;Libvirt + Xen;Windows Hyper-V;VMware;最近openstack社区正在积极的拓展Nova的功能,Nova不仅可以用来管理虚拟机,也可以用来管理物理服务器(Ironic)及用来管理容器(Magnum)。架构简版:nova services 简介nova-apinova-api是整个nova各项服务的对外接口,通过HTTP协议对外提供服务,openstack中的其他项目也是通过nova-api提供的接口与其进行交互的。nova-api有三套接口,其中一套是兼容AWS EC2的接口,另一套是openstack自己开发的接口,最后一套则是给虚拟机提供metadata服务,不直接对外服务。nova-api主要的任务就是接收用户通过HTTP协议发送过来的请求,对请求进行验证并处理用户的请求,最后将请求的结果发送给用户。但是很多时候,nova-api给用户返回操作结果的时候,用户的请求可能还没有全部完成,以创建虚拟机为例,nova-api收到一个创建一台虚拟机的请求后,nova-api首先会对请求进行验证,检查请求中的image和flavor是否存在,如果没有问题,那么nova-api会在数据库中记录虚拟机的基本信息,并通过RPC给计算节点发送一个创建虚拟机的请求,接着,nova-api就会将虚拟机相关的信息发送用户,请求的响应过程结束。nova-api并不会等到虚拟机创建完成才返回,而是将虚拟机创建相关的主要工作交给了nova-compute服务。nova-api在运行的过程中需要连接到数据库,因为nova-api需要更新虚拟机的信息。此外,nova-api还要能够访问消息队列服务器,因为nova-api和nova-compute直接是通过RPC进行通信的。nova-conductorconductor服务是在G版进入到nova的,主要的目的是代替nova-compute去访问数据库,这样做主要是基于安全的考虑。在公有云的环境下,nova-compute是部署最为广泛的一个服务,运行在hypervisor上的恶意虚拟机可能可以拿到hypervisor的控制权,从而直接对数据中心的数据库进行修改。为了防止这种情况发生,一种简单的做法就是让尽可能少的人有直接操作数据库的权限。通过nova-conductor来访问数据库,不仅可以提高nova的可扩展性,还能提高数据库访问的性能。除了代替nova-compute访问数据库,nova-conductor还被用来执行一些需要较长时间才能完成的操作,如虚拟机的迁移。从结构上来说,nova-conductor非常简单,就是不断的从消息服务器获取RPC请求,然后将其转化为数据库的操作,获取到操作结果之后通过消息服务器返回数据库操作的结果。nova-schedulerscheduler是nova中的调度服务,决定了如何放置新创建的虚拟机。与conductor服务类似,从结构上来说,scheduler相对比较简单,从具体的实现上来说,scheduler是非常复杂的。scheduler的具体实现方法可以请参考[[grizzly-nova-scheduler]],虽然Havana版中scheduler有些变化,但是总体上没太大的差别。scheduler为了尽可能好的利用集群资源,需要跟踪每个hypervisor的状态和可用的资源。nova-compute会定期的通过消息队列和数据库更新其自身的状态和可用资源,scheduler也可以通过RPC获取hypervisor的状态和可用资源。因此,scheduler需要直接访问数据库和消息队列服务器。nova-certnova-cert是nova提供的一个证书服务,能够对用户的公钥进行签名,并返回签名后的x509格式的证书。从实现上来说,cert可能是nova中最简单的一个服务。主要包括两部分,一部分是集成在nova-api中的HTTP接口,另一部分就是cert-manager。nova-api收到签名请求之后,会通过消息队列将请求转发给cert-manager,cert-manager对公钥进行签名,并通过消息队列返回签名后的证书。因此,cert服务只需要连接到消息队列服务器即可。nova-cellcell服务主要是用来提高openstack集群的可扩展性,cell服务主要负责在不同cell之间的进行信息的同步和虚拟机的调度。在启用了cell的情况下,一个region可以划分为多个cell,每个cell可以使用不同的数据库和消息队列服务器。创建虚拟机时,该请求首先会发送给cell,cell再将该请求转发给某个cell中的scheduler,scheduler再选择某台具体的宿主机,并启动虚拟机。cell服务需要访问数据库和消息队列服务器。nova-consoleauthconsoleauth的功能相对比较简单,是给vnc代理服务器提供token验证服务。当用户在horizon中想通过vnc连接到虚拟机时,会给vnc代理服务器发送一个请求,代理服务器除了需要通过nova-compute获取虚拟机的vnc连接信息外,还需要通过对url中的token进行验证。token验证的任务就需要调用consoleauth。consoleauth会记录url中的token信息,并返回连接虚拟机vnc所需要的信息。为了获取连接虚拟机vnc相关的信息,consoleauth需要通过RPC调用nova-compute获取。因此,consoleauth服务只需要连接到消息队列服务器即可。nova-objectstoreobjectstore是nova提供的一个仿s3的对象存储接口。不过nova中的实现相对来说非常简单,只能讲上传的文件存储在本地,也不保证上传文件的高可用,只是一个简单的基于HTTP协议的文件存储服务,与nova的其他服务都没有什么关联。nova-novncproxynovncproxy是nova中实现的一个vnc代理服务,它能在浏览器和虚拟机的vnc server之间建立一条双向的socket通道,使得用户可以直接在浏览器中通过vnc登陆虚拟机,对虚拟机进行管理和操作。novncproxy在运行的过程中需要接收从用户浏览器过来的请求,并通过RPC调用consoleauth对token进行验证。如果验证可以通过,那么它会在浏览器和虚拟机vnc之间建立一个双向的连接。因此,novncproxy在工作的过程中需要能够访问消息队列服务器。此外,novncproxy通常使用KVM的虚拟化方案时使用。nova-spicehtml5proxyspicehtml5proxy在实现原理和工作流程上与novncproxy是一模一样,他们的差别只是体现在通信协议上。一个是使用vnc协议,另外一个则是采用的spice协议。其主要原因是,vnc在虚拟桌面环境中表现的并不是很好,而spice协议则能够较好的满足虚拟桌面的需求。nova-xvpvncproxyxvpvncproxy在实现原理和工作流程上与novncproxy是一模一样,它们都是采用vnc协议。不同的是,xvpvncproxy主要用在xen虚拟化平台中,而novncproxy则主要用在KVM虚拟化平台。nova-consoleconsole代理服务与vnc代理服务类似,用来连接到虚拟机的console接口。目前,只有xen和VMware虚拟化平台实现了console代理服务。nova-computecompute是nova项目中最复杂的任务,和众多服务都有关联,需要处理虚拟机相关的所有操作,包括虚拟机的创建、删除、启动、停止、迁移等。compute内部实现非常复杂,需要对多种虚拟化技术进行封装,为虚拟机准备磁盘和网络资源,还有很多周期性的任务需要处理。但是其数据流却相对简单,只是不断的从消息队列获取请求,处理请求,返回响应结果。nova-compute在运行的过程中,需要连接到消息队列服务器和虚拟化服务的管理接口(如:libvirtd)。nova-networknova-network是nova中集成的网络管理组件,它能够将一台普通的服务器转化为虚拟机的网关。nova-network实现的网络模型非常简单,却非常实用,尤其是nova-network支持HA模式,它使得每个计算节点都能充当虚拟机的网关。这样不仅可以解决网关高可用的问题,同时也可以提高虚拟机访问外部网络的性能,消除了单点故障和性能瓶颈。nova-network的数据流也相对简单,不断的处理和响应来自消息队列的请求,此外,在处理消息队列的请求中,需要将一些网络相关的配置和参数写入到数据库中。因此,nova-network也需要能够直接访问数据库。数据流结合前面的分析,可以得出nova中各个服务的数据流如下图所示。敲黑板,上面这些都是重点。注意,现在开始都会是多节点安装!vcD4NCjxoMSBpZD0="nova-controller节点部署">Nova-controller节点部署前期准备在安装每个服务之前,我们都必须先创建该服务的数据库、服务证书和API Endpoints。因为数据库这些都是安装在controller节点上,所以接下来的操作都是在controller节点上运行。1.创建两个数据库,并给nova用户设置权限和密码。123456是我的密码command:mysql -u root -p123456CREATE DATABASE nova_CREATE DATABASEGRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' /
IDENTIFIED BY ';;GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' /
IDENTIFIED BY ';;GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' /
IDENTIFIED BY ';;GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' /
IDENTIFIED BY ';;exitOutPut:[root@controller ~]# mysql -u root -p123456Welcome to the MariaDB monitor.
C or /g.Your MariaDB connection id is 32Server version: 10.1.12-MariaDB MariaDB ServerCopyright (c) , Oracle, MariaDB Corporation Ab and others.Type '' or '/h' for help. Type '/c' to clear the current input statement.MariaDB [(none)]& CREATE DATABASE nova_Query OK, 1 row affected (0.00 sec)MariaDB [(none)]& CREATE DATABASEQuery OK, 1 row affected (0.00 sec)MariaDB [(none)]& GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' /
IDENTIFIED BY ';;Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]& GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' /
IDENTIFIED BY ';;Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]& GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' /
IDENTIFIED BY ';;Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]& GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' /
IDENTIFIED BY ';;Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]& exitBye[root@controller ~]# 2.在openstack中创建nova用户,并添加为service project的管理员[root@controller ~]# source ~/admin-openrc[root@controller ~]# openstack user create --domain default /&
--password-prompt novaUser Password:Repeat User Password:+-----------+----------------------------------+| Field
|+-----------+----------------------------------+| domain_id | 098b1a4d36d241ed87e979ec86d32722 || enabled
| 387f268a791446efb1cd43c28e61b11b || name
|+-----------+----------------------------------+[root@controller ~]# openstack role add --project service --user nova admin3.创建nova服务实体[root@controller ~]# openstack service create --name nova /&
--description &OpenStack Compute& compute+-------------+----------------------------------+| Field
|+-------------+----------------------------------+| description | OpenStack Compute
|| enabled
| 04fdd2d0eca3c22e7f29e0f || name
|+-------------+----------------------------------+4.创建Compute service的API Endpoints[root@controller ~]# openstack endpoint create --region RegionOne /&
compute public :/%/(tenant_id/)s+--------------+-------------------------------------------------------+| Field
|+--------------+-------------------------------------------------------+| enabled
| 8e7a3cd7c9a64d5e95acaa
|| interface
| RegionOne
|| region_id
| RegionOne
|| service_id
| 04fdd2d0eca3c22e7f29e0f
|| service_name | nova
|| service_type | compute
| :/%(tenant_id)s |+--------------+-------------------------------------------------------+[root@controller ~]# openstack endpoint create --region RegionOne /&
compute internal :/%/(tenant_id/)s+--------------+-------------------------------------------------------+| Field
|+--------------+-------------------------------------------------------+| enabled
| 0ca2aa3e31
|| interface
| internal
| RegionOne
|| region_id
| RegionOne
|| service_id
| 04fdd2d0eca3c22e7f29e0f
|| service_name | nova
|| service_type | compute
| :/%(tenant_id)s |+--------------+-------------------------------------------------------+[root@controller ~]# openstack endpoint create --region RegionOne /&
compute admin :/%/(tenant_id/)s+--------------+-------------------------------------------------------+| Field
|+--------------+-------------------------------------------------------+| enabled
| 47d6ad969597
|| interface
| RegionOne
|| region_id
| RegionOne
|| service_id
| 04fdd2d0eca3c22e7f29e0f
|| service_name | nova
|| service_type | compute
| :/%(tenant_id)s |+--------------+-------------------------------------------------------+[root@controller ~]# 安装1.install the packagesyum install openstack-nova-api openstack-nova-conductor /
openstack-nova-console openstack-nova-novncproxy /
openstack-nova-scheduler -y2.编辑/etc/nova/nova.confcp -p /etc/nova/nova.conf /etc/nova/nova.conf.bakvim /etc/nova/nova.conf[DEFAULT]...enabled_apis = osapi_compute,metadatarpc_backend = rabbitauth_strategy = keystonemy_ip = 192.168.0.17use_neutron = Truefirewall_driver = nova.virt.firewall.NoopFirewallDriver[api_database]...connection = mysql+pymysql://nova:123456@/nova_api[database]...connection = mysql+pymysql://nova:123456@/nova[oslo_messaging_rabbit]...rabbit_host = rabbit_userid = openstackrabbit_password = henry[keystone_authtoken]...auth_uri = :5000auth_url = :35357memcached_servers = :11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = novapassword = 123456[vnc]...vncserver_listen = $my_ipvncserver_proxyclient_address = $my_ip[glance]...api_servers = :9292[oslo_concurrency]...lock_path = /var/lib/nova/tmp3.总览[root@controller ~]# cat /etc/nova/nova.conf | grep -v ^# | grep -v ^$[DEFAULT]enabled_apis = osapi_compute,metadata
#配置启用只允许compute和metadataAPIs rpc_backend = rabbit
#启用RabbitMQ消息队列作为rpc连接访问auth_strategy = keystone
#启用Identity service认证服务my_ip = 192.168.0.17
#Controller节点上的管理网络接口IPuse_neutron = Truefirewall_driver = nova.virt.firewall.NoopFirewallDriver[api_database]connection = mysql+pymysql://nova:123456@/nova_api
#连接nova_api数据库,123456是我的密码[barbican][cache][cells][cinder][conductor][cors][cors.subdomain][database]connection = mysql+pymysql://nova:123456@/nova
#连接nova数据库,123456是我的密码[ephemeral_storage_encryption][glance]api_servers = :9292
#镜像服务的提供者,我是装在controller节点上[guestfs][hyperv][image_file_url][ironic][keymgr][keystone_authtoken]auth_uri = :5000auth_url = :35357memcached_servers = :11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = novapassword = 123456
#123456是我openstack中nova用户的密码[libvirt][matchmaker_redis][metrics][neutron][osapi_v21][oslo_concurrency]lock_path = /var/lib/nova/tmp[oslo_messaging_amqp][oslo_messaging_notifications][oslo_messaging_rabbit]rabbit_host =
#rabbitMQ服务的提供者,我也是安装在controller节点上的rabbit_userid = openstack
#这是我的rabbitMQ服务中的账号rabbit_password = henry #henry是我rabbitMQ服务中openstack账号的密码[oslo_middleware][oslo_policy][rdp][serial_console][spice][ssl][trusted_computing][upgrade_levels][vmware][vnc]vncserver_listen = $my_ipvncserver_proxyclient_address = $my_ip[workarounds][xenserver][root@controller ~]# 4.同步数据库su -s /bin/sh -c &nova-manage api_db sync& novasu -s /bin/sh -c &nova-manage db sync& nova发现一个错误,它提示我访问不到controller中的数据库,我之前的代码是这么写的没错,正确的地址应该是错误信息描述:[root@controller ~]# su -s /bin/sh -c &nova-manage api_db sync& novaerror: (pymysql.err.OperationalError) (2003, &Can't connect to MySQL server on 'controller' ([Errno -2] Name or service not known)&)但是下面这种弃用提示是可以忽略的:[root@controller ~]# su -s /bin/sh -c &nova-manage api_db sync& nova[root@controller ~]# su -s /bin/sh -c &nova-manage db sync& nova/usr/lib/python2.7/site-packages/pymysql/cursors.py:146: Warning: Duplicate index 'block_device_mapping_instance_uuid_virtual_name_device_name_idx' defined on the table 'nova.block_device_mapping'. This is deprecated and will be disallowed in a future release.
result = self._query(query)/usr/lib/python2.7/site-packages/pymysql/cursors.py:146: Warning: Duplicate index 'uniq_instances0uuid' defined on the table 'nova.instances'. This is deprecated and will be disallowed in a future release.
result = self._query(query)[root@controller ~]# 5.启动服务,并设置为开机自启systemctl enable openstack-nova-api.service /
openstack-nova-consoleauth.service openstack-nova-scheduler.service /
openstack-nova-conductor.service openstack-nova-novncproxy.servicesystemctl start openstack-nova-api.service /
openstack-nova-consoleauth.service openstack-nova-scheduler.service /
openstack-nova-conductor.service openstack-nova-novncproxy.service上面部分是针对controller节点的。按照我们之前的网络拓补图,下面的部署是要在compute节点运行的。Nova-compute部署安装1.Install the packages:yum install openstack-nova-compute -y 2.编辑/etc/nova/nova.confcp -p /etc/nova/nova.conf /etc/nova/nova.conf.bakvim /etc/nova/nova.conf[DEFAULT]...rpc_backend = rabbitauth_strategy = keystonemy_ip = 192.168.0.18
use_neutron = Truefirewall_driver = nova.virt.firewall.NoopFirewallDriver[oslo_messaging_rabbit]...rabbit_host = rabbit_userid = openstackrabbit_password = henry[keystone_authtoken]...auth_uri = :5000auth_url = :35357memcached_servers = :11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = novapassword = 123456[vnc]...enabled = Truevncserver_listen = 0.0.0.0vncserver_proxyclient_address = $my_ipnovncproxy_base_url = :6080/vnc_auto.html[glance]...api_servers = :9292[oslo_concurrency]...lock_path = /var/lib/nova/tmp[libvirt]...virt_type = qemu总览:[root@compute ~]# cat /etc/nova/nova.conf | grep -v ^# | grep -v ^$[DEFAULT]rpc_backend = rabbitauth_strategy = keystonemy_ip = 192.168.0.18
#compute节点的管理网路的IP,得跟controller节点的管理网络保持在同一条网络上。use_neutron = Truefirewall_driver = nova.virt.firewall.NoopFirewallDriver[api_database][barbican][cache][cells][cinder][conductor][cors][cors.subdomain][database][ephemeral_storage_encryption][glance]api_servers = :9292[guestfs][hyperv][image_file_url][ironic][keymgr][keystone_authtoken]auth_uri = :5000auth_url = :35357memcached_servers = :11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = novapassword = 123456
#nova用户的密码[libvirt]virt_type = qemu
#在命令行执行egrep -c '(vmx|svm)' /proc/cpuinfo这条命令,如果返回值不是0,说明你的机器支持kvm,就没必要再用qemu,因此这行可以注释掉或者删除[matchmaker_redis][metrics][neutron][osapi_v21][oslo_concurrency]lock_path = /var/lib/nova/tmp[oslo_messaging_amqp][oslo_messaging_notifications][oslo_messaging_rabbit]rabbit_host = rabbit_userid = openstack
#rabbitMQ账户rabbit_password = henry #rabbitMQ密码[oslo_middleware][oslo_policy][rdp][serial_console][spice][ssl][trusted_computing][upgrade_levels][vmware][vnc]enabled = Truevncserver_listen = 0.0.0.0vncserver_proxyclient_address = $my_ipnovncproxy_base_url = :6080/vnc_auto.html[workarounds][xenserver][root@compute ~]# 3.启动服务,并设置为开机自启systemctl enable libvirtd.service openstack-nova-compute.servicesystemctl start libvirtd.service openstack-nova-compute.service验证请在controller节点上进行验证[root@controller ~]# source ~/admin-openrc[root@controller ~]# openstack compute service list+----+----------------+----------------+----------+---------+-------+------------------+| Id | Binary
| State | Updated At
|+----+----------------+----------------+----------+---------+-------+------------------+|
1 | nova-scheduler | controller.exa | internal | enabled | up
| T07:29 ||
| :26.000000
| controller.exa | internal | enabled | up
| T07:29 ||
| consoleauth
| :27.000000
3 | nova-conductor | controller.exa | internal | enabled | up
| T07:29 ||
| :27.000000
7 | nova-compute
| compute.exampl | nova
| enabled | up
| T07:29 ||
| :25.000000
|+----+----------------+----------------+----------+---------+-------+------------------+**额,看到上面四个服务已经激活,则说明nova的部署已经完成谢谢观看**
最新教程周点击榜
微信扫一扫OpenStack(2)
这是博主&@将近一个月的劳动成果吧?有需要的人赶紧mark,&同时不要忘记感谢博主
OpenStack多节点部署(一)——服务器选型
&&&&& 服务器的选型在类似于我们这样的非互联网类的传统公司也会成为一个很大的问题。以为之前并没有相关大规模服务器部署的经验,而且在采购等等环节受制于国企的一些制度和利益的影响,并不是能如意的选择到自己真正适合需要的机器。
这几年我买买的最多的机器还是DELL的,因为是集团的指定供应商。但是感觉服务很一般,尤其是官方的服务,二级分销商可能还会热情一些。而且在销售上,二级分销商和官方居然是竞争的关系,经常会因为抢做我们的单子而发生争执。
另外,我总觉得DELL的机器要比惠普的差一些,特别是在主板布局以及接口等方面,如果你手边有这两种服务器的话把机箱盖打开对比一下就知道了。另外网上提到现在国产服务器的份额也在逐年增加,像联想、曙光等等,做的也不错,这个我没接触过,就不评论了。
我们用的做多的机型是R710和R510,相信大家对着两款机型比较熟悉,是兼容性比较强的机器,属于拿来做什么项目都行的类型。可扩展性比较强,DELL提供的扩展组件也比较多。如果后期要升级的话,建议最好找二级分销商,价格会低很多。同是国企的朋友最好注意第一次购买的时候一定要根据项目需求配置双CPU和大内存,因为这两块占的比重很大,不然后期升级的时候费用很高,相信财务上会比较麻烦。
DELL最近为了适应云计算领域新推出了PowerEdge C系列的机器, C6100、C6105、以及C6220,比较适用于云计算的大内存,大存储空间的特点,移除了云计算不会涉及到的一些组件,降低了成本,也是可以考虑下的。
还有就是买KVM的时候千万别忘了RemoteKey,不然总跑机房也挺麻烦的。
OpenStack多节点部署(二)——操作系统安装
在中,为大家介绍了搭建云计算运营系统的服务器选型,相信经过这段时间,大家都已经成功采购到了符合业务量需求的服务器配置。下面将分享操作系统的安装过程中的思路:
如果您已经从WIKI得到了OpenStack的部署文档,比如os-compute-starterguide-trunk,您会发现文档中的安装演示步骤都是以Ubuntu为模板的。这也不足为怪,因为OpenStack基金会与Ubuntu的东家Canonical合作甚密;并且文档是以搭建实验开发平台为读者目标进行编攒的,以Ubuntu的apt-get管理方式进行OpenStack的安装确实也会给初学者带来许多方便。但是,如果您需要搭建一个多节点平台,一个真正需要运营的生产环境,还是建议使用CentOs,或者是商业系统RedHat等。因为毕竟Ubuntu开发中面向的群体主要还是桌面用户,对于服务器的支持并不是十分友好。刚开始接触OpenStack的时候,我也是按照教程使用的Ubuntu12.04作为操作系统,碰到了许多问题,拖延了部署的时间。
1、安装后开机不进入系统,显示并定在了initramfs,这是因为服务器启动时间过长让Ubuntu系统错认为是某些硬件系统初始化失败,系统默认的超时时间过短,我们需要在
sudo&vi&/etc/default/grub&&
GRUB_CMDLINE_LINUX_DEFAULT=&rootdelay=600&&&
调大超时的时间,并且更新grub
sudo&grub-update&&
2、在/etc/network/interfaces中修改网络配置后重启网络服务,发现IP并没有改为我们在配置文件中设置的IP,发现是因为启动了Gnome的桌面,桌面系统中的网络管理软件接管了网络服务,需要在桌面右上角手动将其禁用。
3、Ubuntu没完没了的更新,让你需要经常重启服务器,造成服务的中断。
种种问题因篇幅不一一赘述,虽然说Ubuntu在桌面电脑的表现上还是上佳的,但是服务器上我们还是选用较为稳定的CentOs6.3吧。
安装CentOS6.3最好为光盘安装,在mirrors下载CentOS-6.3-x86_64-bin-DVD1.iso,刻录一张DVD光盘。如果没有光驱,可以用ultraISO制作U盘安装盘,需要注意的是制作完U盘安装盘后还要将CentOS-6.3-x86_64-bin-DVD1.iso这个文件也拷贝到U盘的根目录下,并且要将bios的启动方式从bios方式改为EFI方式。
计算节点的分区可以选择默认模式,如果是控制节点推荐手动分区,因为要安装nova-volume服务,需要一个独立的LVM卷。
CentOS6.3网络设备的标识方法从Eth0改为了Em1,在做配置的时候需要注意。最近已经成功测试了在R510/710系列上利用自动化部署cobbler自动安装CentOS6.3系统,稍后有时间会给大家分享。
先写到这里,后面章节会给大家陆续介绍OpenStack各个组件在CentOS上的安装。
OpenStack多节点部署(三)——网络配置
在上一章中,和大家讨论了操作系统安装的方方面面,这章将带来OpenStack的网络配置。
初接触OpenStack的人,在看了部署文档之后,可能会被Nova-Network,Fix-ip,Floating-ip等概念弄的一头雾水,下面会一一详细道来。
Flat DHCP Network
上图大家可能看的不是很明白,其实OpenStack的nova-network部署可以分成3个网段。公网网段,内网网段和虚拟机网段。公网网段指的是可以直接访问到互联网的网段(但是此IP不一定非要从公司外部也能访问,这里的内外是从OpenStack网络系统出发而不是从公司网络的视角出发,请注意),也就是Floating
IP配置的网段,我把它绑定在了Eth0。内网网段指的是OpenStack系统内各服务器之间互联的顶层交换机所划的网段,这里将其设置为192.168.3.X,此网段无需出口,我把它绑定在了Eth1,在公司的网络也就是公网网络是访问不到的。虚拟机网段指的是虚拟机运行时其IP所在的网段,也就是Nova-Network中提到的Fix-IP,由于NOVA底层是采用libvirt,所以OpenStack内部默认将其设置为桥接网络br100,这里将其桥接在内网网络上,也就是Eth1。
在服务器选型的时候,我们已经选择了千兆双网卡的机型。这样公网网段和内网网段就可以绑定到两个不同的网口。有的实验环境中,比如沙克老师的文章将两个公网和内网两个网段都配置在了一个网卡上,在实验环境是可以的,但是生产环境不推荐,因服务器如果和外部网络数据交换量大的时候,会使内部服务如nova-scheduler,nova-volume等服务带来延迟。
我的服务器网络配置
auto&lo&&iface&lo&inet&loopback&&&&auto&eth0&&iface&eth0&inet&static&&address&10.2.15.3&&netmask&255.255.255.0&&broadcast&10.2.15.255&&gateway&10.2.15.1&&dns-nameservers&8.8.8.8&&&&auto&eth1&&iface&eth1&inet&static&&address&192.168.3.1&&netmask&255.255.255.0&&network&192.168.3.0&&broadcast&192.168.3.255&&
上面提到的Flat DHCP Network是Nova-Network服务的一种模式。另外还有Flat,VLan等,这里就不一一介绍了。Flat DHCP指的是所有虚拟机处在同一个平坦的网段上,且DHCP服务自动为其分配IP。
配置Fixed-IP命令
sudo&nova-manage&network&create&private&--fixed_range_v4=192.168.3.32/27&--num_networks=1&--bridge=br100&--bridge_interface=eth1&--network_size=32&&
使用此命令,我们可以详细配置虚拟机网段Fixed-IP所在的网段,掩码,桥接网络名称,桥接网络端口等参数,后面在NOVA章将详细介绍。
OpenStack多节点部署(四)——KeyStone
前面啰嗦了这么多,终于要正式进入OpenStack各组件安装部署的章节了。首先为大家带来的是OpenStack的用户登陆鉴权组件,KeyStone的安装。
首先,安装mysql服务,并分别创建Nova, glance, swift等组件独立的用户和口令
sudo&apt-get&install&mysql-server&python-mysqldb&&
安装过程中提示设置密码,这里设置为mygreatsecret
sed&-i&'/bind-address/&s/127.0.0.1/0.0.0.0/'&/etc/f&&sudo&restart&mysql&&sudo&mysql&-uroot&-pmygreatsecret&-e&'CREATE&DATABASE&'&&sudo&mysql&-uroot&-pmygreatsecret&-e&'CREATE&USER&'&&sudo&mysql&-uroot&-pmygreatsecret&-e&&GRANT&ALL&PRIVILEGES&ON&nova.*&TO&'novadbadmin'@'%';&&&sudo&mysql&-uroot&-pmygreatsecret&-e&&SET&PASSWORD&FOR&'novadbadmin'@'%'&=&PASSWORD('novasecret');&&&sudo&mysql&-uroot&-pmygreatsecret&-e&'CREATE&DATABASE&'&&sudo&mysql&-uroot&-pmygreatsecret&-e&'CREATE&USER&'&&sudo&mysql&-uroot&-pmygreatsecret&-e&&GRANT&ALL&PRIVILEGES&ON&glance.*&TO&'glancedbadmin'@'%';&&&sudo&mysql&-uroot&-pmygreatsecret&-e&&SET&PASSWORD&FOR&'glancedbadmin'@'%'&=&PASSWORD('glancesecret');&&&sudo&mysql&-uroot&-pmygreatsecret&-e&'CREATE&DATABASE&'&&sudo&mysql&-uroot&-pmygreatsecret&-e&'CREATE&USER&'&&sudo&mysql&-uroot&-pmygreatsecret&-e&&GRANT&ALL&PRIVILEGES&ON&keystone.*&TO&'keystonedbadmin'@'%';&&&sudo&mysql&-uroot&-pmygreatsecret&-e&&SET&PASSWORD&FOR&'keystonedbadmin'@'%'&=&PASSWORD('keystonesecret');&&&
安装KeyStone组件
sudo&apt-get&install&keystone&python-keystone&python-keystoneclient&&sed&-i&'/admin_token/&s/ADMIN/admin/'&/etc/keystone/keystone.conf&&sed&-i&'/connection/&s/sqlite\:\/\/\/\/var\/lib\/keystone\/keystone.db/mysql\:\/\/keystonedbadmin\:keystonesecret@192.168.3.1\/keystone/'&/etc/keystone/keystone.conf&&#注意修改mysql服务器地址&&sudo&service&keystone&restart&&sudo&keystone-manage&db_sync&&export&SERVICE_ENDPOINT=&http://localhost:3&&&export&SERVICE_TOKEN=admin&&
后面就是按照文档,创建租户Tenants,创建用户Users,创建角色Roles,最后进行租户、用户、角色之间的关联。不管创建什么类型,都会返回一个UID值,后面的步骤会用到前面的id,比如用户角色关联命令
keystone&user-role-add&--user&$USER_ID&--role&$ROLE_ID&--tenant_id&$TENANT_ID&&
这个$USER_ID和$ROLE_ID等就是前面创建用户或者角色时候得到的ID
比如先创建用户
keystone&user-create&--name&admin&--pass&admin&--email&&&
keystone&user-list&&+----------------------------------+---------+-------------------+--------+&&|&&&&&&&&&&&&&&&&id&&&&&&&&&&&&&&&&|&enabled&|&&&&&&&email&&&&&&&|&&name&&|&&+----------------------------------+---------+-------------------+--------+&&|&b3de3aeecb9cbfe8b8b7acd&|&True&&&&|&&&|&admin&&|&&|&ce8cd56caba6ed015e9494&|&True&&&&|&&&&|&nova&&&|&&+----------------------------------+---------+-------------------+--------+&&
如上,我们创建的名字为admin的用户就会显示出来,后面的步骤就要用这个ID。
大家会发现这样最非常麻烦,而且id这样拷贝很容易出错,所以我们要用脚本来自动完成上面的这些操作,以及service endpoint的操作。
#!/bin/bash&&#&&#&Initial&data&for&Keystone&using&python-keystoneclient&&#&&#&Tenant&&&&&&&&&&&&&&&User&&&&&&Roles&&#&------------------------------------------------------------------&&#&admin&&&&&&&&&&&&&&&&admin&&&&&admin&&#&service&&&&&&&&&&&&&&glance&&&&admin&&#&service&&&&&&&&&&&&&&nova&&&&&&admin,&[ResellerAdmin&(swift&only)]&&#&service&&&&&&&&&&&&&&quantum&&&admin&&&&&&&&#&if&enabled&&#&service&&&&&&&&&&&&&&swift&&&&&admin&&&&&&&&#&if&enabled&&#&service&&&&&&&&&&&&&&cinder&&&&admin&&&&&&&&#&if&enabled&&#&service&&&&&&&&&&&&&&heat&&&&&&admin&&&&&&&&#&if&enabled&&#&demo&&&&&&&&&&&&&&&&&admin&&&&&admin&&#&demo&&&&&&&&&&&&&&&&&demo&&&&&&Member,&anotherrole&&#&invisible_to_admin&&&demo&&&&&&Member&&#&Tempest&Only:&&#&alt_demo&&&&&&&&&&&&&alt_demo&&Member&&#&&#&Variables&set&before&calling&this&script:&&#&SERVICE_TOKEN&-&aka&admin_token&in&keystone.conf&&#&SERVICE_ENDPOINT&-&local&Keystone&admin&endpoint&&#&SERVICE_TENANT_NAME&-&name&of&tenant&containing&service&accounts&&#&SERVICE_HOST&-&host&used&for&endpoint&creation&&#&ENABLED_SERVICES&-&stack.sh's&list&of&services&to&start&&#&DEVSTACK_DIR&-&Top-level&DevStack&directory&&#&KEYSTONE_CATALOG_BACKEND&-&used&to&determine&service&catalog&creation&&SERVICE_HOST=${SERVICE_HOST:-192.168.3.1}&&#将这个IP修改为Keystone服务器的内网IP&&SERVICE_TOKEN=${SERVICE_TOKEN:-admin}&&SERVICE_ENDPOINT=${SERVICE_ENDPOINT:-http://localhost:3}&&#&Defaults&&export&SERVICE_TOKEN=$SERVICE_TOKEN&&export&SERVICE_ENDPOINT=$SERVICE_ENDPOINT&&SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}&&&&function&get_id&()&{&&&&&&echo&`&$@&&|&awk&'/&id&/&{&print&$4&}'`&&#&&'$@'代表函数的参数,参数就是get_id后面接的KeyStone命令&&}&&&&&&#&Tenants&&#&-------&&&&ADMIN_TENANT=$(get_id&keystone&tenant-create&--name=admin)&&SERVICE_TENANT=$(get_id&keystone&tenant-create&--name=$SERVICE_TENANT_NAME)&&&&&&#&Users&&#&-----&&&&ADMIN_USER=$(get_id&keystone&user-create&--name=admin&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&--pass=admin&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&--email=)&&NOVA_USER=$(get_id&keystone&user-create&--name=nova&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&--pass=nova&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&--email=)&&GLANCE_USER=$(get_id&keystone&user-create&--name=glance&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&--pass=glance&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&--email=)&&SWIFT_USER=$(get_id&keystone&user-create&--name=swift&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&--pass=swift&\&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&--email=)&&#&Roles&&#&-----&&&&ADMIN_ROLE=$(get_id&keystone&role-create&--name=admin)&&#&ANOTHER_ROLE&demonstrates&that&an&arbitrary&role&may&be&created&and&used&&#&TODO(sleepsonthefloor):&show&how&this&can&be&used&for&rbac&in&the&future!&&MEMBER_ROLE=$(get_id&keystone&role-create&--name=Member)&&&&&&#&Add&Roles&to&Users&in&Tenants&&keystone&user-role-add&--user_id&$ADMIN_USER&--role_id&$ADMIN_ROLE&--tenant_id&$ADMIN_TENANT&&keystone&user-role-add&--user_id&$NOVA_USER&--role_id&$ADMIN_ROLE&--tenant_id&$SERVICE_TENANT&&keystone&user-role-add&--user_id&$GLANCE_USER&--role_id&$ADMIN_ROLE&--tenant_id&$SERVICE_TENANT&&keystone&user-role-add&--user_id&$SWIFT_USER&--role_id&$ADMIN_ROLE&--tenant_id&$SERVICE_TENANT&&&&#&The&Member&role&is&used&by&Horizon&and&Swift&so&we&need&to&keep&it:&&keystone&user-role-add&--user_id&$ADMIN_USER&--role_id&$MEMBER_ROLE&--tenant_id&$ADMIN_TENANT&&&&&&#&Services&&#&--------&&&&#&Keystone&&&&&&&&KEYSTONE_SERVICE=$(get_id&keystone&service-create&\&&&&&&&&&&--name=keystone&\&&&&&&&&&&--type=identity&\&&&&&&&&&&--description=&Keystone&Identity&Service&)&&&&&&keystone&endpoint-create&\&&&&&&&&&&--region&RegionOne&\&&&&&&&&&&--service_id&$KEYSTONE_SERVICE&\&&&&&&&&&&--publicurl&&http://$SERVICE_HOST:&&\&&&&&&&&&&--adminurl&&http://$SERVICE_HOST:3&&\&&&&&&&&&&--internalurl&&http://$SERVICE_HOST:&&&&&&&#&Nova&&&&&&&&&&NOVA_SERVICE=$(get_id&keystone&service-create&\&&&&&&&&&&&&&&--name=nova&\&&&&&&&&&&&&&&--type=compute&\&&&&&&&&&&&&&&--description=&Nova&Compute&Service&)&&&&&&&&&&keystone&endpoint-create&\&&&&&&&&&&&&&&--region&RegionOne&\&&&&&&&&&&&&&&--service_id&$NOVA_SERVICE&\&&&&&&&&&&&&&&--publicurl&&http://$SERVICE_HOST:8774/v2/\$(tenant_id)s&&\&&&&&&&&&&&&&&--adminurl&&http://$SERVICE_HOST:8774/v2/\$(tenant_id)s&&\&&&&&&&&&&&&&&--internalurl&&http://$SERVICE_HOST:8774/v2/\$(tenant_id)s&&&&&&&&&#&Nova&needs&ResellerAdmin&role&to&download&images&when&accessing&&&&&&#&swift&through&the&s3&api.&The&admin&role&in&swift&allows&a&user&&&&&&#&to&act&as&an&admin&for&their&tenant,&but&ResellerAdmin&is&needed&&&&&&#&for&a&user&to&act&as&any&tenant.&The&name&of&this&role&is&also&&&&&&#&configurable&in&swift-proxy.conf&&&&&&#RESELLER_ROLE=$(get_id&keystone&role-create&--name=ResellerAdmin)&&&&&&#keystone&user-role-add&\&&&&&&#&&&&--tenant_id&$SERVICE_TENANT&\&&&&&&#&&&&--user_id&$NOVA_USER&\&&&&&&#&&&&--role_id&$RESELLER_ROLE&&&&&&&&&&&&&&&&&&#&Volume&&&&&&&&&&VOLUME_SERVICE=$(get_id&keystone&service-create&\&&&&&&&&&&&&&&--name=volume&\&&&&&&&&&&&&&&--type=volume&\&&&&&&&&&&&&&&--description=&Volume&Service&)&&&&&&&&&&keystone&endpoint-create&\&&&&&&&&&&&&&&--region&RegionOne&\&&&&&&&&&&&&&&--service_id&$VOLUME_SERVICE&\&&&&&&&&&&&&&&--publicurl&&http://$SERVICE_HOST:8776/v1/\$(tenant_id)s&&\&&&&&&&&&&&&&&--adminurl&&http://$SERVICE_HOST:8776/v1/\$(tenant_id)s&&\&&&&&&&&&&&&&&--internalurl&&http://$SERVICE_HOST:8776/v1/\$(tenant_id)s&&&&&&&&&&&#&Glance&&&&&&&&&&GLANCE_SERVICE=$(get_id&keystone&service-create&\&&&&&&&&&&&&&&--name=glance&\&&&&&&&&&&&&&&--type=image&\&&&&&&&&&&&&&&--description=&Glance&Image&Service&)&&&&&&&&&&keystone&endpoint-create&\&&&&&&&&&&&&&&--region&RegionOne&\&&&&&&&&&&&&&&--service_id&$GLANCE_SERVICE&\&&&&&&&&&&&&&&--publicurl&&http://$SERVICE_HOST:9292/v1&&\&&&&&&&&&&&&&&--adminurl&&http://$SERVICE_HOST:9292/v1&&\&&&&&&&&&&&&&&--internalurl&&http://$SERVICE_HOST:9292/v1&&&&&&&#&Swift&&&&&&&&&&SWIFT_SERVICE=$(get_id&keystone&service-create&\&&&&&&&&&&&&&&--name=swift&\&&&&&&&&&&&&&&--type=&object-store&&\&&&&&&&&&&&&&&--description=&Swift&Service&)&&&&&&&&&&keystone&endpoint-create&\&&&&&&&&&&&&&&--region&RegionOne&\&&&&&&&&&&&&&&--service_id&$SWIFT_SERVICE&\&&&&&&&&&&&&&&--publicurl&&http://$SERVICE_HOST:8080/v1/AUTH_\$(tenant_id)s&&\&&&&&&&&&&&&&&--adminurl&&http://$SERVICE_HOST:8080/v1&&\&&&&&&&&&&&&&&--internalurl&&http://$SERVICE_HOST:8080/v1/AUTH_\$(tenant_id)s&&&&&&&&&#&EC2&&&&&&&&&&EC2_SERVICE=$(get_id&keystone&service-create&\&&&&&&&&&&&&&&--name=ec2&\&&&&&&&&&&&&&&--type=ec2&\&&&&&&&&&&&&&&--description=&EC2&Compatibility&Layer&)&&&&&&&&&&keystone&endpoint-create&\&&&&&&&&&&&&&&--region&RegionOne&\&&&&&&&&&&&&&&--service_id&$EC2_SERVICE&\&&&&&&&&&&&&&&--publicurl&&http://$SERVICE_HOST:8773/services/Cloud&&\&&&&&&&&&&&&&&--adminurl&&http://$SERVICE_HOST:8773/services/Admin&&\&&&&&&&&&&&&&&--internalurl&&http://$SERVICE_HOST:8773/services/Cloud&&&
最后,用命令验证查看KeyStone是否安装正确
keystone&tenant-list&&keystone&user-list&&keystone&role-list&&keystone&service-list&&
好了,有关KeyStone的相关部署方法就介绍到这里。
OpenStack多节点部署(五)——Nova
这章将为大家介绍OpenStack最重要的核心组件,虚拟机管理组件Nova的安装部署。虽然是最重要的组件,但是因为包装的非常完整,所以如果前面的网络配置和KeyStone部署都正确完成的话,Nova组件的安装是非常简单的。
首先安装Nova组件
sudo&apt-get&install&nova-api&nova-cert&nova-compute&nova-compute-kvm&nova-doc&nova-network&nova-objectstore&nova-scheduler&nova-volume&rabbitmq-server&novnc&nova-consoleauth&&
&由于这篇文章提到的遇到服务器搬迁外网地址需要修改等问题,导致nova不能启动,这里在nova.conf中增加--iscsi_ip_address=192.168.3.1,这样系统创建的volume都会指向内网IP,避免类似的错误。
修改节点的/etc/nova/nova.conf配置文件
--dhcpbridge_flagfile=/etc/nova/nova.conf&&--dhcpbridge=/usr/bin/nova-dhcpbridge&&--logdir=/var/log/nova&&--state_path=/var/lib/nova&&--lock_path=/var/lock/nova&&--allow_admin_api=true&&--use_deprecated_auth=false&&--auth_strategy=keystone&&--scheduler_driver=nova.scheduler.simple.SimpleScheduler&&--s3_host=192.168.3.1&&--ec2_host=192.168.3.1&&--rabbit_host=192.168.3.1&&--cc_host=192.168.3.1&&--nova_url=http://192.168.3.1:/&&--routing_source_ip=192.168.3.1&&--glance_api_servers=192.168.3.1:9292&&--image_service=nova.image.glance.GlanceImageService&&--iscsi_ip_prefix=192.168.4&&--iscsi_ip_address=192.168.3.1&&--sql_connection=mysql://novadbadmin:novasecret@192.168.3.1/nova&&--ec2_url=http://192.168.3.1:8773/services/Cloud&&--keystone_ec2_url=http://192.168.3.1:/ec2tokens&&--api_paste_config=/etc/nova/api-paste.ini&&--libvirt_type=kvm&&--libvirt_use_virtio_for_bridges=true&&--start_guests_on_host_boot=true&&--resume_guests_state_on_host_boot=true&&#&VNC&specific&configuration&&--novnc_enabled=true&&--novncproxy_base_url=http://10.2.15.3:6080/vnc_auto.html&&--vncserver_proxyclient_address=10.2.15.3&&--vncserver_listen=10.2.15.3&&#&network&specific&settings&&--network_manager=nova.network.manager.FlatDHCPManager&&--public_interface=eth0&&--flat_interface=eth1&&--flat_network_bridge=br100&&--fixed_range=192.168.4.1/27&&--floating_range=10.2.15.254/25&&--network_size=32&&--flat_network_dhcp_start=192.168.4.33&&--flat_injected=False&&--force_dhcp_release&&--iscsi_helper=tgtadm&&--connection_type=libvirt&&--root_helper=sudo&nova-rootwrap&&--verbose&&
配置文件中需要注意的是各服务访问的IP地址,中介绍过,我的控制节点有两个IP,一个是OpenStack系统内网IP 192.168.3.1,另一个是公司内部可访问Internet的IP 10.2.15.3。这里推荐将服务IP写成内网IP 192.168.3.1,这样如果控制节点搬迁,或者公司10网段IP变更,那么我们的配置文件可以不动。
但是要注意的是
--novncproxy_base_url=http://10.2.15.3:6080/vnc_auto.html&&--vncserver_proxyclient_address=10.2.15.3&&
这两个VNC参数的IP要为公司内部网络10网段的IP,因为这个必须是从服务器系统外围能访问的IP。
配置文件参数详解可参见
之后为Nova-volume服务创建独立的逻辑卷
sudo&pvcreate&/dev/sda6&&
这里将/dev/sda6为你之前格式化为LVM的分区
创建名为nova-volumes的卷组
sudo&vgcreate&nova-volumes&/dev/sda6&&
修改配置文件权限
sudo&chown&-R&nova:nova&/etc/nova&&sudo&chmod&644&/etc/nova/nova.conf&&
修改/etc/nova/api-paste.ini,填写nova服务在keystone注册的用户名密码
sed&-i&'/admin_tenant_name/&s/%SERVICE_TENANT_NAME%/service/'&/etc/nova/api-paste.ini&&sed&-i&'/admin_user/&s/%SERVICE_USER%/nova/'&/etc/nova/api-paste.ini&&sed&-i&'/admin_password/&s/%SERVICE_PASSWORD%/nova/'&/etc/nova/api-paste.ini&&
同步数据库
sudo&nova-manage&db&sync&&
创建虚拟机所在的Fixed_ip的ip地址段
sudo&nova-manage&network&create&private&--fixed_range_v4=192.168.4.32/27&--num_networks=1&--bridge=br100&--bridge_interface=eth1&--network_size=32&&
192.168.4.32/27表示IP段从32开始,并且子网掩码为前27位为1
写入环境变量
export&OS_TENANT_NAME=admin&&export&OS_USERNAME=admin&&export&OS_PASSWORD=admin&&export&OS_AUTH_URL=&http://192.168.3.1:/&&&
最后重启各服务
sudo&restart&libvirt-&sudo&restart&nova-&sudo&restart&nova-&sudo&restart&nova-&sudo&restart&nova-&sudo&restart&nova-&sudo&restart&nova-&sudo&restart&nova-&&
再增加计算节点只需要安装nova-compute
sudo&apt-get&install&nova-compute&&
修改计算节点的配置文件
--dhcpbridge_flagfile=/etc/nova/nova.conf&&--dhcpbridge=/usr/bin/nova-dhcpbridge&&--logdir=/var/log/nova&&--state_path=/var/lib/nova&&--lock_path=/run/lock/nova&&--allow_admin_api=true&&--use_deprecated_auth=false&&--auth_strategy=keystone&&--scheduler_driver=nova.scheduler.simple.SimpleScheduler&&--s3_host=192.168.3.1&&--ec2_host=192.168.3.1&&--rabbit_host=192.168.3.1&&--cc_host=192.168.3.1&&--nova_url=http://192.168.3.1:/&&--routing_source_ip=192.168.3.1&&--glance_api_servers=192.168.3.1:9292&&--image_service=nova.image.glance.GlanceImageService&&--iscsi_ip_prefix=192.168.4&&--sql_connection=mysql://novadbadmin:novasecret@192.168.3.1/nova&&--ec2_url=http://192.168.3.1:8773/services/Cloud&&--keystone_ec2_url=http://192.168.3.1:/ec2tokens&&--api_paste_config=/etc/nova/api-paste.ini&&--libvirt_type=kvm&&--libvirt_use_virtio_for_bridges=true&&--start_guests_on_host_boot=true&&--resume_guests_state_on_host_boot=true&&#&vnc&specific&configuration&&--novnc_enabled=true&&--novncproxy_base_url=http://10.2.15.3:6080/vnc_auto.html&&--vncserver_proxyclient_address=10.2.15.4&&--vncserver_listen=10.2.15.4&&#&network&specific&settings&&--network_manager=nova.network.manager.FlatDHCPManager&&--public_interface=eth0&&--flat_interface=eth1&&--flat_network_bridge=br100&&--fixed_range=192.168.4.1/27&&--floating_range=10.2.15.4/27&&--network_size=32&&--flat_network_dhcp_start=192.168.4.33&&--flat_injected=False&&--force_dhcp_release&&--iscsi_helper=tgtadm&&--connection_type=libvirt&&--root_helper=sudo&nova-rootwrap&&--verbose&&
各计算节点间配置文件的不同点只有
--novncproxy_base_url=http://10.2.15.3:6080/vnc_auto.html&&--vncserver_proxyclient_address=10.2.15.4&&
其IP为计算节点的IP
最后,查看是否各服务安装成功,各计算节点是否正常
sudo&nova-manage&service&list&
OpenStack多节点部署(六)——glance
本章将为大家介绍OpenStack的镜像管理系统glance,负责存储和管理OpenStack的镜像和虚拟机的快照等。本章将是OpenStack多节点部署系列的最后一章了,在此也感谢大家一直以来对我的支持。还是那句话,stacker们大家可以在留言区多交流,我看到会及时回复的。
glance的安装部署比较简单,前半部分花一些时间讲解glance部署步骤,后面的篇幅主要介绍各类操作系统镜像制作的方方面面。
首先安装glance的软件包
sudo&apt-get&install&glance&glance-api&glance-client&glance-common&glance-registry&python-glance&&
修改glance api的配置文件,主要是填写在keystone中设置的用户名密码等
sed&-i&'/admin_tenant_name/&s/%SERVICE_TENANT_NAME%/service/'&/etc/glance/glance-api-paste.ini&&sed&-i&'/admin_user/&s/%SERVICE_USER%/glance/'&/etc/glance/glance-api-paste.ini&&sed&-i&'/admin_password/&s/%SERVICE_PASSWORD%/'&/etc/glance/glance-api-paste.ini&&
修改glance api的配置文件,增加keystone的支持
sed&-i&'$a&[paste_deploy]'&/etc/glance/glance-api.conf&&sed&-i&'$a&flavor&=&keystone'&/etc/glance/glance-api.conf&&
修改glance组件注册文件,修改数据库地址及令牌
sed&-i&'/sql_connection/s/=.*$/=&mysql:\/\/glancedbadmin:glancesecret@192.168.3.1\/glance'&/etc/glance/glance-registry.conf&&
修改glance组件注册配置文件,增加对keystone的支持
sed&-i&'$a&[paste_deploy]'&/etc/glance/glance-registry.conf&&sed&-i&'$a&flavor&=&keystone'&/etc/glance/glance-registry.conf&&
重启glance
sudo&restart&glance-api&&sudo&restart&glance-registry&&
验证glance是否安装成功,成功会返回0
glance&index&&
另外说一下glance的配置位置,如果大家的镜像和虚拟机快照不是非常多的话,建议就和nova的控制节点装在一起就行了,如果快照特别多,可以考虑glance单配一台服务器。
下面给大家分享镜像制作方面的一些经验。镜像制作一定要单开一台服务器或者在客户机client上制作,如果其放在控制节点或计算节点上,制作过程中由于会占用服务器大量资源导致其他服务拖慢卡顿。制作完成后拷贝镜像文件到glance image服务器,或在客户机上安装glance-client服务即可。
首先创建镜像盘,这个所有镜像的制作步骤都一样
kvm-img&create&-f&qcow2&server.img&5G&&
镜像文件有多种格式,常见的是qcow2和raw,qcow2是增量式的,raw是非增量式的。
制作Ubuntu镜像
sudo&kvm&-m&256&-cdrom&ubuntu-12.04-server-amd64.iso&-drive&file=server.img,&&if=virtio,index=0&-boot&d&-net&nic&-net&user&&
按照正常安装系统的步骤安装,可一路点默认设置下来,重启后安装ssh和cloud-init模块
网上的安装教程里面多半是这样的
sudo&apt-get&update&&sudo&apt-get&upgrade&&sudo&apt-get&install&openssh-server&cloud-init&&#Remove&the&network&persistence&rules&from&/etc/udev/rules.das&their&presence&will&result&in&&#the&network&interface&in&the&instance&coming&up&as&an&interfaceother&than&eth0.&&sudo&rm&-rf&/etc/udev/rules.d/70-persistent-net.rules&&
这个是错误的,cloud-init不能按照默认配置安装,要修改器安装脚本,否则安装后cloud-init访问不到OpenStack的metadata元数据服务器
正确的安装方法为
sudo&apt-get&update&&sudo&apt-get&upgrade&&echo&&cloud-init&cloud-init/datasources&string&NoCloud,&OVF,Ec2&&&&/tmp/debconf-selections&&/usr/bin/debconf-set-selections&/tmp/debconf-selections&&rm&-f&/tmp/debconf-selections&&apt-get&-y&install&cloud-init&&sudo&rm&-rf&/etc/udev/rules.d/70-persistent-net.rules&&
其实ubuntu的官网上有做好的UEC镜像的下载,地址为http://cloud-/releases/12.04.2/release-/
可直接wget&http://cloud-/releases/12.04.2/release-/ubuntu-12.04-server-cloudimg-amd64-disk1.img下载12.04 64位的镜像
制作CentOS或Fedora镜像
因为CentOS、Fedora没有cloud-init模块,所以要用curl从metadata元数据服务器获得主机名等信息
echo&&&&/root/.ssh/authorized_keys&&curl&-m&10&-s&http://169.254.169.254/latest/meta-data/public-keys/0/openssh-&&key&|&grep&'ssh-rsa'&&&&/root/.ssh/authorized_keys&&echo&&AUTHORIZED_KEYS:&&&echo&&************************&&&cat&/root/.ssh/authorized_keys&&echo&&************************&&&
另外还要修改/etc/sysconfig/network-scripts/ifcfg-eth0,将网卡的硬件串号等信息删除,设为DHCP模式
DEVICE=&eth0&&&BOOTPROTO=dhcp&&NM_CONTROLLED=&yes&&&ONBOOT=&yes&&&
删除网卡网口绑定规则,否则将导致重启后网络不可用
rm&-rf&/etc/udev/rules.d/70-persistent-net.rules&&
最后上传镜像
glance&add&name=&xxxx-linux&&is_public=true&container_format=ovf&disk_format=qcow2&&&server.img&&
制作windows镜像
kvm-img&create&-f&qcow2&windowsserver.img&20G&&
sudo&kvm&-m&1024&-cdrom&.0_x64fre_server_eval_zh-cn-GRMSXEVAL_CN_DVD.iso&-drive&file=windowsserver2008-enterprise.img,if=virtio&-boot&d&-drive&file=virtio-win-0.1-30.iso,index=3,media=cdrom&-device&virtio-net-pci&-net&nic&-net&user&&
由于windows server 2008默认没有带virtio的驱动,所以在启动镜像安装的时候我们要带上这个驱动盘,下载地址为&http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin
进入系统后,要将virtio驱动的网卡和磁盘驱动都装好,切记别忘了安装网卡驱动,安装完成后会显示两个网卡,镜像在nova再次启动后就只会剩下virtio驱动的虚拟网卡
最后上传镜像
glance&add&name=&windows&&is_public=true&container_format=ovf&disk_format=qcow2&&&windowsserver.img&&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:60351次
排名:千里之外
原创:13篇
转载:45篇
(1)(1)(3)(3)(1)(6)(4)(25)(9)(9)

我要回帖

更多关于 qq音乐版权 解决办法 的文章

 

随机推荐