学习OpenStack之(5):在Mac上部署Juno版本OpenStack 四节点环境

0. 前沿

经过一段时间的折腾,终于在自己的Mac上装好了Juno版本的四节点环境。这过程中,花了大量的时间,碰到了许多问题,学到不少知识,折腾过不少其实不需要折腾的东西,本文试着来对这过程做个总结。

1. 初始环境

说明:

1. VirtualBox Ubuntu 安装:(VirtualBox网卡配置可见 http://www.cnblogs.com/sammyliu/p/4137772.html)

安装的是14.04 server 版本,装好后:

(1)修改sources.list来使用厦大的源

(2)运行:

echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu"  "trusty-updates/juno main" > /etc/apt/sources.list.d/cloudarchive-juno.list

apt-get update

apt-get upgrade

add-apt-repository cloud-archive:juno

    apt-get dist-upgrade

2. 我的环境中,最缺乏的是内存,偏偏OpenStack很占用内存,特别是Controller节点,MySql和RabbitMQ都占了1G多的内存,所以每个节点的内存都是看着差不多刚刚好来分配的。同时也感叹下VirtualBox的好用,Ubuntu配置很方便,启动非常迅速,可能也是Mac使用SSD的缘故。

3。设置management 网络能访问外网,是为了安装方便。

4. 为什么storage network和VM traffic network用同一个网络,下文会有说明。

配置好了初始网络环境,接下来就是安装各个OpenStack node了。

2. 安装

安装OpenStack是按照Juno的正式安装文档进行的,过程不再重复,安装结果见下图:

3.配置

配置基本上是参考标准官方文档,详细过程不再重复。下面就一些重要的配置做下说明:

3.1 Cinder 配置

1. 使用volume group,Cinder会在该volume group里面创建virtual volume来创建volume。

[email protected]:/home/s1# vgs
  VG             #PV #LV #SN Attr   VSize VFree
  cinder-volumes   1   2   0 wz--n- 5.34g 3.36g

system           1   2   0 wz--n- 3.72g    0

2. 通过LVMISCSIDriver来使用本地硬盘,使用tgtadm做为iscsi helper。

默认的LVMISCSIDriver没有提供接口来让用户配置iSCSI使用的IP地址,所以它就自动使用management network的网卡来建立iSCSI session了。其它的一些Vendor提供的iSCSI实现可以使用其它的网卡,因此storage network可以与management network分离。

[email protected]:/home/s1# iscsiadm -m session
tcp: [2] 192.168.1.24:3260,1 iqn.2010-10.org.openstack:volume-870d464f-5c2f-4220-869f-92039f766758

tcp: [3] 192.168.1.24:3260,1 iqn.2010-10.org.openstack:volume-15d76291-d1a7-423f-82f0-14bd52652a7c

3. 没有使用multiple backend,所以不需要使用volume type。

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都正常运行

[email protected]:/home/s1# cinder service-list
+------------------+------------+------+---------+-------+----------------------------+-----------------+
|      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      |

+------------------+------------+------+---------+-------+----------------------------+-----------------+

[email protected]:/home/s1# nova service-list
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+
| 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 | -               |

+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+

[email protected]:/home/s1# neutron agent-list
+--------------------------------------+--------------------+----------+-------+----------------+---------------------------+
| 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:

[email protected]:/home/s1# nova flavor-list
+--------------------------------------+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 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      |

+--------------------------------------+-----------+-----------+------+-----------+------+-------+-------------+-----------+

2. 创建neutron 网络

[email protected]:/home/s1# neutron net-list
+--------------------------------------+----------+-----------------------------------------------------+
| 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    |

+--------------------------------------+----------+-----------------------------------------------------+

[email protected]:/home/s1# neutron subnet-list
+--------------------------------------+--------------+----------------+----------------------------------------------------+
| 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"}         |
+--------------------------------------+--------------+----------------+----------------------------------------------------+

[email protected]:/home/s1# neutron router-list
+--------------------------------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-------+
| 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 |
+--------------------------------------+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------+-------+

3. 创建volume

[email protected]:/home/s1# cinder list
+--------------------------------------+--------+--------------+------+-------------+----------+--------------------------------------+
|                  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 |

+--------------------------------------+--------+--------------+------+-------------+----------+--------------------------------------+

4. 从volume创建虚机

5. 检查虚机

1. VM可使用

2. VM可以互相访问

3. 虚机可以访问外网

6. 创建虚机后的网络

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要求

5.3 虚机无法启动

console:Boot failed,not a bootable disk。No bootable device。

原因:启动虚机的volume的image不含boot loader。

解决:测试目的的话,可从http://download.cirros-cloud.net/0.3.2/下载image,比如cirros-0.3.2-x86_64-disk.img

5.4 虚机build失败

日志:

BuildAbortException: Build of instance 66fbb471-21a9-4f45-9ca7-37a6e4606179 aborted: Failed to allocate the network(s), not rescheduling.

RemoteError: Remote error: OperationalError (OperationalError) (1048, “Column ‘instance_uuid‘ cannot be null”)

原因:nova更新数据库表instance_extra失败。开了一个bug给OpenStack,https://bugs.launchpad.net/nova/+bug/1405741,但是还没有人理我。

解决:修改code,注释掉出错地方的代码,重新运行,结果是虚机的状态一直停留在building状态,可手动修改数据库记录将其变为active。

update instances set vm_state=‘active‘ where uuid=‘9ff3776b-6835-4a4e-8b11-b440591ca9b9‘;

6. 感想

1.学习OpenStack,得从搭环境开始,devstack是不够的。

2. open source的产品的一大好处是可以按需修改代码

3. 在config文件中设置debug=True,可以得到最详细的日志,编译调试。

4. 免费的VirtualBox比收费的Parallels Desktop好用,详见我的另一篇blog:http://www.cnblogs.com/sammyliu/p/4149005.html

5. OpenStack要学的东西很多。。。

6. 其它的想到再加过来吧 TBD

时间: 2024-10-17 08:00:45

学习OpenStack之(5):在Mac上部署Juno版本OpenStack 四节点环境的相关文章

Mac上配置不同版本的JDK

Mac上JDK的版本为1.8,编译AOSP时发现需要JDK 1.7.想找一种比较容易切换JDK版本的方式,经过一番Google发现Jenv比较合适. 安装Jenv至少有三种方式: - $ git clone https://github.com/gcuisinier/jenv.git ~/.jenv - $ curl -L -s get.jenv.io | bash - $ brew install jenv 我是用第三种方式安装的. 安装后运行          jenv doctor 报了两

Mac上利用VScode配置c/c++开发环境

Mac上利用VScode配置c/c++开发环境 哭辽,Typora里面最好不要插入表情,不然保存会闪退 首先你要有一个vscode 在扩展里面下载c/c++ 第一步 ?+com+p 打开命令模式:选择c/c++: 编辑配置(edit configuration) 然后再自动生成的.vscode目录,打开c_cpp_properties.json.利用老哥的文件示例: { "configurations": [ { "name": "Mac", &

Openstack VPNAAS部署--Juno版本

Openstack VPNAAS部署 对于Openstack vpnaas的文档网上流传着很多大部分都是G版本或者H版本,而且资料很少,基本都是抄来抄去,我今天在这里给大家说的是Juno版本如何搭建Openstack 高级功能VPNaas服务. 首先环境准备: A区域 Controller Node:192.168.30.10 Network Node:192.168.30.11 Compute Node:192.168.30.12 B区域 Controller Node:192.168.40.

Mac 上Python多版本切换

Mac上自带了Python2.x的版本,有时需要使用Python3.x版本做开发,但不能删了Python2.x,可能引起系统不稳定,那么就需要安装多个版本的Python. 1.安装Python3.x版本,我安装了3.6.1: 2.打开终端(terminal),输入:sudo vi ~/.bashrc: 3.在弹出的编辑页面顶部输入并保存: alias python2='/Library/Frameworks/Python.framework/Versions/2.x/bin/python2.x'

Mac上部署JDK/Ant/Jmeter/Jenkins

一.安装JDK 1. 下载JDK 2. 下完后直接双击安装,默认安装到/Library/Java/JavaVirtualMachine下 3. 验证是否安装成功 1 java -version 二.安装Jmeter 1. 下载Jmeter,解压至/Library/Jmeter目录下 1 sudo mkdir /Library/Jmeter #创建Jmeter文件夹 2 sudo tar zxvf apache-jmeter-3.0.tgz -C /Library/Jmeter #解压 2. 直接

Mac上安装与更新Ruby,Rails运行环境

Mac安装后就安装Xcode是个好主意,它将帮你安装好Unix环境需要的开发包,也可以独立安装command_line_tools_for_xcode 1.安装RVM RVM:Ruby Version Manager,Ruby版本管理器,包括Ruby的版本管理和Gem库管理(gemset). 1.           $ curl -L get.rvm.io | bash -s stable 2.           或者 3.           $ bash -s stable <</sp

在mac上使用sublime text3搭建opencv3开发环境

安装sublime text3 打开mac终端,安装brew 安装opencv3,终端输入下面的coomand: brew install [email protected] 注意:@3表示安装的版本,如果不加@3,那么会默认安装最新的版本:建议安装版本3. 在sublime text3中添加build system Tools->Build System->New Build System... 复制下面的code到新建的.sublime-build文件 { "cmd":

ios即时通讯客户端开发之-mac上基于XMPP的聊天客户端开发环境搭建

1.搭建服务器  -  安装顺序 - (mysql->openfire->spark) 数据库:mysql 服务器管理工具: openfire 测试工具: spark mysql 安装 http://www.cnblogs.com/xiaodao/archive/2013/04/04/2999426.html 注意点:在终端执行mysql命令时候,最后都要加封号(;) openfire安装http://www.cnblogs.com/xiaodao/archive/2013/04/05/300

mac上gradle升级版本

参考:https://www.jianshu.com/p/9fa9d2b4dbc9    http://www.gradle.org/downloads下载gradle 终端输入:open .bash_profile 打开环境变量配置 打开后配置: export GRADLE_HOME=/Users/gradle-4.4.1 // 这里的路径是当前电脑gradle文件所在的位置 export PATH=$PATH:$GRADLE_HOME/bin 保存并关闭后,终端输入source .bash_