Ubuntu 16.04 LTS 下通过并发shell 多进程并发间通过共享存储区实现数据传送,输出无结果

君,已阅读到文档的结尾了呢~~
操作系统实验(5),操作系统实验报告,操作系统,操作系统实验教程,操作系统实验指导书,计算机操作系统实验,30天自制操作系统,自己动手写操作系统,广工操作系统实验,实验1 操作系统环境
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
操作系统实验(5)
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口主题信息(必填)
主题描述(最多限制在50个字符)
申请人信息(必填)
申请信息已提交审核,请注意查收邮件,我们会尽快给您反馈。
如有疑问,请联系
CSDN &《程序员》研发主编,投稿&纠错等事宜请致邮
你只管努力,剩下的交给时光!
如今的编程是一场程序员和上帝的竞赛,程序员要开发出更大更好、傻瓜都会用到软件。而上帝在努力创造出更大更傻的傻瓜。目前为止,上帝是赢的。个人网站:。个人QQ群:、
个人大数据技术博客:
欢迎转载,转载本文请注明作者和出处
PDF格式下载链接:
本文主要参考OpenStack官方文档
若只是想搭建OpenStack平台,可参考以下链接,通过脚本自动化部署
git clone https://gerrit.opnfv.org/gerrit/compass4nfv
1. 硬件服务器
名称:浪潮P8000工作站
CPU:Intel Xeon CPU E5-.40GHz * 2,共12个物理核,24个逻辑核
内存:16 * 8 = 128GB
存储:SAS 300GB * 3 = 900GB
网络:千兆网卡 * 6
操作系统:Windows Server 2012 R2 DataCenter
2. OpenStack部署分析及规划2.1 目的
部署一个OpenStack测试环境
硬件虚拟化,提供一个Infrastructure-as-a-Service (IaaS)解决方案
基于OpenStack云计算平台提供Hadoop MapReduce、Spark等计算服务
提供OpenStack开源云计算学习平台
2.2 OpenStack网络模型选择官方文档中OpenStack提供了两种网络模型架构
Provider Networks
OpenStack最简单的部署方式,主要利用二层网络服务(Layer-2 Services)(通过网桥和交换机连接不同网络)和VLAN划分,其本质上是将虚拟机网络(Virtual Networks)通过桥接到物理网络(Physical Networks)并利用物理网络设施提供三层网络服务(Layer-3 Services);此外,通过DHCP服务向虚拟网络实例提供IP地址。
注:该方式不支持私有自服务网络(Private Self-Service Networks),如三层路由服务(Layer-3 Routing Services)。
Self-Service Networks
该方式和Provider Networks方式相比,通过诸如VXLAN方式在自服务网络中支持三层路由服务。
本文采用Provider Networks网络模型设计
2.3 OpenStack节点硬件需求2.4 OpenStack服务组件选择本文选择OpenStack Mitaka版本
Compute-Focused OpenStack Design
根据OpenStack官方文档,以计算服务为主的OpenStack私有云计算平台可选取以下组件:
For a compute-focused OpenStack design architecture, the following components may be present:
Identity (keystone)
Dashboard (horizon)
Compute (nova)
Object Storage (swift)
Image (glance)
Networking (neutron)
Orchestration (heat)
OpenStack服务组件选择:
注:本文选择MariaDB(MySQL的一个分支,完全兼容MySQL)开源数据库为OpenStack组件提供后端数据访问服务。
Service Name
Component Name
Brief Description
Identity Service
身份服务,提供单点集成方式管理身份认证、授权、服务目录服务
Image Service
Compute Service
Networking Service
Dashboard Service
仪表盘,访问OpenStack服务的图形化接口
Block Storage Service
块存储服务
Shared File Systems Service
共享文件系统服务,用于文件存储
Object Storage Service
对象存储服务,用于对象存储和检索
Orchestration Service
编排服务,基于模板创建管理云资源
Telemetry Data Collection Service
Ceilometer
Telemetry Alarming Service
Database Service
数据库服务,用于云部署关系型和非关系性数据库引擎
Data Processing Service
数据处理服务,提供一个数据处理框架,如Hadoop、Spark、Storm
2.5 OpenStack节点网络设计
OpenStack官方文档建议网络布局如下:
本文采用如下网络设计
总共3个子网:
① 互联网连接/对外出口(External)
② Openstack管理网络(Management)
③ VM虚拟机内网连接(Data)
注:此外,本文将Block Storage Node和Object Storage Node加入Management Network。
2.6 OpenStack节点服务器规划
6台Ubuntu 16.04 LTS:
① Cotroller:用于整个集群的控制,高可靠性要求。承载数据库(MySQL)、队列服务器(RabbitMQ)、和最终的web入口(Apache+Memcache)。设置一块虚拟硬盘。要求网卡eth0接External Network,eth1接Management Network子网。
② Network:网络控制节点,高网络吞吐型节点。设置一块虚拟硬盘。要求3网卡,eth0接External Network,eth1接Management Network子网, eth2接Data Network子网。
③ Compute:计算节点,高内存+CPU+IO消耗型节点。设置一块虚拟硬盘。要求网卡eth0接External Network,eth1接Management Network子网,eth2接Data Network子网。
④ BlockStorage:块存储节点,提供块存储和共享文件系统服务。设置三块虚拟硬盘,一块安装操作系统,一块用于块存储服务,一块用于共享文件系统服务。要求网卡eth0接External Network,eth1接Management Network子网。
⑤ ObjectStorage:两个对象存储节点,提供对象存储服务。设置三块虚拟硬盘,一块安装操作系统,两块用于对象存储服务。要求网卡eth0接External Network,eth1接Management Network子网。
注:上述为了方便管理,对每个节点都添加了eth0网络接口,实际生产环境请根据实际情况配置。
服务器配置:
Controller
BlockStorage
100GB+100GB+100GB
ObjectStorage1
100GB+100GB+100GB
ObjectStorage2
100GB+100GB+100GB
注:此处资源分配超出了实际物理资源,可根据实际分配资源。
网络配置:
External Network
Management Network
Data Network
Controller
192.168.1.11
192.168.1.21
192.168.1.31
BlockStorage
192.168.1.41
ObjectStorage1
192.168.1.51
ObjectStorage2
192.168.1.52
Subnet Mask
255.255.255.0
255.255.255.0
255.255.255.0
192.168.1.1
注:由于实际网络限制, External Network通过虚拟网卡192.168.1.1共享主机网络来访问外网
物理主机端口映射信息:
物理机端口
虚拟机端口
192.168.1.11
Controller SSH 服务
192.168.1.21
Network SSH 服务
192.168.1.31
Compute SSH 服务
192.168.1.41
BlockStorage SSH 服务
192.168.1.51
ObjectStorage1 SSH 服务
192.168.1.52
ObjectStorage2 SSH 服务
192.168.1.11
OpenStack Dashboard 服务
192.168.1.11
OpenStack Compute Service of Nova Proxy
注:将虚拟机SSH端口映射到物理主机特定端口,以便外网通过物理主机访问虚拟机。
物理主机端口:为方便管理,针对SSH服务,将物理主机映射端口设计如下,前三位表示对应虚拟机地址末两字节,最后两位表示对应虚拟机端口。
OpenStack服务密码要求:
根据OpenStack官方文档
2.7 OpenStack各节点组件规划
节点组件信息:
OpenStack Service
Controller
mariadb-server、mongodb-server、rabbitmq-server、memcached、keystone、apache2、glance、nova-api、nova-conductor、nova-consoleauth、nova-novncproxy、nova-scheduler、neutron-server、neutron-plugin-ml2、horizon(dashboard)、cinder-api cinder-scheduler、manila-api、manila-scheduler、python-manilaclient、swift、swift-proxy、python-swiftclient、heat-api、heat-api-cfn、heat-engine、ceilometer-api、ceilometer-collector、ceilometer-agent-central、ceilometer-agent-notification、python-ceilometerclient、python-ceilometermiddleware、aodh-api、aodh-evaluator、aodh-notifier、aodh-listener、aodh-expirer、python-trove、python-troveclient、python-glanceclient、trove-common、trove-api、trove-taskmanager、trove-conductor、sahara-api、sahara-engine、sahara-templates、sahara-wsgi-api
neutron-linuxbridge-agent、neutron-l3-agent、neutron-dhcp-agent、neutron-metadata-agent
nova-compute、neutron-linuxbridge-agent、kvm、ceilometer-agent-compute
BlockStorage
lvm2、cinder-volume、manila-share、neutron-plugin-linuxbridge-agent
ObjectStorage
xfsprogs、rsync、swift、swift-account、swift-container、swift-object
各节点功能可参考下图
注:仅供参考理解,具体根据实际情况而定
2.8 用户、密码、地址、端口信息登记注:
① 请提前设计好所需密码并登记存档,并及时登记用到的服务地址&端口信息。
② 根据实际情况,将下面Password列替换为实际密码。
(若为测试环境,建议密码采用一定规则,方便记忆,但数据库等服务密码不要包含一些特殊字符,如:、/、+、@)
OpenStack节点主机用户&密码:
Controller
controller
controller
your_password
Controller
controller
your_password
your_password
your_password
your_password
your_password
BlockStorage
blockstorage
blockstorage
your_password
BlockStorage
blockstorage
your_password
ObjectStorage1
objectstorage1
objectstorage
your_password
ObjectStorage1
objectstorage1
your_password
ObjectStorage2
objectstorage2
objectstorage
your_password
ObjectStorage2
objectstorage2
your_password
OpenStack服务用户&密码:
Database_PASS(MariaDB/MySQL)
your_password
RABBIT_PASS
your_password
KEYSTONE_DBPASS
your_password
ADMIN_PASS
your_password
your_password
GLANCE_DBPASS
your_password
GLANCE_PASS
your_password
NOVA_DBPASS
your_password
your_password
NEUTRON_DBPASS
your_password
NEUTRON_PASS
your_password
METADATA_SECRET
your_password
CINDER_DBPASS
your_password
CINDER_PASS
your_password
MANILA_DBPASS
your_password
MANILA_PASS
your_password
SWIFT_PASS
your_password
HASH_PATH_PREFIX
your_password
HASH_PATH_SUFFIX
your_password
HEAT_DBPASS
your_password
your_password
HEAT_DOMAIN_PASS
heat_domain_admin
your_password
CEILOMETER_DBPASS
ceilometer
your_password
CEILOMETER_PASS
ceilometer
your_password
AODH_DBPASS
your_password
your_password
TROVE_DBPASS
your_password
TROVE_PASS
your_password
SAHARA_DBPASS
your_password
SAHARA_PASS
your_password
OpenStack各节点服务地址&端口
注:可执行sudo netstat -tnlp查看
Controller
192.168.1.11
Controller
MariaDB(MySQL)
Controller
Controller
Controller
Erlang端口映射守护进程(Erlang Port Mapper Daemon)
Controller
Controller
OpenStack Identity Service of Apache HTTP Server(Admin)
Controller
OpenStack Identity Service of Apache HTTP Server(User)
Controller
OpenStack Image Service of Glance Registry
Controller
OpenStack Image Service of Glance API
Controller
OpenStack Compute Service of Nova API
Controller
OpenStack Compute Service of Nova Proxy
Controller
OpenStack Networking Service of Neutron Server
Controller
OpenStack Dashboard Service of Apache HTTP Server
Controller
OpenStack Block Storage Service of Cinder API
Controller
OpenStack Shared File Systems Service of Manila API
Controller
OpenStack Object Storage Service of Swift Proxy
Controller
OpenStack Orchestration Service of Heat API (CloudFormation)
Controller
OpenStack Orchestration Service of Heat API
Controller
OpenStack Telemetry Alarming Service of Ceilometer API
Controller
OpenStack Telemetry Alarming Service of Aodh API
Controller
OpenStack Database Service of Trove API
Controller
OpenStack Data Processing Service of Sahara API
192.168.1.21
192.168.1.31
192.168.122.1
Libvirt Dnsmasq
BlockStorage
192.168.1.41
BlockStorage
OpenStack Block Storage Service of Tgtd(iSCSI target后台服务)
ObjectStorage
192.168.1.51/52
ObjectStorage
10.0.0.51/52
OpenStack Object Storage Service of Remote Sync
ObjectStorage
10.0.0.51/52
OpenStack Object Storage Service of Object
ObjectStorage
10.0.0.51/52
OpenStack Object Storage Service of Container
ObjectStorage
10.0.0.51/52
OpenStack Object Storage Service of Account
3. 环境准备3.1 物理主机基本配置
物理机基本配置
① 开启物理主机虚拟化功能
② 在物理主机上安装VMware Workstation 12.1 Pro
VMware虚拟机配置
① 配置虚拟机网络
虚拟机网络连接方式图解:
打开VMware Workstation虚拟网络编辑器,添加如下虚拟网卡:
其中VMnet0用于配置External Network,VMnet1用于配置Management Network子网, VMnet2用于配置Data Network子网。如下图:
② 创建虚拟机,按前面要求设置CPU、内存大小,并新建网络适配器同时指定网络连接方式,各节点对应名称如下表:
Controller
网络适配器
网络适配器2
网络适配器
网络适配器2
网络适配器3
网络适配器
网络适配器2
网络适配器3
BlockStorage
网络适配器
网络适配器2
ObjectStorage1
网络适配器
网络适配器2
ObjectStorage2
网络适配器
网络适配器2
注:虚拟机中添加网络适配器的顺序跟系统内默认网卡名eth0、eth1、eth2对应。
③ 开启虚拟机CPU虚拟化功能
对于每个虚拟机,虚拟机设置–&处理器设置–&虚拟化引擎,选择Intel VT-x/EPT或AMD-V/RVI,如下图:
④ 各节点虚拟机配置如下图:
Controller节点:
Network节点:
Compute节点:
BlockStorage节点:
ObjectStorage1节点:
ObjectStorage2节点:
3.2 节点系统安装在VMware中创建虚拟机,安装Ubuntu 16.04 LTS
创建虚拟机,设置CPU核心数、内存大小、存储大小。
添加两块(或三块)虚拟网卡
加载Ubuntu Server 16.04 LTS系统镜像
启动系统,选择时区、语言,设置主机名和用户名、密码。
Partition disks配置步骤:
① 单独设置分区/dev/sda1,大小200MB,用于挂载/boot
选择手动配置–&选择硬盘–&创建新的分区表–&选择空闲空间–&新建分区–&设置大小200MB–&选择主分区–&选择开始位置–&设置文件系统格式Ext4–&设置挂载点/boot–&设置分区。
② 设置LVM,方便扩展存储,挂载/和swap
配置逻辑卷LVM–&将修改写入磁盘并配置LVM–&新建卷组–&卷组名称:vg_system–&按空格键选中剩余空闲空间/dev/sda–&将修改写入磁盘并配置LVM–&新建逻辑卷–&选择卷组vg_system–&逻辑卷名:lv_root–&设置逻辑卷大小:91GB–&新建逻辑卷–&选择卷组vg_system–&逻辑卷名:lv_swap–&设置逻辑卷大小为剩余空间–&完成。
③ 分别对每一个逻辑卷进行配置
磁盘格式:lv_root选择ext4,lv_swap选择swap area。
挂载点:lv_root选择”/”。
最后选择完成分区并将更改写入磁盘,点击确定即可。
选择服务器默认安装软件包
空格键选择OpenSSH Server,方便使用SSH传输文件。
安装Grub。
按照上述步骤,创建其他节点服务器并安装Ubuntu 16.04 LTS系统
3.3 节点系统基本环境配置
启用root用户,设置root密码
sudo passwd root
为普通用户添加sudo权限
只需修改/etc/sudoers文件:
切换到root用户,输入命令su -,输入root用户密码。
输入命令vi /etc/sudoers编辑/etc/sudoers文件,在下面内容下添加一行your_username
ALL=(ALL:ALL) ALL,输入w!强制保存,退出vi。
ALL=(ALL:ALL) ALL
controller ALL=(ALL:ALL) ALL
注:如没有修改权限,则为/etc/sudoers文件添加写权限chmod u+w /etc/sudoers,修改后撤销权限chmod u-w /etc/sudoers。
修改网卡命名方式
输入ifconfig -a查看,发现网卡名称由udev管理命名为ens33和ens38,为了方便,将网卡名称修改为上述表格所示eth0、eth1、eth2。
① sudo vi /etc/default/grub把/etc/default/grub中
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
② 重新生成grub文件
sudo update-grub
sudo grub-mkconfig -o /boot/grub/grub.cfg
③ 重启系统,发现网卡名称已经改回eth0、eth1、eth2命名格式。
注:以上步骤在Controller节点、Compute节点、Network节点配置方法相同
修改各节点网卡和VMware虚拟网卡绑定关系
可选环节:若网卡和虚拟网卡绑定关系不同,可手动指定
按照前面表格所示,修改各节点网卡名称为对应的eth0、eth1、eth2
以Controller节点为例
将默认网卡名eth0和eth1修改为eth0和eth2
sudo vi /etc/udev/rules.d/70-persistent-net.rules
添加如下内容,其中00:0c:29:a9:66:8c和00:0c:29:a9:66:96为网卡MAC,可执行ifconfig -a查看,根据情况自行设定:
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:0c:29:a9:66:8c", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:0c:29:a9:66:96", NAME="eth2"
保存并重启电脑sudo reboot。
注:配置完成后,不能在虚拟机设置--&网络适配器--&高级中点击生成MAC,否则上面MAC地址需要修改配置。
注:Compute节点、Network节点配置方法类似
设置静态IP/DNS
以Controller节点为例
① 修改文件sudo vi /etc/network/interfaces,将默认生成的(下面内容可能没有,可能不一样,配置时视自己情况而定):
auto ens33
iface ens33 inet dhcp
iface eth0 inet static
address 192.168.1.11
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameserver 192.168.1.1
iface eth1 inet static
address 10.0.0.11
netmask 255.255.255.0
② 重启网卡,使配置生效:
sudo /etc/init.d/networking restart
sudo service networking restart
注:若找不到上述命令或重启无效可尝试下面命令:
sudo ifdown eth0
sudo ifdown eth1
sudo ifup eth0
sudo ifup eth1
注:若提示ifdown: interface eth0 not configured,可换下面命令尝试:
sudo ifconfig eth0 down
sudo ifconfig eth1 down
sudo ifconfig eth0 up
sudo ifconfig eth1 up
③ 运行ifconfig -a查看网络配置信息。
④ 通过ping 测试能否正常访问外网。若不能,可sudo reboot重启节点试试。
注:Compute节点、Network节点配置方法类似
在物理主机中为各节点SSH连接配置端口映射
以Controller节点为例
① 利用Windows自带的netsh配置端口映射,打开cmd命令行,输入:
注:下面xxx.xxx.xxx.xxx为物理主机实际IP
netsh interface portproxy add v4tov4 listenaddress=xxx.xxx.xxx.xxx listenport=11122 connectaddress=192.168.1.11 connectport=22
netsh interface portproxy add v4tov4 listenport=11122 connectaddress=192.168.1.11 connectport=22
netsh interface portproxy show v4tov4
侦听 ipv4:
连接到 ipv4:
--------------- ----------
--------------- ----------
xxx.xxx.xxx.xxx 11122
192.168.1.11
192.168.1.11
netsh interface portproxy delete v4tov4 listenaddress=xxx.xxx.xxx.xxx listenport=11122
netsh interface portproxy delete v4tov4 listenport=11122
② 在系统防火墙高级设置中配置入站规则
新建规则–&端口–&特定本地端口:11122–&允许连接–&选择域/专用/公用–&名称:VMware OpenStack Controller SSH、描述:用于VMware中OpenStack云计算平台Controller节点SSH连接
③ 配置完成后,可在外网主机,通过Xshell连接Controller节点,如下图:
注:若XShell连接失败,提示Xshell no matching outgoing encryption,可升级Xshell版本,在链接的属性(SSH–&安全性)的加密算法列表中选择aes256-ctr,mac加密列表中选择hmac-sha2-256,保存即可。
注:其他节点配置方法类似
配置hosts文件
以Controller节点为例
OpenStack要求所有的节点主机之间都是通过host互信的,编辑所有节点主机的/etc/hosts文件,注意将YOUR_HOST_NAME替换成本节点主机名称。配置完成后在每台主机上ping通3个主机名。此外,通过配置hosts文件,可在网络环境发生变化时提供可扩展性且便于迁移。
① 执行sudo vi /etc/hosts,添加如下内容
# config all nodes
controller
blockstorage
objectstorage1
objectstorage2
② 注释掉除127.0.0.1之外的环回地址项,如下:
#127.0.1.1
controller`
注:其他节点配置方法类似
至此,节点网络配置完成:
① Controller、Network、Compute等节点可互相ping通;
② Controller、Network、Compute等节点均可访问外网和进行地址解析。
配置ubuntu的更新源
使用阿里云的更新源,修改配置文件sudo vi /etc/apt/sources.list,添加:
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
① 更新系统
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
sudo apt autoremove
可能遇到的问题:
Ubuntu系统/boot容量不足引起的无法更新系统
解决方法:
查看/boot分区容量df -h /boot;查看当前使用内核版本号uname -a;删除旧内核,输入sudo apt-get remove linux-image-,接着按两下tab键,将显示所有的内核版本,把目前使用的版本之前的版本全部删除。最后执行
sudo update-grub
sudo grub-mkconfig -o /boot/grub/grub.cfg
② 查看系统发行版本和内核版本
network@network:~$ sudo lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:
Ubuntu 16.04 LTS
network@network:~$ uname -srpi
Linux 4.4.0-23-generic x86_64 x86_64
服务器时区设置
① 执行sudo tzselect–&选择亚洲(Asia)–&选择中国(China)–&选择北京(Beijing)–&
② 复制文件到/etc目录下:
sudo cp /usr/share/zoneinfo/Asia/Shanghai
/etc/localtime
注:若在系统安装时已设置正确时区,可跳过该步骤。
4. OpenStack节点服务配置4.1 OpenStack基本配置
统一时间源,安装NTP服务
时间服务器将为所有节点提供支持,OpenStack所有组件的时间都必须同步。本文选择安装chrony。
Controller节点
① 安装NTP服务:sudo apt-get install chrony
② 打开文件sudo vi /etc/chrony/chrony.conf增加以下内容,使本服务器时间与外部服务器时间同步。如果不能访问外网,NTP服务器将使用本机硬件时钟作为第二选择。
allow 10.0.0.0/24
server cn.pool.ntp.org iburst
server 127.127.1.0 iburst
③ 重启NTP使配置生效:sudo service chrony
注:确保网络时间服务器IP地址可以被DNS解析,如果不能,则在/etc/hosts文件中手工加入。
① 安装NTP服务:sudo apt-get install chrony
② 打开配置文件sudo vi /etc/chrony/chrony.conf,删除全部默认设置,只添加如下内容:
server controller iburst
③ 重启NTP服务:sudo service chrony restart
验证配置是否成功
chronyc sources -v
注:若默认配置文件误删,可执行sudo apt-get --purge remove chrony清除式卸载chrony,再重新安装。
配置OpenStack
安装OpenStack client:
sudo apt-get install software-properties-common
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install python-openstackclient
安装SQL数据库(MySQL/MariaDB)
Controller Node
① 安装MariaDB
sudo apt-get install mariadb-server python-mysqldb
② 为MySQL的root用户设置密码Database_PASS。(将Database_PASS替换为前面设计的实际密码),若无输入密码提示,可执行下面命令设置root用户密码:
sudo mysqladmin -u root password Database_PASS
注:修改mysql用户密码可用以下命令
mysqladmin -u用户名 -p旧密码 password 新密码
③ 创建文件sudo vi /etc/mysql/mariadb.conf.f,添加如下配置信息:
bind-address = 10.0.0.11
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
character-set-server = utf8
其中,bind-address用于绑定MySQL服务监听地址到Controller节点的Management Network网口IP,以便Compute&Network节点访问MySQL中的OpenStack配置信息。
④ 重启MySQL数据库:
sudo service mysql restart
sudo service mysql status
⑤ 查看端口监听情况。
controller@controller:~$ netstat -ntlp | grep 3306
0 10.0.0.11:3306
⑥ 开启MySQL安全保护措施
注:测试环境对安全要求较低可忽略该步骤
sudo mysql_secure_installation
根据提示输入当前root用户密码,根据实际需要选择后续操作。
⑦ 测试root用户能否在本机localhost正常登录,执行以下命令:
mysql -uroot -p
mysql -h localhost -uroot -p
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
解决方法:
sudo mysql -u root
update user set plugin='' where User='root';
注:下面步骤可省略。
⑧ 测试root用户是否具有远程登录的权限
通常,不赋予root用户远程登录的权限,即只允许root用户在本机localhost上登录。可执行如下命令测试:
mysql -h controller -uroot -p
mysql -h 10.0.0.11 -uroot -p
若报错,表示当前root用户没有远程登录权限:
ERROR 1130 (HY000): Host 'controller' is not allowed to connect to this MariaDB server
若需要赋予root远程登录权限,可执行以下命令:
注:将Database_PASS替换为前面设计的实际密码
mysql -uroot -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Database_PASS';
FLUSH PRIVILEGES;
若不报错,可正常登录,表示当前root用户具有远程登录权限。
安装NoSQL数据库(MongoDB)
注:只有计量服务(Telemetry Service)用到
Controller Node
① 安装MongoDB
sudo apt-get install mongodb-server mongodb-clients python-pymongo
② 打开文件sudo vi /etc/mongodb.conf,修改配置信息:
绑定MongoDB服务监听地址到Controller节点的Management Network网口IP。
bind_ip = 10.0.0.11
MongoDB数据库默认在目录/var/lib/mongodb/journal下创建若干1GB大小的日志文件,通过添加如下配置信息,可将每个日志文件大小限制为128 MB,总的日志文件空间大小为512MB。
# Set Journal File Size
smallfiles = true
③ 删除初始日志文件,重启MongoDB服务:
sudo service mongodb stop
sudo rm /var/lib/mongodb/journal/prealloc.*
sudo service mongodb start
安装消息队列服务(RabbitMQ)
Controller Node
① 安装RabbitMQ
sudo apt-get install rabbitmq-server
② 为OpenStack添加用户openstack
sudo rabbitmqctl add_user openstack RABBIT_PASS
注:将RABBIT_PASS替换为前面设计的实际密码
③ 为openstack用户配置读、写访问权限:
sudo rabbitmqctl set_permissions openstack ".*" ".*" ".*"
安装Memcached
身份服务(Identity Service)认证机制需要使用Memcached缓存令牌(Token)
Controller Node
① 安装Memcached
sudo apt-get install memcached python-memcache
② 修改配置文件sudo vi /etc/memcached.conf,设置Memcached服务监听地址(Controller节点的Management Network网口IP)。
-l 10.0.0.11
③ 重启Memcached服务
sudo service memcached restart
注:配置完上面几步后,再Controller节点上执行netstat -ntlp,查看上面几种服务端口监听是否正常。
4.2 身份服务配置(Identity Service - Keystone)Identity服务采用RESTful设计,使用REST API提供Web服务接口。
注:常见的Web Service方式有SOAP、WSDL、REST。部署节点:Controller Node
在MariaDB(MySQL)中创建Keystone数据库
① 以root用户登录MySQL
mysql -u root -p
② 创建数据库keystone
CREATE DATABASE
③ 授予数据库keystone适当的权限
注:将KEYSTONE_DBPASS替换为前面设计的实际密码。
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
注:上述授权命令中,%则代表了所有的host都能远程访问该mysql。但MySQL官方文档指出,%并不包括localhost。因此需要对localhost和%都进行授权。
④ 测试keystone用户能否正常登录
mysql -hlocalhost -ukeystone -p
mysql -hcontroller -ukeystone -p
⑤ 测试Controller节点上的MariaDB能否被Compute&Network节点访问。可用telnet测试,分别在Compute节点和Network节点上执行以下命令:
telnet controller 3306
生成临时管理身份认证令牌(ADMIN_TOKEN)
生成一个随机值,作为keystone初始配置时的ADMIN_TOKEN
openssl rand -hex 10
记住ADMIN_TOKEN:d57ea40f3a5eedcc70ef
安装Keystone和Apache HTTP Server with mod_wsgi
本文采用Apache HTTP server with mod_wsgi监听端口5000 和35357提供身份服务。默认keystone服务已经监听端口5000和35357,为避免冲突,需首先关闭keystone服务。
① 关闭keystone服务
新建文件sudo vi /etc/init/keystone.override,添加内容:manual。
② 安装keystone和Apache HTTP server
sudo apt-get install keystone apache2 libapache2-mod-wsgi
③ 修改配置文件sudo vi /etc/keystone/keystone.conf
在[DEFAULT]处,修改管理令牌admin_token为前面生成的ADMIN_TOKEN值。
注:修改ADMIN_TOKEN为实际Token值:d57ea40f3a5eedcc70ef
admin_token = ADMIN_TOKEN
在[database]处,配置数据库访问连接。
注:将KEYSTONE_DBPASS替换为前面设计的实际密码。
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
在[token]处,配置Fernet令牌提供者。
provider = fernet
④ 将配置信息写入到身份服务数据库keystone:
su -s /bin/sh -c "keystone-manage db_sync" keystone
⑤ 初始化Fernet keys:
sudo keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
配置Apache HTTP Server
① 修改配置文件sudo vi /etc/apache2/apache2.conf,将服务器名称ServerName指向Controller节点的hostname,添加如下信息:
ServerName controller
② 新建文件sudo vi /etc/apache2/sites-available/wsgi-keystone.conf,添加Apache HTTP Server配置信息,如下:
Listen 5000
Listen 35357
&VirtualHost *:5000&
WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-public
WSGIScriptAlias / /usr/bin/keystone-wsgi-public
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
ErrorLogFormat "%{cu}t %M"
ErrorLog /var/log/apache2/keystone.log
CustomLog /var/log/apache2/keystone_access.log combined
&Directory /usr/bin&
Require all granted
&/Directory&
&/VirtualHost&
&VirtualHost *:35357&
WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-admin
WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
ErrorLogFormat "%{cu}t %M"
ErrorLog /var/log/apache2/keystone.log
CustomLog /var/log/apache2/keystone_access.log combined
&Directory /usr/bin&
Require all granted
&/Directory&
&/VirtualHost&
③ 启用身份服务虚拟主机
sudo ln -s /etc/apache2/sites-available/wsgi-keystone.conf /etc/apache2/sites-enabled
④ 重启Apache HTTP Server
sudo service apache2 restart
测试是否Apache HTTP Server是否正常:
在各节点(Controller、Compute、Network)上,执行telnet命令,看能否建立连接
telnet controller 35357
telnet controller 5000
⑤ 删除keystone配置信息默认数据库,Ubuntu安装包安装keystone时默认配置采用SQLite数据库存放,但本文改用MySQL数据库存储keystone配置信息,因此可删除默认SQLite数据库。
sudo rm -f /var/lib/keystone/keystone.db
创建服务实体(Service Entity)和API路径(API Endpoints)
身份服务数据库keystone默认是空的,必须使用之前配置时生成的临时认证令牌ADMIN_TOKEN来初始化用于身份服务的服务实体和API路径。
① 向openstack命令传递认证令牌值和身份服务URL
有两种方式:通过openstack命令行参数--os-token和--os-url;或者通过设置环境变量OS_TOKEN和OS_URL。建议采用设置环境变量的方式,如下:
注:修改ADMIN_TOKEN为前面生成的实际Token值:d57ea40f3a5eedcc70ef
export OS_TOKEN=ADMIN_TOKEN
export OS_URL=http:
export OS_IDENTITY_API_VERSION=3
② 创建服务实体
身份服务管理着一个OpenStack的服务目录,通过服务目录确定其他服务是否可用。创建服务实体命令如下:
openstack service create --name keystone --description "OpenStack Identity" identity
③ 创建API路径
OpenStack每个服务可使用三种API路径变体:admin,internal和public。默认情况,admin类型的API路径可修改用户(user)和租户(tenant),而internal和public类型的API路径不允许该操作。创建API路径命令如下:
openstack endpoint create --region RegionOne identity public http://controller:5000/v3
openstack endpoint create --region RegionOne identity internal http://controller:5000/v3
openstack endpoint create --region RegionOne identity admin http://controller:35357/v3
创建域(Domain)、计划(Project)、用户(User)、角色(Role)
① 创建默认域
openstack domain create --description "Default Domain" default
② 创建管理计划、管理用户、管理角色
admin project、admin user、admin role
注:添加admin用户时需设置密码ADMIN_PASS为前面设计的实际密码。
openstack project create --domain default --description "Admin Project" admin
openstack user create --domain default --password-prompt admin
openstack role create admin
注:创建的任何角色都必须映射到OpenStack配置文件policy.json指定的角色。
将admin角色授予admin计划和admin用户:
③ 创建服务计划
本文创建的服务计划每个服务仅包含一个唯一用户,可根据实际情况调整。
openstack project create --domain default --description "Service Project" service
④ 创建示例计划、示例用户、普通用户角色
常规任务(非管理任务)应该使用非特权计划和用户。
注:添加demo用户时需设置密码DEMO_PASS为前面设计的实际密码。
openstack project create --domain default --description "Demo Project" demo
openstack user create --domain default --password-prompt demo
openstack role create user
将普通用户角色授予示例计划和示例用户:
注:可重复执行上面步骤,创建其他需要的计划和用户。
验证Keystone组件配置是否正确
① 处于安全考虑,禁用临时身份认证令牌机制。
修改文件sudo vi /etc/keystone/keystone-paste.ini,从[pipeline:public_api]、[pipeline:admin_api],[pipeline:api_v3]处移除admin_token_auth配置信息。
② 取消环境变量OS_TOKEN和OS_URL
unset OS_TOKEN OS_URL
③ 为admin用户申请一个身份认证令牌
输入admin用户密码ADMIN_PASS。(将ADMIN_PASS替换为前面设计的实际密码)
'NoneType' object has no attribute 'service_catalog'
可执行:export OS_AUTH_TYPE=password
可能还会报错:
__init__() got an unexpected keyword argument 'token'
在执行下面创建环境脚本后重新测试发现已解决,猜测是环境变量OS_TOKEN OS_URL未取消,可再次执行unset OS_TOKEN OS_URL试试。
③ 为demo用户申请一个身份认证令牌
输入demo用户密码DEMO_PASS。(将DEMO_PASS替换为前面设计的实际密码)
注:上述设置OpenStack命令行参数的方式比较繁琐,可采用预先创建用户脚本的方式,在申请身份认证令牌时,只需执行如下命令:
source ~/.openstack/.admin-openrc
openstack token issue
source ~/.openstack/.demo-openrc
openstack token issue
注:创建OpenStack客户端环境脚本方法如下
mkdir ~/.openstack
为管理用户admin创建OpenStack客户端环境脚本,vi ~/.openstack/.admin-openrc,添加
注:将下面ADMIN_PASS替换为前面设计的实际密码
# Add environment variables for admin
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http:
export OS_AUTH_TYPE=password
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
为示例用户demo创建OpenStack客户端环境脚本,vi ~/.openstack/.demo-openrc,添加
注:将下面DEMO_PASS替换为前面设计的实际密码
# Add environment variables for demo
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http:
export OS_AUTH_TYPE=password
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
最后,测试Identity服务是否正常,访问http://192.168.1.11:35357/v3或http://192.168.1.11:5000/v3。可在各节点上安装curl,访问服务API路径,下载查看信息,如下:
sudo apt-get install curl
curl http:
curl http:
curl http:
curl http:
得到如下信息:
{"version": {"status": "stable", "updated": "T00:00:00Z", "media-types": [{"base": "application/json", "type": "application/vnd.openstack.identity-v3+json"}], "id": "v3.6", "links": [{"href": "http://192.168.10.3:35357/v3/", "rel": "self"}]}}
4.3 镜像服务配置(Image Service - Glance)用户可使用OpenStack镜像服务提供的REST API查询、注册、恢复虚拟机镜像。部署节点:Controller Node
在MariaDB中创建glance数据库
① 以root用户登录MySQL
mysql -u root -p
② 创建glance数据库
CREATE DATABASE
③ 授予glance数据库适当权限
注:将GLANCE_DBPASS替换为前面设计的实际密码
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';
创建Glance服务实体和API路径
① 设置OpenStack中admin用户环境变量
source ~/.openstack/.admin-openrc
② 在OpenStack中创建一个glance用户
openstack user create --domain default --password-prompt glance
输入用户glance的密码GLANCE_PASS(将GLANCE_PASS替换为前面设计的实际密码)。
③ 将admin角色授予glance用户和service计划
④ 创建glance服务实体
⑤ 创建镜像服务API路径
openstack endpoint create --region RegionOne image public http:
openstack endpoint create --region RegionOne image internal http:
openstack endpoint create --region RegionOne image admin http:
安装和配置Glance服务组件
① 安装Glance
sudo apt-get install glance
② 修改配置文件sudo vi /etc/glance/glance-api.conf。
注:将GLANCE_DBPASS和GLANCE_PASS替换为前面设计的实际密码。
在[database]处,配置数据库访问连接。
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
在[keystone_authtoken]和[paste_deploy]处,配置身份服务访问。
注:注释掉[keystone_authtoken]处所有默认内容
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = GLANCE_PASS
[paste_deploy]
flavor = keystone
在`[glance_store]处配置本地文件系统存储和镜像文件存储位置。
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
③ 修改配置文件sudo vi /etc/glance/glance-registry.conf。
注:将GLANCE_DBPASS和GLANCE_PASS替换为前面设计的实际密码。
在[database]处,配置数据库访问连接。
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
在[keystone_authtoken]和[paste_deploy]处,配置身份服务访问。
注:注释掉[keystone_authtoken]处所有默认内容
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = GLANCE_PASS
[paste_deploy]
flavor = keystone
④ 将配置信息写入glance数据库
su -s /bin/sh -c "glance-manage db_sync" glance
⑥ 重启Image Service
sudo service glance-registry restart
sudo service glance-api restart
验证Glance服务组件配置是否正确
① 设置OpenStack admin用户环境变量
source ~/.openstack/.admin-openrc
② 下载CirrOS系统镜像
注:此处采用CirrOS镜像测试,也可自行选择其他系统镜像
wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
③ 上传镜像,设置镜像参数磁盘格式QEMU Copy On Write 2 (QCOW2)、容器格式bare及可见性public。
openstack image create "cirros" --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --public
④ 确认上传是否成功,验证镜像属性。
controller@controller:~$ openstack image list
4.4 计算服务配置(Compute Service - Nova)部署节点:Controller Node
在Controller节点上需要安装nova-api、nova-conductor、nova-consoleauth、nova-novncproxy、nova-scheduler
在MariaDB(MySQL)中创建数据库nova_api和nova
① 以root用户登录MySQL
mysql -u root -p
② 创建nova_api和nova数据库
CREATE DATABASE nova_
CREATE DATABASE
③ 授予nova_api和nova数据库适当权限
注:将NOVA_DBPASS替换为前面设计的实际密码
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';
创建计算服务证书和API路径
① 设置OpenStack admin用户环境变量
source ~/.openstack/.admin-openrc
② 在OpenStack中创建nova用户
openstack user create --domain default --password-prompt nova
输入用户nova的密码NOVA_PASS(将NOVA_PASS替换为前面设计的实际密码)。
③ 将admin角色授予nova用户
④ 创建nova服务实体
⑤ 创建计算服务API路径
openstack endpoint create --region RegionOne compute public http:
openstack endpoint create --region RegionOne compute internal http:
openstack endpoint create --region RegionOne compute admin http:
安装计算服务组件
① 安装Nova组件
sudo apt-get install nova-api nova-conductor nova-consoleauth nova-novncproxy nova-scheduler
② 修改配置文件sudo vi /etc/nova/nova.conf。
在[DEFAULT]处只启用compute和metadataAPIs,将
enabled_apis=ec2,osapi_compute,metadata
enabled_apis = osapi_compute,metadata
在[api_database]和[database]处配置数据库访问连接(若没有[api_database]和[database]标记,则手动添加)
注:将NOVA_DBPASS替换为前面设计的实际密码
[api_database]
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
[database]
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
在[DEFAULT]和[oslo_messaging_rabbit]处配置RabbitMQ消息队里访问
注:将RABBIT_PASS替换为前面设计的实际密码
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
在[DEFAULT]和[keystone_authtoken]处配置身份服务访问
注:将NOVA_PASS替换为前面设计的实际密码
注:注释或删除[keystone_authtoken]处其他内容
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = NOVA_PASS
在[DEFAULT]处配置my_ip为Controller节点Management Network网口地址
my_ip = 10.0.0.11
在[DEFAULT]处启用网络服务支持
注:默认情况下,计算服务使用主机内部防火墙驱动,因此必须禁用OpenStack网络服务中的防火墙驱动。
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
在[vnc]处,使用Controller节点Management Network网口地址配置VNC代理(VNC proxy)。
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
在[glance]处配置镜像服务API位置
api_servers = http://controller:9292
在[oslo_concurrency]处配置lock_path
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
最后,由于安装包BUG,需要在[DEFAULT]处移除logdir。在[DEFAULT]处删除,以下内容
logdir=/var/log/nova
③ 将配置信息写入计算服务数据库nova
su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage db sync" nova
④ 重启计算服务
sudo service nova-api restart
sudo service nova-consoleauth restart
sudo service nova-scheduler restart
sudo service nova-conductor restart
sudo service nova-novncproxy restart
部署节点:Compute Node
在Compute节点上需要安装nova-compute。
注:以下步骤在Compute节点上执行
安装配置计算服务组件
安装nova-compute组件
sudo apt-get install nova-compute
修改配置文件sudo vi /etc/nova/nova.conf
① 在[DEFAULT]和[oslo_messaging_rabbit]处配置RabbitMQ消息队列访问
注:将RABBIT_PASS替换为前面设计的实际密码
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
② 在[DEFAULT]和[keystone_authtoken]处配置身份服务访问
注:将NOVA_PASS替换为前面设计的实际密码
注:注释或删除[keystone_authtoken]处其他内容
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = NOVA_PASS
在[DEFAULT]处配置my_ip为Compute节点Management Network网口地址
my_ip = 10.0.0.31
在[DEFAULT]处启用网络服务支持
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
在[vnc]处配置远程控制访问
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html
注: VNC服务器端监听所有地址,VNC代理客户端只监听Compute节点Management Network网口地址,base URL设置Compute节点远程控制台浏览器访问地址(若浏览无法解析controller,则需替换为相应IP地址)。
在[glance]处配置镜像服务API
api_servers = http://controller:9292
在[oslo_concurrency]处配置lock_path
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
最后,由于安装包BUG,需要在[DEFAULT]处移除logdir。在[DEFAULT]处删除,以下内容
logdir=/var/log/nova
完成安装,重启计算服务
① 检测是否支持虚拟机硬件加速
egrep -c '(vmx|svm)' /proc/cpuinfo
若返回结果大于等于1,则支持,无需做额外配置;
若返回结果0,则不支持硬件加速,需要做以下额外配置:修改配置文件sudo vi /etc/nova/nova-compute.conf中的libvirt设置项,使用QEMU代替KVM。
virt_type = qemu
② 重启计算服务
sudo service nova-compute restart
验证计算服务是否安装正确
注:以下步骤需在Controller节点执行
① 设置OpenStack admin用户环境变量
source ~/.openstack/.admin-openrc
② 打印服务组件列表,验证每个成功启动和注册的进程。
openstack compute service list
结果如下:
+--+----------------+----------+--------+-------+-----+--------------------------+
|Status |State|
Updated At
+--+----------------+----------+--------+-------+-----+--------------------------+
| 4|nova-consoleauth|controller|internal|enabled| up
|2016-05-29T06:28:52.000000|
| 5|nova-scheduler
|controller|internal|enabled| up
|2016-05-29T06:28:51.000000|
| 6|nova-conductor
|controller|internal|enabled| up
|2016-05-29T06:28:53.000000|
| 7|nova-compute
|enabled| up
|2016-05-29T06:28:45.000000|
+--+----------------+----------+--------+-------+-----+--------------------------+
4.5 网络服务配置(Networking Service - Neutron)部署节点:Controller Node
在MariaDB(MySQL)中创建neutron数据库
① 以root用户登录MySQL
mysql -u root -p
② 创建数据库neutron
CREATE DATABASE
③ 授予数据库neutron适当的权限
注:将NEUTRON_DBPASS替换为前面设计的实际密码。
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';
创建网络服务证书和API路径
① 设置OpenStack admin用户环境变量
source ~/.openstack/.admin-openrc
② 在OpenStack中创建neutron用户
openstack user create --domain default --password-prompt neutron
输入用户neutron的密码NEUTRON_PASS(将NEUTRON_PASS替换为前面设计的实际密码)。
③ 将admin角色授予neutron用户
④ 创建neutron服务实体
⑤ 创建网络服务API路径
openstack endpoint create --region RegionOne network public http:
openstack endpoint create --region RegionOne network internal http:
openstack endpoint create --region RegionOne network admin http:
安装配置neutron-server服务组件
① 安装neutron-server组件
sudo apt-get install neutron-server neutron-plugin-ml2
② 修改配置文件sudo vi /etc/neutron/neutron.conf
在[database]处配置网络服务数据库neutron访问连接
注:将NEUTRON_DBPASS替换为前面设计的实际密码
注:首先注释掉[database]处已存在的默认的connection
[database]
# connection = sqlite:
connection = mysql+pymysql:
在[DEFAULT]处启用Modular Layer 2 (ML2) plug-in、router service和overlapping IP addresses
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = True
在[DEFAULT]和[oslo_messaging_rabbit]处配置RabbitMQ消息队列访问
注:将RABBIT_PASS替换为前面设计的实际密码
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
在[DEFAULT]和[keystone_authtoken]处配置身份服务访问
注:将NEUTRON_PASS替换为前面设计的实际密码
注:注释或删除[keystone_authtoken]处其他配置信息
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = NEUTRON_PASS
在[DEFAULT]和[nova]处配置网络来通知计算节点网络拓扑变化。
注:将NOVA_PASS替换为前面设计的实际密码
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = NOVA_PASS
配置Modular Layer 2 (ML2)插件
ML2 plug-in使用Linux网桥机制为OpenStack实例建立layer-2虚拟网络设施(桥接和交换)。
修改配置文件sudo vi /etc/neutron/plugins/ml2/ml2_conf.ini
① 在[ml2]处启用flat、VLAN、VXLAN网络
注:在配置ML2插件后,移除type_drivers设置项的部分值,将导致数据库不一致。
type_drivers = flat,vlan,vxlan
② 在[ml2]处启用VXLAN self-service网络
tenant_network_types = vxlan
③ 在[ml2]处启用Linux bridge和layer-2 population机制
mechanism_drivers = linuxbridge,l2population
注:Linux Bridge Agent只支持VXLAN overlay networks
④ 在[ml2]处启用端口安全扩展驱动
extension_drivers = port_security
⑤ 在[ml2_type_flat]处配置运营商虚拟网络为flat network
[ml2_type_flat]
flat_networks = provider
⑥ 在[ml2_type_vxlan]处配置自服务网络中的VXLAN网络标识符范围
[ml2_type_vxlan]
vni_ranges = 1:1000
⑦ 在[securitygroup]处启用ipset来增强安全组规则的效率
[securitygroup]
enable_ipset = True
将配置信息写入neutron数据库
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
为计算服务配置网络访问服务
修改配置文件sudo vi /etc/nova/nova.conf
在[neutron]处配置访问参数,启用元数据服务代理,配置元数据代理共享密钥
注:将NEUTRON_PASS和METADATA_SECRET替换为前面设计的实际密码
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS
service_metadata_proxy = True
metadata_proxy_shared_secret = METADATA_SECRET
重启计算服务API和网络服务
sudo service nova-api restart
sudo service neutron-server restart
部署节点:Network Node在Network节点上部署组件:neutron-linuxbridge-agent、
neutron-l3-agent、neutron-dhcp-agent、neutron-metadata-agent网络服务部署架构有两种方式Provider Networks和Self-Service Networks,在本文开头作了简要介绍。本文采用Self-Service Networks方式部署。
参考文档:
安装网络服务组件
sudo apt-get install neutron-linuxbridge-agent neutron-l3-agent neutron-dhcp-agent neutron-metadata-agent
配置公共服务组件
公共组件配置包括认证机制、消息队列。修改配置文件sudo vi /etc/neutron/neutron.conf
① 在[database]处注释掉其他所有设置项,因为Network节点不需要直接访问数据库。
② 在[DEFAULT]和[oslo_messaging_rabbit]处配置RabbitMQ消息队列访问
注:将RABBIT_PASS替换为前面设计的实际密码
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
③ 在[DEFAULT]和[keystone_authtoken]处配置身份服务访问
注:将NEUTRON_PASS替换为前面设计的实际密码
注:注释或删除[keystone_authtoken]处其他配置信息
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = NEUTRON_PASS
配置Linux网桥代理
Linux bridge agent为实例建立了二层虚拟网络设施,而且可以管理安全组。
修改配置文件sudo vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
① 在[linux_bridge]处将虚拟网络映射到物理网络
注:将PROVIDER_INTERFACE_NAME替换为Network节点External Network网络接口名称eth0
[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
② 在[vxlan]处启用VXLAN overlay networks,配置管理Overlay网络的物理网络IP地址,启用layer-2 population
注:将OVERLAY_INTERFACE_IP_ADDRESS替换为Network节点Management Network网络接口IP地址10.0.0.21
enable_vxlan = True
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
l2_population = True
③ 在[securitygroup]处启用安全组,并配置Linux bridge iptables firewall driver
[securitygroup]
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
配置三层网络代理
L3(Layer-3) Agent位自服务网络提供了路由和NAT服务。
修改配置文件sudo vi /etc/neutron/l3_agent.ini,在[DEFAULT]处配置Linux网桥接口驱动(Linux Bridge Interface Driver)和外网网桥。
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
external_network_bridge =
注:external_network_bridge值故意空缺,这样可使多个外部网络共用一个代理。
配置DHCP代理
修改配置文件sudo vi /etc/neutron/dhcp_agent.ini,在[DEFAULT]处配置Linux bridge interface driver和Dnsmasq DHCP driver,启用独立的metadata使运营商网络实例可以访问虚拟网络元信息。
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = True
配置元数据代理
元数据代理提供一些诸如证书之类的配置信息。
修改配置文件sudo vi /etc/neutron/metadata_agent.ini,在[DEFAULT]处配置元数据主机和共享密钥。
注:将METADATA_SECRET替换为前面设计的实际密码
nova_metadata_ip = controller
metadata_proxy_shared_secret = METADATA_SECRET
重启网络服务代理
sudo service neutron-linuxbridge-agent restart
sudo service neutron-dhcp-agent restart
sudo service neutron-metadata-agent restart
sudo service neutron-l3-agent restart
部署节点:Compute Node
安装网络服务组件
sudo apt-get install neutron-linuxbridge-agent
配置公共组件
公共组件配置包括认证机制、消息队列、插件。
修改配置文件sudo vi /etc/neutron/neutron.conf
① 在[database]处注释掉其他所有设置项,因为Compute节点不需要直接访问数据库。
② 在[DEFAULT]和[oslo_messaging_rabbit]处配置RabbitMQ消息队列访问
注:将RABBIT_PASS替换为前面设计的实际密码
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
③ 在[DEFAULT]和[keystone_authtoken]处配置身份服务访问
注:将NEUTRON_PASS替换为前面设计的实际密码
注:注释或删除[keystone_authtoken]处其他项
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = NEUTRON_PASS
配置网络设置
配置Linux网桥代理,修改配置文件sudo vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
① 在[linux_bridge]处将虚拟网络映射到物理网络
注:将PROVIDER_INTERFACE_NAME替换为Compute节点External Network网络接口名称eth0。
[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
② 在[vxlan]处启用VXLAN覆盖网络,配置管理覆盖网络的物理网络接口IP地址,启用layer-2 population
注:将OVERLAY_INTERFACE_IP_ADDRESS替换为Compute节点Management Network网络接口IP地址10.0.0.31
enable_vxlan = True
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
l2_population = True
③ 在[securitygroup]处启用安全组,配置Linux bridge iptables firewall driver
[securitygroup]
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
配置计算服务访问网络
修改配置文件sudo vi /etc/nova/nova.conf
① 在[neutron]处配置访问参数
注:将NEUTRON_PASS替换为前面设计的实际密码
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS
② 重启计算服务
sudo service nova-compute restart
③ 重启Linux网桥代理
sudo service neutron-linuxbridge-agent restart
验证网络服务是否安装配置正确
① 在Controller节点上设置OpenStack管理用户admin的环境变量
source ~/.openstack/.admin-openrc
② 列出已加载的扩展包,验证成功启动的neutron-server进程
neutron ext-list
neutron agent-list
4.6 仪表盘服务配置(Dashboard Service - Horizon)仪表盘是一个Web接口,可使云管理员和用户管理各种各样的OpenStack资源和服务。本文采用Apache Web Server部署Dashboard服务。部署节点:Controller Node
安装Horizon
sudo apt-get install openstack-dashboard
若遇到由于openstack-dashboard-ubuntu-theme无法安装的问题,可执行如下命令:
dpkg --remove --force-remove-reinstreq openstack-dashboard-ubuntu-theme
修改配置文件sudo vi /etc/openstack-dashboard/local_settings.py
① 在controller节点上配置horizon使用OpenStack Service。
OPENSTACK_HOST = "controller"
② 配置允许所有主机都可以访问horizon
ALLOWED_HOSTS = ['*', ]
③ 配置memcached session storage service
注:注释掉其他session storage配置信息
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'controller:1;,
④ 启用Identity API version 3
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
⑤ 启用域名支持
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
⑥ 配置API版本
OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"volume": 2,
⑦ 配置通过Dashboard创建的用户默认域名为default
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "default"
⑧ 配置通过Dashboard创建的用户的角色默认为user
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
⑨ 配置时区
注:该步骤可选配置
TIME_ZONE = "Asia/Shanghai"
重新加载Apache服务
sudo service apache2 reload
验证Dashboard服务是否部署成功
在物理主机中为Dashboard外网访问配置端口映射
① 利用Windows自带的netsh配置端口映射,打开cmd命令行,输入:
netsh interface portproxy add v4tov4 listenport=11180 connectaddress=192.168.1.11 connectport=80
② 在系统防火墙高级设置中配置入站规则
新建规则–&端口–&特定本地端口:11180–&允许连接–&选择域/专用/公用–&名称:VMware OpenStack Dashboard HTTP Service、描述:用于VMware中OpenStack云计算平台Dashboard服务的Web访问
③ 利用Windows自带的netsh配置端口映射,打开cmd命令行,输入:
netsh interface portproxy add v4tov4 listenport=6080 connectaddress=192.168.1.11 connectport=6080
④ 在系统防火墙高级设置中配置入站规则
新建规则–&端口–&特定本地端口:6080–&允许连接–&选择域/专用/公用–&名称:VMware OpenStack Compute Service of Nova Proxy、描述:用于VMware中OpenStack云计算平台Nova Proxy服务的Web访问
4.7 块存储服务配置(Block Storage Service - Cinder)部署节点:Controller Node
在MariaDB(MySQL)中创建数据库cinder
① 以root用户登录MySQL
mysql -u root -p
② 创建cinder数据库
CREATE DATABASE
③ 授予cinder数据库适当权限
注:将CINDER_DBPASS替换为前面设计的实际密码
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'CINDER_DBPASS';
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'CINDER_DBPASS';
创建Cinder服务实体和API路径
① 设置OpenStack中admin用户环境变量
source ~/.openstack/.admin-openrc
② 在OpenStack中创建一个cinder用户
openstack user create --domain default --password-prompt cinder
输入用户cinder的密码CINDER_PASS(将CINDER_PASS替换为前面设计的实际密码)。
③ 将admin角色授予cinder用户
④ 创建cinder和cinderv2服务实体
⑤ 创建块存储服务API路径
openstack endpoint create --region RegionOne volume public http:
openstack endpoint create --region RegionOne volume internal http:
openstack endpoint create --region RegionOne volume admin http:
openstack endpoint create --region RegionOne volumev2 public http:
openstack endpoint create --region RegionOne volumev2 internal http:
openstack endpoint create --region RegionOne volumev2 admin http:
安装和配置Cinder服务组件
① 安装Cinder
sudo apt-get install cinder-api cinder-scheduler
② 修改配置文件sudo vi /etc/cinder/cinder.conf。
注:将CINDER_DBPASS、CINDER_PASS和RABBIT_PASS替换为前面设计的实际密码。
在[database]处配置数据访问连接:
[database]
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
在[DEFAULT]和[oslo_messaging_rabbit]处配置RabbitMQ消息队列访问:
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
在[DEFAULT]和[keystone_authtoken]处配置认证服务访问:
注:注释或删除[keystone_authtoken]处其他默认设置。
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = CINDER_PASS
在[DEFAULT]处配置my_ip为Controller节点Management Networ网络接口地址:
my_ip = 10.0.0.11
在[oslo_concurrency]处配置lock_path:
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
③ 将配置信息写入块存储服务数据库cinder
su -s /bin/sh -c "cinder-manage db sync" cinder
配置计算服务调用块存储服务
修改配置文件sudo vi /etc/nova/nova.conf,添加如下信息:
os_region_name = RegionOne
重启计算服务API和块存储服务
sudo service nova-api restart
sudo service cinder-scheduler restart
sudo service cinder-api restart
部署节点:BlockStorage Node
安装配置LVM
① 安装LVM:
sudo apt-get install lvm2
② 创建LVM物理卷/dev/sdb:
sudo pvcreate /dev/sdb
③ 创建LVM卷组cinder-volumes
sudo vgcreate cinder-volumes /dev/sdb
④ 配置只有OpenStack实例才可以访问块存储卷
修改配置文件sudo vi /etc/lvm/lvm.conf,在devices处添加一个过滤器,使OpenStack实例只允许访问/dev/sdb。
filter = [ "a/sdb/", "r/.*/"]
注:如果块存储节点操作系统磁盘也使用了逻辑卷管理LVM,则在过滤器中必须将操作系统磁盘LVM所在设备/dev/sda也添加到允许访问列表。例如本文各节点系统磁盘均采用LVM,则应添加下面过滤器:
filter = [ "a/sda/", "a/sdb/", "r/.*/"]
注:如果Compute节点操作系统磁盘(如/dev/sda)也使用LVM,则必须在Compute节点上修改配置文件sudo vi /etc/lvm/lvm.conf,将操作系统磁盘添加到过滤器允许访问列表。如下:
filter = [ "a/sda/", "r/.*/"]
安装配置块存储服务组件
① 安装cinder
sudo apt-get install cinder-volume
② 修改配置文件sudo vi /etc/cinder/cinder.conf
注:将CINDER_DBPASS、CINDER_PASS和RABBIT_PASS替换为前面设计的实际密码。
在[database]处配置数据库访问连接:
[database]
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
在[DEFAULT]和[oslo_messaging_rabbit]处配置RabbitMQ消息队列访问服务:
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
在[DEFAULT]和[keystone_authtoken]处配置身份认证服务访问:
注:注释或删除[keystone_authtoken]处其他默认配置信息
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = CINDER_PASS
在[DEFAULT]处配置my_ip为BlockStorage节点Management Networ网络接口地址:
my_ip = 10.0.0.41
在[lvm]处添加LVM后端驱动、卷组、iSCSI协议和服务,如下:
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = tgtadm
在[DEFAULT]处配置LVM后端名称(可任意设置,为了简单,本文设置为lvm):
enabled_backends = lvm
在[DEFAULT]处配置镜像服务API路径:
glance_api_servers = http:
在[oslo_concurrency]处配置lock_path:
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
③ 重启块存储服务
sudo service tgt restart
sudo service cinder-volume restart
验证块存储服务是否安装配置正确
① 在Controller节点上设置OpenStack管理用户admin的环境变量
source ~/.openstack/.admin-openrc
② 列出块存储服务组件,验证成功启动的cinder进程
cinder service-list
4.8 共享文件系统服务配置(Shared File Systems Service - Manila)共享文件系统服务可以提供对共享文件系统或分布式文件系统的访问。4.8.1 Shared File Systems Service(Manila)部署节点:Controller Node
在MariaDB(MySQL)中创建数据库manila
① 以root用户登录MySQL
mysql -u root -p
② 创建manila数据库
CREATE DATABASE
③ 授予manila数据库适当权限
注:将MANILA_DBPASS替换为前面设计的实际密码
GRANT ALL PRIVILEGES ON manila.* TO 'manila'@'localhost' IDENTIFIED BY 'MANILA_DBPASS';
GRANT ALL PRIVILEGES ON manila.* TO 'manila'@'%' IDENTIFIED BY 'MANILA_DBPASS';
创建Manila服务实体和API路径
① 设置OpenStack中admin用户环境变量
source ~/.openstack/.admin-openrc
② 在OpenStack中创建一个manila用户
openstack user create --domain default --password-prompt manila
输入用户manila的密码MANILA_PASS(将MANILA_PASS替换为前面设计的实际密码)。
③ 将admin角色授予manila用户
④ 创建manila和manilav2服务实体
⑤ 创建共享文件系统服务API路径
openstack endpoint create --region RegionOne share public http:
openstack endpoint create --region RegionOne share internal http:
openstack endpoint create --region RegionOne share admin http:
openstack endpoint create --region RegionOne sharev2 public http:
openstack endpoint create --region RegionOne sharev2 internal http:
openstack endpoint create --region RegionOne sharev2 admin http:
安装和配置Manila服务组件
① 安装Manila
sudo apt-get install manila-api manila-scheduler python-manilaclient
② 修改配置文件sudo vi /etc/manila/manila.conf。
注:将MANILA_DBPASS、MANILA_PASS和RABBIT_PASS替换为前面设计的实际密码。
在[database]处配置数据访问连接:
[database]
connection = mysql+pymysql://manila:MANILA_DBPASS@controller/manila
在[DEFAULT]和[oslo_messaging_rabbit]处配置RabbitMQ消息队列访问:
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
在[DEFAULT]处添加如下配置信息:
default_share_type = default_share_type
rootwrap_config = /etc/manila/rootwrap.conf
在[DEFAULT]和[keystone_authtoken]处配置认证服务访问:
注:注释或删除[keystone_authtoken]处其他默认设置。
auth_strategy = keystone
[keystone_authtoken]
memcached_servers = controller:11211
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = manila
password = MANILA_PASS
在[DEFAULT]处配置my_ip为Controller节点Management Networ网络接口地址:
my_ip = 10.0.0.11
在[oslo_concurrency]处配置lock_path:
[oslo_concurrency]
lock_path = /var/lib/manila/tmp
③ 将配置信息写入块存储服务数据库manila
su -s /bin/sh -c "manila-manage db sync" manila
重启共享文件系统服务
sudo service manila-scheduler restart
sudo service manila-api restart
部署节点:BlockStorage Node
安装共享文件系统服务组件
① 安装manila
sudo apt-get install manila-share python-pymysql
② 修改配置文件sudo vi /etc/manila/manila.conf
注:将MANILA_DBPASS、MANILA_PASS和RABBIT_PASS替换为前面设计的实际密码。
在[database]处配置数据库访问连接:
[database]
connection = mysql+pymysql://manila:MANILA_DBPASS@controller/manila
在[DEFAULT]和[oslo_messaging_rabbit]处配置RabbitMQ消息队列访问服务:
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
在[DEFAULT]处添加如下配置信息:
default_share_type = default_share_type
rootwrap_config = /etc/manila/rootwrap.conf
在[DEFAULT]和[keystone_authtoken]处配置身份认证服务访问:
注:注释或删除[keystone_authtoken]处其他默认配置信息
auth_strategy = keystone
[keystone_authtoken]
memcached_servers = controller:11211
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = manila
password = MANILA_PASS
在[DEFAULT]处配置my_ip为BlockStorage节点Management Networ网络接口地址:
my_ip = 10.0.0.41
在[oslo_concurrency]处配置lock_path:
[oslo_concurrency]
lock_path = /var/lib/manila/tmp
安装配置共享服务器管理
针对两种不同的网络模式(provider和self-service),共享文件系统服务支持两种模式:
不需要驱动器支持的共享服务器管理:不需要安装任何驱动,默认使用LVM和NFS服务方式,支持NFS和CIFS协议,通过在共享服务器创建共享卷,利用NFS为虚拟机提供共享服务。
需要驱动器支持的共享服务器管理:需要计算(Nova),网络(Neutron)和块存储管理(Cinder)服务管理共享服务器。用于创建共享服务器的信息被配置为共享网络。这种模式使用通用驱动程序,并需要启用驱动控制共享服务器(DHSS), 还需要连接到公共网络路由器。本指南采用第二种模式。
② 安装网络服务组件
sudo apt-get install neutron-plugin-linuxbridge-agent
③ 配置网络服务公共组件
公共组件配置包括认证机制、消息队列、插件。修改配置文件sudo vi /etc/neutron/neutron.conf
在[database]处注释掉其他所有设置项,因为BlockStorage节点不需要直接访问数据库。
在[DEFAULT]和[oslo_messaging_rabbit]处配置RabbitMQ消息队列访问
注:将RABBIT_PASS替换为前面设计的实际密码
rpc_backend = rabbit
[oslo_messaging_rabbit]
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
在[DEFAULT]和[keystone_authtoken]处配置身份服务访问
注:将NEUTRON_PASS替换为前面设计的实际密码
注:注释或删除[keystone_authtoken]处其他项
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = NEUTRON_PASS
④ 配置网络设置
配置Linux网桥代理,修改配置文件sudo vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
在[linux_bridge]处将虚拟网络映射到物理网络
注:将PROVIDER_INTERFACE_NAME替换为BlockStorage节点External Network网络接口名称eth0。
[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
在[vxlan]处启用VXLAN覆盖网络,配置管理覆盖网络的物理网络接口IP地址,启用layer-2 population
注:将OVERLAY_INTERFACE_IP_ADDRESS替换为BlockStorage节点Management Network网络接口IP地址10.0.0.41
enable_vxlan = True
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
l2_population = True
在[securitygroup]处启用安全组,配置Linux bridge iptables firewall driver
[securitygroup]
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
⑤ 修改配置文件sudo vi /etc/manila/manila.conf
在[DEFAULT]处启用generic和NFS/CIFS协议:
注:下面共享后端名称可任意设置,本指南设置为驱动名称。
enabled_share_backends = generic
enabled_share_protocols = NFS,CIFS
在[neutron]、[nova]和[cinder]处启用这些服务的认证信息:
注:将NEUTRON_PASS、NOVA_PASS和CINDER_PASS替换为前面设计的实际密码
url = htt}

我要回帖

更多关于 并发进程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信