OpenStack Havana 部署在Ubuntu 12.04 Server 【OVS+GRE】——序
OpenStack Havana 部署在Ubuntu 12.04 Server 【OVS+GRE】(一)——控制节点的安装
OpenStack Havana 部署在Ubuntu 12.04 Server 【OVS+GRE】(二)——网络节点的安装
OpenStack Havana 部署在Ubuntu 12.04 Server 【OVS+GRE】(三)——计算节点的安装
OpenStack接触半年有余了,现在 I 版也要马上发布了,现在也是时候要好好写一下 Havana 的安装、部署过程了。首先,还是向Awy同学致敬,当时正是参考他的H版部署博文,并综合了OpenStack的Ubuntu官方部署文档,终于完成了OpenStack多节点的部署(OVS+GRE)。要知道刚入门时,图简单,一直用Devstack来安装,由于git源、pipy的源、以及ubuntu的软件源没有配好,导致一直没装成功(现在改了一下脚本和localrc文件以及源,可以做测试用)。后来又试了什么Onestack,以及其他人写的一些手动部署的文章,但都因为版本差异太大,和一些没有及时纠正的错误,最终还是以失败告终。直到最后,认真看了官方文档以后,才慢慢有了起色,所以还是贤哥说得对啊,学好英文,才能随时拿得到第一手的技术精品资料啊!
现在先引用awy的原文:Ubuntu 12.04 Server OpenStack Havana多节点(OVS+GRE)安装
老实说,当时看这篇博文还是有不少小错误,比如:keystone的创建脚本有些小问题,变量名前后不一致,例如ceilometer的服务ip变量应为CEILOMETER_IP,而不是CEILOMETER;创建数据库的时候,每个库都有所对应的用户名和密码,而后面的配置文件里头没有与之对应;同样配置文件里头的,对应keystone服务的password也没有与keystone创建时的对应;计算节点部署neutron的时候,忘了创建br-int的网桥········
可能,这些是有意预留下来“坑”,如果没有认真对比OpenStack的官方文档来看,完全依葫芦画瓢,没有注意到这些细节,照样还是不能配成功。作为“过来人”,我就不在这里预设“包袱”,尽量把这些坑一一排除吧。接下来,分三篇博文的内容,大部分引用Awy同学的OVS+GRE的部署方案,安装Nova 、Glance、Keystone、Neutron、Cinder、Horizon、Ceilometer服务,来完成这次简单多节点部署。
部署前须知:
1.确定你的系统是ubuntu 12.04 LTS版本,目前的我部署的环境为ubuntu server 12.04.3/Linux 3.8.0-36-generic
2.替换源为163的源,同时也要加入ubuntu官方的Havana的源,使用 add-apt-repository cloud-archive:havana 添加之
3.各个节点之间一定要使用ntp来同步时间,时区最好设置成一样,免得出现服务“假死”
网络服务架构:
OVS+GRE的网络流:
实际的网络配置:
由于没有太多可用的物理机,于是在一块刀片上(真的是高性能),通过libvirt起三个KVM的虚拟机,来做为要部署的场景。注意:KVM虚拟机里面再起虚拟机,只能指定QEMU来完成,所以OpenStack计算节点的配置的虚拟化类型应为qemu!同时需要配置三个网段:外网,管理网,数据网,虽然libvirt里面的xml增加虚拟网卡很简单,但是这里,还是使用eth0:1,eth0:2这样的网络别名设备,在一个网卡上配置多个IP,来完成多个网段的配置,在实际的物理主机中同样可以。总之,实际网络部署就是,这三个节点虽然有不同的网段,但终究只连了一个“交换机”(如果要在libvirt的虚拟环境中不同网段连接不同的“交换机”,实现二层的隔离,即将其连接不同的网桥即可)。因为每个节点都要apt-get来从源中下载包来安装,所以实际上,每个节点都部署了外网IP。
节点 | 外网IP | 内网IP | 数据网IP |
控制节点(Controller) | 192.168.122.2 | 10.10.10.2 | —— |
网络节点(Network) | 192.168.122.3 | 10.10.10.3 | 10.20.20.3 |
计算节点(Computer) | 192.168.122.4 | 10.10.10.4 | 10.20.20.4 |
同时可以参考一下,用作控制节点的KVM虚拟机的libvirt xml(其他节点也都一样):
<!-- WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE OVERWRITTEN AND LOST. Changes to this xml configuration should be made using: virsh edit win7 or other application using the libvirt API. --> <domain type='kvm'> <name>controller</name> <memory>4096000</memory> <vcpu>4</vcpu> <!--cpu> <topology sockets='1' cores='24' threads='24'/> </cpu--> <!--cpu mode='host-model'> <model fallback='allow'/> <topology sockets='1' cores='24' threads='1'/> </cpu--> <!--hostdev> <rom bar='on' file='/usr/share/kvm/pxe-rtl8139.rom'/> </hostdev--> <os> <type arch='x86_64' machine='pc'>hvm</type> <!--boot dev='network'/--> <boot dev='hd'/> <boot dev='cdrom'/> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset='localtime'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/bin/qemu-system-x86_64</emulator> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/home/fbw/Good-OpenStack/controller.qcow2'/> <target dev='vda' bus='virtio'/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/home/fbw/Good-OpenStack/cinder.qcow2'/> <target dev='vdb' bus='virtio'/> </disk> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='/home/fbw/ubuntu-12.04.3-server-amd64.iso'/> <target dev='hdc' bus='ide'/> <readonly/> </disk> <interface type='network'> <mac address='52:54:00:32:71:12'/> <source network='default'/> <!--virtualport type='openvswitch'> </virtualport--> <model type='virtio'/> </interface> <!--serial type='pty'> <target port='0'/> </serial--> <!--console type='pty'> <target type='serial' port='0'/> </console--> <input type='tablet' bus='usb'/> <input type='mouse' bus='ps2'/> <!--graphics type='spice' autoport='yes' listen='0.0.0.0'> </graphics--> <graphics type='vnc' autoport='yes' listen='0.0.0.0'> </graphics> <!--channel type='pty'> <target type='virtio' name='virtio-serial-port-0'/> <address type='virtio-serial' controller='1' bus='0' port='1'/> </channel--> <sound model='ich6'> <!--address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/--> </sound> <video> <!--model type='qxl' vram='65536' heads='1'/--> <!--address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/--> </video> <memballoon model='virtio'> <!--address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/--> </memballoon> <!--controller type='usb' index='0' model='ich9-ehci1'> </controller> <controller type='usb' index='0' model='ich9-uhci1' multifunction='on'> <master startport='0'/> </controller> <controller type='usb' index='0' model='ich9-uhci2'> <master startport='2'/> </controller> <controller type='usb' index='0' model='ich9-uhci3'> <master startport='4'/> </controller--> <!--redirdev bus='usb' type='spicevmc'> </redirdev> <redirdev bus='usb' type='spicevmc'> </redirdev> <redirdev bus='usb' type='spicevmc'> </redirdev> <redirdev bus='usb' type='spicevmc'> </redirdev--> </devices> <!--qemu:commandline> <qemu:arg value='-bios'/> <qemu:arg value='/usr/share/qemu-kvm/pxe-rtl8139.rom'/> </qemu:commandline> <qemu:commandline> <qemu:arg value='-option-rom'/> <qemu:arg value='/usr/share/qemu-kvm/sgabios.bin'/> </qemu:commandline--> </domain>