TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=c84d0100-79f6-427b-8ced-0348b5df4ed7
DEVICE=eno16777736
ONBOOT=yes
IPADDR=192.168.199.21
NETNASK=255.255.255.0
GATEWAY=192.168.199.1
DNS1=114.114.114.114
设置完毕,执行以下命令重启network服务使网路插口设置修改生效。
systemctlrestartnetwork
提示
CentOS7的网卡设备命名方法有所变化,它采用一致性网路设备命名,可以基于固件、拓扑、位置信息来设置固定名称,由此带来的益处是命名手动化,名称完全可预测,硬件因故障更换也不会影响设备的命名,可以让硬件更换无缝过渡。但不足之处是比传统的命名格式更难读。这些命名格式为:网路类型+设备类型编码+编号。诸如,eno16777736表示一个以太网卡(en),使用的编号是板载设备索破折号,类型编码是o,索破折号是16777736。前两个字符为网路类型,如en表示以太网(Ethernet),wl表示无线局域网(WLAN),ww表示无线广域网(WWAN)。第3个字符代表设备类型,如o表示板载设备索顿号,s表示热拔插插孔索破折号,x表示MAC地址,p表示PCI地理位置/USB端标语;旁边的编号来自设备。假如要恢复使用传统的网路插口命令形式,则可以编辑/etc/sysconfig/grub文件,找到GRUB_CMDLINE_LINUX,为它降低以下两个变量:
net.ifnames=0biosdevname=0
再使用grub2-mkconfig重新生成GRUB配置并更新内核参数。
grub2-mkconfig-o/boot/grub2/grub.cfg
6.设置主机名
安装好CentOS7系统后,一般要修改主机名,比如,这儿修改为node-a:
hostnamectlset-hostnamenode-a
一旦修改主机名,就必须将新的主机名追加到/etc/hosts配置文件中:
127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4node-a
::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain6node-a
192.168.199.21node-anode-a.localdomain
否则,在使用RDO安装OpenStack的过程中启动rabbitmq-server服务后失败,因而造成安装不成功。RabbitMQ是一个在AMQP基础上完成的,可复用的企业消息系统,为OpenStack的估算组件Nova各个服务之间提供一个中心的消息机制。rabbitmq-server服务在启动前会解析主机名的地址是否可通。
7.修改语言编码

假如CentOS7安装的是非英文版本,这么在/etc/environment文件中添加以下定义:
LANG=en_US.utf-8
LC_ALL=en_US.utf-8
8.设置时间同步
整个OpenStack环境中所有节点的时间必须是同步的。在CentOS7系统中通常使用时间同步软件Chrony,假如没有安装,执行以下命令进行安装。
yuminstallchrony-y
一般选择一个控制节点作为其他节点的时间同步服务器(简称NTP)。这儿使用虚拟机作为OpenStack主机节点,选择其宿主机(一台化学机)作为所有节点的时间同步服务器比较好。
Windows系统自带时间服务器。考虑到本书实验环境,为易于实验,这儿直接在运行OpenStack的虚拟机的宿主机(化学机)上布署一个NTP服务器,统一所有OpenStack实验节点的系统时间。该化学机运行Windows7操作系统,可以借助其外置的W3232Time服务架设一台NTP服务器。默认情况下,Windows计算机作为NTP顾客端工作,必须通过更改注册表使其也作为NTP服务器运行。
(1)打开注册表编辑器,依次展开HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpServer节点,将Eabled通配符由默认的0改为1,表示启用NTP服务器。
(2)在注册表编辑器中继续将HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfig节点下的AnnounceFlags通配符改为5,这样强制该主机将它自身宣布为可靠的时间源,因而使用外置的CMOS时钟。默认值a(十六补码)表示采用外边的时间服务器。
(3)以管理员身分打开命令行,执行命令netstopw32time&&netstartw3232time,先停止再启动W3232Time服务。
(4)在命令行中执行services.msc命令打开服务管理单元(或则从计算机管理控制台北打开该管理单元),设置W3232Time服务启动模式为手动。
(5)NTP服务的端口是123,使用的是UDP。假如启用防火墙,则容许UDP123端口访问。可以打开“高级安全Windows防火墙”对话框,设置相应的入站规则。也可以通过管理员身分打开命令行,执行以下命令来添加该规则:
netshadvfirewallfirewalladdrulename=NTPSERVERdir=inaction=allowprotocol=UDPlocalport=123
至此centos 连接无线网,设置的NTP服务器可以提供时间服务。
之后在虚拟机(作为All-in-One节点)上配置Chrony,使其与化学机的时间同步。编辑/etc/chrony.conf,加入以下句子(192.168.199.201为NTP服务器地址)。
server192.168.199.201iburst
之后重启时间同步服务使设置生效:
systemctlrestartchronyd.service
2.1.2打算所需的软件库
CentOSExtras软件库已连同CentOS7一并安装,并默认启用。该库能支持OpenStack库,只需执行以下命令即可设置OpenStack库:
yuminstall-ycentos-release-openstack-queens
本例使用的OpenStack的版本为Queens,RDO基本与上游的OpenStack版本同步。假如要安装原先的旧版本,须要更改版本名,比如,Queens的上一版本为Pike,其中的软件包名改为centos-releaseopenstack-pike。
继续执行以下命令,以确保其中的openstack-queens软件库可用:
yum-config-manager--enableopenstack-queens
该命令将解析依赖(ResolvingDependencies)并安装所需的依赖(InstallingforDependencies)。完成以后,须要执行以下命令更新当前软件包:
yumupdate-y
这将升级所有包,改变软件设置和系统设置,并升级系统版本内核。
不过,从Pike开始,核心组件openstack-nova-compute的安装所依赖的qemu-kvm版本不能高于2.9.0,CentOS7现有的软件库不能提供qemu-kvm较新版本的安装。因此,须要相应的软件库来提供支持,RDO就提供这样的库。具体操作步骤如下。
(1)执行以下命令安装yum-plugin-priorities插件。
yum-yinstallyum-plugin-priorities
yum-plugin-priorities插件拿来设置yum在调用软件源时的次序。一般官方提供的软件源,都是比较稳定和被推荐使用的,所以官方源的次序要低于第三方源的次序。其实这须要在软件源定义文件(.repo)中使用priority参数设置优先级,其值为整数,默认优先级为99,数值越小优先级越高。
(2)执行以下命令切换到用于储存软件源定义文件的目录。
cd/etc/yum.repos.d/
(3)下载RDO官方网站针对CentOS7提供的软件源定义文件delorean-deps.repo。
curl-O

(4)下载RDO官方网站针对CentOS7提供的软件源定义文件delorean.repo。
curl-O
该文件内容如下,priority参数值为1,说明其优先级最高。
name=delorean-puppet-oslo-e996ecf807ebc4bd3c9ef037bd3722b551ade1bd
baseurl=1ade1bd_fb58e76a
enabled=1
gpgcheck=0
priority=1
(5)升级所有包,改变软件设置和系统设置,并升级系统版本内核。
yumupdate-y
这样yum首先会访问delorean.repo源,之后再访问其他可用的源。
因为内核更新,须要重启主机然后再执行后续操作。
2.1.3安装Packstack安装器
执行以下命令安装openstack-packstack及其依赖包:
yuminstall-yopenstack-packstack
安装过程中须要安装许多依赖包,如openstack-packstack-puppet等。
Packstack是RDO的OpenStack安装工具,用于替代自动设置OpenStack。Packstack基于Puppet工具,通过Puppet布署OpenStack各组件。Puppet是一种Linux、UNIX和Windows平台的集中配置管理系统,使用自有的Puppet描述语言,可管理配置文件、用户、任务、软件包、系统服务等。Puppet将这种系统实体称之为资源,其设计目标是简化对这种资源的管理,妥善处理资源间的依赖关系。
2.1.4运行Packstack安装OpenStack
1.Packstack工具的基本用法
packstack
执行packstack--help命令列举选项清单,这儿给出部份选项及其说明。
--gen-answer-file=GEN_ANSWER_FILE:形成应答文件模板。
--answer-file=ANSWER_FILE:根据应答文件的配置信息以非交互模式运行该工具。
--install-hosts=INSTALL_HOSTS:在一组主机上一次性安装centos 连接无线网,主机列表间以冒号分隔。第一台主机作为控制节点,其他主机作为估算节点。倘若仅提供一台主机,将集中在单节点上以“All-in-One”方式安装。
--allinone:所有功能都集中安装在单一主机上。
还有许多具体定义安装内容的全局性选项,比如,--ssh-public-key=SSH_PUBLIC_KEY设置安装在服务器上的私钥路径,--default-password=DEFAULT_PASSWORD设置默认密码(会被具体服务或用户的密码所覆盖),--mariadb-install=MARIADB_INSTALL设置是否安装MARIADB数据库。
2.Packstack的安装过程
实际应用中多使用应答文件所提供的配置选项进行布署。首次测试,可以考虑直接使用“All-inOne”方式进行单节点布署。“All-in-One”方式是RDO官方网站上提供的向导模式linux运维最佳实践,只需加上--allinone选项。下边记录了例中的执行过程(#打头的是笔者降低的注释)。
root@node-a~
#packstack--allinone
WelcometothePackstacksetuputility
#提示安装日志文件
Theinstallationlogfileisavailableat:/var/tmp/packstack/255-8r6isW/openstack-setup.log
Packstackchangedgivenvaluetorequiredvalue/root/.ssh/id_rsa.pub
Installing:
CleanUp
Discoveringipprotocolversion
#设置SSH秘钥
Settingupsshkeys
#打算服务器
Preparingservers
#安装Puppet和侦测主机详情之前
PreinstallingPuppetanddiscoveringhosts’details
#打算预装的项目
Preparingpre-installentries
#设置证书
SettingupCACERT
#打算AMQP(中级消息队列)项目
PreparingAMQPentries
#打算MariaDB(现已取代MySQL)数据库项目
PreparingMariaDBentries
#修正KeystoneLDAP参数
FixingKeystoneLDAPconfigparameterstobeundefifempty
#打算Keystone(认证服务)项目
PreparingKeystoneentries
#打算Glance(镜像服务)项目
PreparingGlanceentries
#检测Cinder(卷储存服务)是否有卷
CheckingiftheCinderserverhasacinder-volumesvg
#打算Cinder(卷储存服务)项目
PreparingCinderentries
#打算NovaAPI(Nova对外插口)项目
PreparingNovaAPIentries
#为Nova迁移创建SSH秘钥
CreatingsshkeysforNovamigration
GatheringsshhostkeysforNovamigration
#打算NovaCompute(估算服务)项目
PreparingNovaComputeentries
#打算NovaScheduler(调度服务)项目
PreparingNovaSchedulerentries

#打算NovaVNC(虚拟网路控制台)代理项目
PreparingNovaVNCProxyentries
#打算OpenStack与网路相关的Nova项目
PreparingOpenStackNetwork-relatedNovaentries
#打算Nova通用项目
PreparingNovaCommonentries
#以下打算Neutron(网路组件)项目
PreparingNeutronLBaaSAgententries
PreparingNeutronAPIentries
PreparingNeutronL3entries
PreparingNeutronL2Agententries
PreparingNeutronDHCPAgententries
PreparingNeutronMeteringAgententries
CheckingifNetworkManagerisenabledandrunning
#打算OpenStack顾客端项目
PreparingOpenStackCliententries
#打算Horizon仪表板项目
PreparingHorizonentries
#以下打算Swift(对象储存)项目
PreparingSwiftbuilderentries
PreparingSwiftproxyentries
PreparingSwiftstorageentries
#打算Gnocchi(用于计费的时间序列数据库作为服务)项目
PreparingGnocchientries
#打算Redis(用于计费的数据结构服务器)项目
PreparingRedisentries
#打算Ceilometer(计费服务)项目
PreparingCeilometerentries
#打算Aodh(警告)项目
PreparingAodhentries
#打算Puppet模块和配置清单
PreparingPuppetmanifests
CopyingPuppetmodulesandmanifests
#应用控制节点(测试时可能须要较长时间)
Applying192.168.199.21_controller.pp
192.168.199.21_controller.pp:
#应用网路节点(测试时可能须要较长时间)
Applying192.168.199.21_network.pp
192.168.199.21_network.pp:
#应用估算节点(测试时可能须要较长时间)
Applying192.168.199.21_compute.pp
192.168.199.21_compute.pp:
#应用Puppet配置清单
ApplyingPuppetmanifests
Finalizing
#安装成功完成应用并给出其他提示信息
****Installationcompletedsuccessfully******
Additionalinformation:
#执行命令形成的应答文件
*Anewanswerfilewascreatedin:/root/packstack-answers-256.txt
#未安装时间同步。须要确认CentOS7当前的系统时间正确,假若不正确,则须要更改
*Timesynchronizationinstallationwasskipped.PleasenotethatunsynchronizedtimeonserverinstancesmightbeproblemforsomeOpenStackcomponents.
#在用房主目录下形成keystonerc_admin文件,使用命令行工具须要用它作为授权凭据
*File/root/keystonerc_adminhasbeencreatedonOpenStackclienthost192.168.199.21.Tousethecommandlinetoolsyouneedtosourcethefile.
#访问OpenStackDashboard(Web访问插口),请使用keystonerc_admin中的登陆凭据
*ToaccesstheOpenStackDashboardbrowseto.
Please,findyourlogincredentialsstoredinthekeystonerc_admininyourhomedirectory.
#安装日志文件名及其路径
*Theinstallationlogfileisavailableat:/var/tmp/packstack/255-8r6isW/openstack-setup.log
#Puppet配置清单路径
*Thegeneratedmanifestsareavailableat:/var/tmp/packstack/255-8r6isW/manifests
3.Packstack安装典型问题
安装过程中应用控制节点、网络节点和估算节点时就会测试Puppet应用是否完成,如例中3个节点测试的提示依次为:
Testingifpuppetapplyisfinished:192.168.199.21_controller.pp
Testingifpuppetapplyisfinished:192.168.199.21_network.pp
Testingifpuppetapplyisfinished:192.168.199.21_compute.pp
测试过程可能会耗费较长时间。安装过程中出现的问题通常也集中在这个阶段。笔者遇见的典型问题有以下两个。
(1)应用控制节点失败。这个问题可以到Puppet配置清单路径中相应日志文件中查找缘由,例中为/var/tmp/packstack/255-8r6isW/manifests/192.168.199.21_controller.pp.log。最常见的诱因是rabbitmq-server服务在启动前要解析主机名的地址,解决方案参见2.1.1节第6点的有关说明。
(2)应用估算节点失败。这个问题可以到Puppet配置清单路径中相应日志文件中查找缘由,例中为/var/tmp/packstack/255-8r6isW/manifests/192.168.199.21_compute.pp.log。最常见的诱因是openstack-nova-compute的安装所依赖的qemu-kvm版本不能高于2.9.0,openstack-queens软件库现不能提供qemu-kvm较新版本的安装linux查看端口占用,其解决方案参见2.1.2节。其实也可以从其他渠道安装qemu-kvm2.9.0以上版本,须要的软件包括qemu-img-ev.x86_64、qemu-kvm-common-ev.x86_64和qemu-kvm-ev.x86_64,版本不能高于2.9.0。
