一直想尝试玩一下juniper的OpenContrail,看看这被juniper以$176 million高价收购的公司技术到底有何牛逼之处,那么问题来了,到底牛逼在什么地方呢?

答曰:是挺牛逼,简直就是各种编程语言(c/c++/java/python/node.js)的大演练场,就差lisp与go了,在openstack复杂的neutron之上又增加了另外一层的复杂,虽然理念很好,但我个人并不看好,如果有机会的话,我倒宁愿组个team,对架构进行二次简化后来做方案卖钱了。

闲话不多说,具体的安装步骤可以戳开 http://github.com/Juniper/contrail-installer 查阅。

这里补充一下我安装过程中所遇到的各种坑,如果有人需求预安装好的含openstack+opencontrail的镜像的话,我可以提供。

  • 尽可能在vm中使用devstack来安装openstack环境,减少openstack安装所占用的时间
  • 尽量不要用centos,本次安装采用ubuntu 14.04,contrail-installer的脚本说实话写的真不咋的,centos系统下安装问题较多
  • devstack安装的icehouse可以正确工作,但需要注意把opencontrail给出的devstack localrc中的Q_PLUGIN_CLASS参数改为neutron_plugin_contrail.plugins.opencontrail.contrail_plugin.NeutronPluginContrailCoreV2,也即contrail-installer给出的是错的
  • 在使用devstack安装openstack时,要先安装nodejs,安装后注意确认在/usr/bin下有到nodejs的名为node的符名链接,如没有则需手工创建,否则less工具无法编译成正确的css文件,导致openstack登陆界面乱掉
  • 推荐安装memcached这样的对象存储系统,否则在宿主机访问虚拟机的openstack界面实在是太慢了
  • contrail-installer请使用master分支,否则control-node这样的服务改名为contrail-control这样的事,在stable/mainline这样的git branch上是不会被改掉的
  • 尽可能给vm多分点内存(我分了3G),否则注意调整casandra的默认memory占用,如果cassandra起不来的话,opencontrail控制平面无法工作
  • 如果不是代码控的话,不要尝试使用源码安装opencontrail,设置CONTRAIL_DEFAULT_INSTALL走ppa安装才是王道
  • opencontrail webui要自己单独安装,依赖的组件过多,我没有成功,如果没有必要的话,建议不去尝试了,毕竟这是他们要拿来卖钱的核心东西(管理很值钱啊)
  • 在跑all-in-one时,要注意把本机上启动的dhcp服务(如dnsmasq)关闭掉,否则vrouter-agent无法正确监听dhcp报文,vm的dhcp请求无法被正确proxy
  • cfg api似乎有bug,按contrail.sh start之后stack.sh启动opencontrail+openstack后,要重新关闭cfg api再启动一次才能创建openstack network
  • vrouter-agent提供了一些诊断命令行,如vif/flow/vxlan等,很遗憾这是我直接看代码后找到的,可想文档之差
  • 每个服务都有introspect端口,如vrouter通过8085端口提供自省, http://all_in_one_node_ip:8085/Snh_ItfReq?name= 这个api可用来查询vif状态是否在active阶段,如果不在active阶段,则vm只能获取到openstack分配的主机地址,连路由都不会下
  • 最后一条,由于文档资源比较稀缺,一次性顺利安装似乎不太可能,调试时不必急躁砸键盘:)

后面如有时间,我将陆续会写一系列关于opencontrail的架构剖析文章,以增加对opencontrail这套系统的理解。


Comments

comments powered by Disqus