学习OpenStack之(5):在Mac上部署Juno版本OpenStack 四节点环境
0. 前沿
经过一段时间的折腾,终于在自己的Mac上装好了Juno版本的四节点环境。这过程中,花了大量的时间,碰到了许多问题,学到不少知识,折腾过不少其实不需要折腾的东西,本文试着来对这过程做个总结。
1. 初始环境

说明:
1. VirtualBox Ubuntu 安装:(VirtualBox网卡配置可见 http://www.cnblogs.com/sammyliu/p/4137772.html)
安装的是14.04 server 版本,装好后:
deb http://mirrors.xmu.edu.cn/ubuntu/archive/ trusty main restricted universe multiverse
deb http://mirrors.xmu.edu.cn/ubuntu/archive/ trusty-backports restricted universe multiverse
deb http://mirrors.xmu.edu.cn/ubuntu/archive/ trusty-proposed main restricted universe multiverse
deb http://mirrors.xmu.edu.cn/ubuntu/archive/ trusty-security main restricted universe multiverse
deb http://mirrors.xmu.edu.cn/ubuntu/archive/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.xmu.edu.cn/ubuntu/archive/ trusty main restricted universe multiverse
deb-src http://mirrors.xmu.edu.cn/ubuntu/archive/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.xmu.edu.cn/ubuntu/archive/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.xmu.edu.cn/ubuntu/archive/ trusty-security main restricted universe multiverse
deb-src http://mirrors.xmu.edu.cn/ubuntu/archive/ trusty-updates main restricted universe multiverse
2. 我的环境中,最缺乏的是内存,偏偏OpenStack很占用内存,特别是Controller节点,MySql和RabbitMQ都占了1G多的内存,所以每个节点的内存都是看着差不多刚刚好来分配的。同时也感叹下VirtualBox的好用,Ubuntu配置很方便,启动非常迅速,可能也是Mac使用SSD的缘故。
3。设置management 网络能访问外网,是为了安装方便。
4. 为什么storage network和VM traffic network用同一个网络,下文会有说明。
配置好了初始网络环境,接下来就是安装各个OpenStack node了。
备注:
(1). Ubuntu 下载地址:http://releases.ubuntu.com/trusty/
(2). Ubuntu 版本以及 Ubuntu 和 OpenStack 版本的对照关系:http://www.ubuntu.com/info/release-end-of-life

(3). Ubuntu 对 OpenStack 版本的支持采取 Cloud Archive 方案。每个 LTS (long term support)版本在发布的 image 中就包含了某个 OpenStack 版本(见上图,14.04 中包含了 IceHouse,16.04 包含了 Mitaka),此时用户可以直接安装该版本的 OpenStack。在新的 OpenStack 版本发布后,Ubuntu 会在老的版本中增加对新的 OpenStack 版本的支持。比如,在 14.04 LTS 版本中增加支持Juno 和 Kilo,此时,用户需要手工添加 Cloud Archive 中的该版本的 repository,比如 add-apt-repository cloud-archive:juno。更详细的信息,可以参考 Configuring Ubuntu Cloud Archive for OpenStack。
(4)ubuntu 的云镜像(cloud image)可以从 https://cloud-images.ubuntu.com/ 下载到。
2. 安装
安装OpenStack是按照Juno的正式安装文档进行的,过程不再重复,安装结果见下图:

3.配置
配置基本上是参考标准官方文档,详细过程不再重复。下面就一些重要的配置做下说明:
3.1 Cinder 配置
1. 使用volume group,Cinder会在该volume group里面创建virtual volume来创建volume。
VG #PV #LV #SN Attr VSize VFree
cinder-volumes 1 2 0 wz--n- 5.34g 3.36g
2. 通过LVMISCSIDriver来使用本地硬盘,使用tgtadm做为iscsi helper。
默认的LVMISCSIDriver没有提供接口来让用户配置iSCSI使用的IP地址,所以它就自动使用management network的网卡来建立iSCSI session了。其它的一些Vendor提供的iSCSI实现可以使用其它的网卡,因此storage network可以与management network分离。
tcp: [2] 192.168.1.24:3260,1 iqn.2010-10.org.openstack:volume-870d464f-5c2f-4220-869f-92039f766758
3.2 Nova配置
1. 因为机器的CPU不支持针对虚机的硬件加速,因此配置libvirt使用qumu。
3.3 Neutron配置
1. 在nova中配置使用neutron,而不是默认的nova-network。
network_api_class = nova.network.neutronv2.api.APIsecurity_group_api = neutron
linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver
2. 在ml2配置中,使用flat,gre,和 openvswitch。
4. 运行
0.确保所有的service都正常运行
+------------------+------------+------+---------+-------+----------------------------+-----------------+
| Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
+------------------+------------+------+---------+-------+----------------------------+-----------------+
| cinder-scheduler | controller | nova | enabled | up | 2014-12-28T16:00:28.000000 | None |
| cinder-volume | block1 | nova | enabled | up | 2014-12-28T16:00:28.000000 | None |
| cinder-volume | controller | nova | enabled | down | 2014-12-28T14:25:29.000000 | None |
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+
| 1 | nova-cert | controller | internal | enabled | up | 2014-12-28T16:00:45.000000 | - |
| 2 | nova-consoleauth | controller | internal | enabled | up | 2014-12-28T16:00:46.000000 | - |
| 3 | nova-scheduler | controller | internal | enabled | up | 2014-12-28T16:00:45.000000 | - |
| 4 | nova-conductor | controller | internal | enabled | up | 2014-12-28T16:00:43.000000 | - |
| 5 | nova-compute | compute1 | nova | enabled | up | 2014-12-28T16:00:42.000000 | - |
+--------------------------------------+--------------------+----------+-------+----------------+---------------------------+
| id | agent_type | host | alive | admin_state_up | binary |
+--------------------------------------+--------------------+----------+-------+----------------+---------------------------+
| 262b412c-0c3c-446d-8e9f-313a09970a8b | Open vSwitch agent | compute1 | :-) | True | neutron-openvswitch-agent |
| 3c7067be-6711-4479-8f64-7162a889feb1 | Metadata agent | network | :-) | True | neutron-metadata-agent |
| 465b0881-dcb3-4adc-9df3-3035fca02661 | DHCP agent | network | :-) | True | neutron-dhcp-agent |
| 79fbacd2-5b08-4b34-b252-d0094d2b99fd | Open vSwitch agent | network | :-) | True | neutron-openvswitch-agent |
| bc276c9d-63c5-4918-86c9-fe83edc31901 | L3 agent | network | :-) | True | neutron-l3-agent |
+--------------------------------------+--------------------+----------+-------+----------------+---------------------------+
1. 因为资源有限,创建一个比m1.tiny更少系统要求的flavor tiny:
+--------------------------------------+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+--------------------------------------+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 1 | m1.tiny | 512 | 1 | 0 | | 1 | 1.0 | True |
| 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True |
| 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True |
| 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True |
| 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True |
| a0317e03-d265-4dd3-a9e4-275a2b25c100 | tiny | 300 | 1 | 0 | | 1 | 1.0 | True |
+--------------------------------------+----------+-----------------------------------------------------+
| id | name | subnets |
+--------------------------------------+----------+-----------------------------------------------------+
| 2e068976-92b2-4a50-bbcb-14b70d4195af | ext-net | a04711a2-0917-4d1b-9f93-cc2691c22517 192.168.1.0/24 |
| 0a4cd030-d951-401a-8202-937b788bea43 | demo-net | 08b53624-63a7-4c99-97b0-c8bae3b3cbce 10.0.1.0/24 |
| | demo-net2 |5598bdf9-2de4-4a4e-9054-2070102e0f1f 10.0.0.0/24 |
+--------------------------------------+--------------+----------------+----------------------------------------------------+
| id | name | cidr | allocation_pools |
+--------------------------------------+--------------+----------------+----------------------------------------------------+
| a04711a2-0917-4d1b-9f93-cc2691c22517 | ext-subnet | 192.168.1.0/24 | {"start": "192.168.1.100", "end": "192.168.1.200"} |
| 08b53624-63a7-4c99-97b0-c8bae3b3cbce | demo-subnet | 10.0.1.0/24 | {"start": "10.0.1.2", "end": "10.0.1.254"} |
| 5598bdf9-2de4-4a4e-9054-2070102e0f1f | demo-subnet2 | 10.0.0.0/24 | {"start": "10.0.0.2", "end": "10.0.0.254"} |
+--------------------------------------+--------------+----------------+----------------------------------------------------+
+--------------------------------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-------+
| id | name | external_gateway_info | distributed | ha |
+--------------------------------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-------+
| 9ba04071-f32b-435e-8f44-e32936568102 | demo-router | {"network_id": "2e068976-92b2-4a50-bbcb-14b70d4195af", "enable_snat": true, "external_fixed_ips": [{"subnet_id": "a04711a2-0917-4d1b-9f93-cc2691c22517", "ip_address": "192.168.1.100"}]} | False | False |
+--------------------------------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-------+
+--------------------------------------+--------+--------------+------+-------------+----------+--------------------------------------+
| ID | Status | Display Name | Size | Volume Type | Bootable | Attached to |
+--------------------------------------+--------+--------------+------+-------------+----------+--------------------------------------+
| 15d76291-d1a7-423f-82f0-14bd52652a7c | in-use | vol22 | 1 | None | true | 9ff3776b-6835-4a4e-8b11-b440591ca9b9 |
| 870d464f-5c2f-4220-869f-92039f766758 | in-use | vol33 | 1 | None | true | 20c011e1-de8f-4ac8-ac6a-5ba0f9dd9b42 |






5. 遇到过的问题及解决办法
5.1 Ubuntu安装失败
现象:VirtualBox无法辨识ubuntu iso文件
原因:iso文件有问题,需要重新下载iso文件,注意确保下载的iso文件的md5值和服务器上iso的md5值相同,不同则表示下载有问题。
5.2 创建虚机失败
日志:Filter RamFilter returned 0 hosts
原因:nova-scheduler找不到符合flavor要求的host来创建虚机
解决:减小flavor要求
6. 感想
1.学习OpenStack,得从搭环境开始,devstack是不够的。
2. open source的产品的一大好处是可以按需修改代码
3. 在config文件中设置debug=True,可以得到最详细的日志,编译调试。
4. 免费的VirtualBox比收费的Parallels Desktop好用,详见我的另一篇blog: http://www.cnblogs.com/sammyliu/p/4139246.html
5. OpenStack要学的东西很多。。。
6. 其它的想到再加过来吧 TBD
学习OpenStack之(5):在Mac上部署Juno版本OpenStack 四节点环境的更多相关文章
- Mac上配置不同版本的JDK
Mac上JDK的版本为1.8,编译AOSP时发现需要JDK 1.7.想找一种比较容易切换JDK版本的方式,经过一番Google发现Jenv比较合适. 安装Jenv至少有三种方式: - $ git cl ...
- Mac上利用VScode配置c/c++开发环境
Mac上利用VScode配置c/c++开发环境 哭辽,Typora里面最好不要插入表情,不然保存会闪退 首先你要有一个vscode 在扩展里面下载c/c++ 第一步 ⬆+com+p 打开命令模式:选择 ...
- Mac 上Python多版本切换
Mac上自带了Python2.x的版本,有时需要使用Python3.x版本做开发,但不能删了Python2.x,可能引起系统不稳定,那么就需要安装多个版本的Python. 1.安装Python3.x版 ...
- mac上Python多版本共存(python2.7.10和python3.5.0)
本文的实现目标是在mac上安装一个python3.5.0的版本,跟当前系统自带的python2.7.10共存. 查看当前版本号 python -V 2.7.10 安装配置Python版本管理器pyen ...
- Mac上部署JDK/Ant/Jmeter/Jenkins
一.安装JDK 1. 下载JDK 2. 下完后直接双击安装,默认安装到/Library/Java/JavaVirtualMachine下 3. 验证是否安装成功 java -version 二.安装J ...
- Mac上安装与更新Ruby,Rails运行环境
Mac安装后就安装Xcode是个好主意,它将帮你安装好Unix环境需要的开发包,也可以独立安装command_line_tools_for_xcode 1.安装RVM RVM:Ruby Version ...
- mac上Python多版本共存
http://www.cnblogs.com/mingaixin/p/6295963.html https://www.cnhzz.com/pyenv_virtualenv_virtaulenvwra ...
- 在mac上使用sublime text3搭建opencv3开发环境
安装sublime text3 打开mac终端,安装brew 安装opencv3,终端输入下面的coomand: brew install opencv@3 注意:@3表示安装的版本,如果不加@3,那 ...
- ios即时通讯客户端开发之-mac上基于XMPP的聊天客户端开发环境搭建
1.搭建服务器 - 安装顺序 - (mysql->openfire->spark) 数据库:mysql 服务器管理工具: openfire 测试工具: spark mysql 安装 h ...
随机推荐
- Rotating Image Slider - 图片旋转切换特效
非常炫的图片旋转滑动特效,相信会给你留下深刻印象.滑动图像时,我们会稍稍旋转它们并延缓各元素的滑动.滑块的不寻常的形状是由一些预先放置的元素和使用边框创建.另外支持自动播放选项,鼠标滚轮的功能. 在线 ...
- RequireJS使用注意地方
使用RequireJS做异步模块加载,有几点值得注意的地方: 1.模块定义两种写法 1. 存在依赖的函数式定义 如果模块存在依赖:则第一个参数是依赖的名称数组:第二个参数是函数,在模块的所有依赖加载完 ...
- DOM中的事件处理概览与原理的全面剖析
事件是一种异步编程的实现方式,本质上是程序各个组成部分之间的通信,DOM支持大量的事件: 本文通过这几点向大家详细解析事件处理的基本原理:事件类型.事件目标.事件处理程序.事件对象.事件传播 最后再向 ...
- userprofile同步用户失败的原因和解决方案
userprofile同步账号进行出现同步不到用户.有个时候同步成功了但是为0个用户.有个时候提示同步失败或拒绝等错误.如何查看同步服务同步的结果.其实明白sharepoint2010同步用户的原理都 ...
- WAF指纹识别和XSS过滤器绕过技巧
[译文] -- “Modern Web Application Firewalls Fingerprinting and Bypassing XSS Filters” 0x1 前言 之前在乌云drop ...
- Ida动态修改android程序的内存数据和寄存器数值,绕过so文件的判断语句
我们继续分析自毁程序密码这个app,我们发现该程序会用fopen ()打开/proc/[pid]/status这个文件,随后会用fgets()和strstr()来获取,于是我们在strstr()处下个 ...
- Android优秀学习资料(高手博客
任玉刚, 博客 : http://blog.csdn.net/singwhatiwanna, github : https://github.com/singwhatiwanna Trinea, 博客 ...
- TexturePacker大图还原成小图工具带源码
TexturePacker是一个把好多小图打成大图的软件,生成的是大图以及小图在大图位置的.plist描述文件,但是不支持把大图还原成小图.网上偷的图一般都是大图和plist,想得到小图比较麻烦,于是 ...
- 你真的了解UIView吗?
一:首先查看一下关于UIView的定义 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIView : UIResponder <NSCoding, UIAppe ...
- 如何使用SSL pinning来使你的iOS APP更加安全
SSL pinning在构建一个高度安全的移动APP上扮演了一个十分重要的角色.然而如今好多用户在使用无线移动设备去访问无数不安全的无线网络. 这篇文章主要覆盖了SSL pinning 技术,来帮助我 ...