网上貌似没有任何相关的博客。。。。下面我来讲一讲怎么将devstack下的openstack插件Tap-as-a-service 集成到手工搭建的openstack上
首先,github上面放的都是devstack版本,这一点对openstack开发运维人员就很不友好,实际生产环境中上需要在多个节点上上同步安装插件的plugin与agent,为了将插件同步部署到我们的生产环境中,我读了一下taas的devstack的安装脚本,发现很多地方竟然有bug!幸好我之前做过两年的neutron开发,对插件加载机制比较熟悉,所以费劲了一波周折还是弄好了,
事先声明,本博客的所有技巧均为本人阅读devstack的安装脚本研究出来的,网上是到处都谷歌不到的!!!转载请表明出处!
0.TAAS所对应的的neutron版本要求
Taas的github位置在/openstack/tap-as-a-service,是云端流量捕获插件,具体的分析可以看我之前的一篇文章
/m0_37313888/article/details/82693789
neutron>=12.0.0 pbr!=2.1.0,>=2.0.0 # Apache-2.0Babel!=2.4.0,>=2.3.4 # BSD
1.这里是安装的queens版本下的taas,具体怎么根据neutron版本查看openstack版本可以看我之前的另一篇文章
/m0_37313888/article/details/83352410
2.我的系统版本为Ubuntu16.04
3.别忘了更新pbr与Babel的版本
4.我在所有节点上的mechanism driver均为openvswitch,并且貌似这个插件只支持OVS!!!
5.type driver 必须是VXLAN,因为tap-as-a-service的底层流量的迁移是基于vxlan的
1.控制节点
还是从devstack的安装脚本看起,位置在/openstack/tap-as-a-service/blob/master/devstack/plugin.sh
关于脚本的使用网上有很多文章,我看了看脚本,总结升华了一下,主要有一下几步:
1.安装taas的python包
在控制节点上
0.更新软件源
sudo apt-get update
1.安装git
sudo apt-get install git
2.下载taas并进入taas目录
cd ~
sudo git clone -b stable/queens /openstack/tap-as-a-service
cd tap-as-a-service
如果你的openstack是rocky版本的就,其他版本的同理
sudo git clone -b stable/rocky /openstack/tap-as-a-service
3.安装taas
python setup.py install
如果安装完了,会提示在/usr/local/lib/python2.7/dist-packages/tap_as_a_service-4.0.0.egg-info下面有taas的python模块包
不放心的可以执行下面这段
vi /usr/local/lib/python2.7/dist-packages/tap_as_a_service-3.0.1.dev2.egg-info/entry_points.txt
正常的应该涨这样
[neutron.agent.l2.extensions]taas = neutron_taas.services.taas.agents.extensions.taas:TaasAgentExtension[neutron.db.alembic_migrations]tap-as-a-service = neutron_taas.db.migration:alembic_migration[neutron.service_plugins]taas = neutron_taas.services.taas.taas_plugin:TaasPlugin[neutron_taas.taas.agent_drivers]ovs = neutron_taas.services.taas.drivers.linux.ovs_taas:OvsTaasDriver[neutronclient.extension]tap_flow = neutron_taas.taas_client.tapflowtap_service = neutron_taas.taas_client.tapservice[tempest.test_plugins]tap-as-a-service = neutron_taas.tests.tempest_plugin.plugin:NeutronTaaSPlugin
2.修改配置文件
1.在/etc/neutron/neutron.conf中
vi /etc/neutron/neutron_taas.conf
写入下面的内容
[service_providers]service_provider = TAAS:TAAS:neutron_taas.services.taas.service_drivers.taas_rpc.TaasRpcDriver:default
如果上面的部分已经存在,那么只用这样写
[service_providers]service_provider = (......原来已经存在的部分),TAAS:TAAS:neutron_taas.services.taas.service_drivers.taas_rpc.TaasRpcDriver:default
即在原来已经存在的部分后面加上逗号与正文。
2.修改/etc/neutron/neutron.conf
将[DEFAULT]中的
service_plugins = router(注意,这里表示与原本的内容)
改成
service_plugins = router, taas
比如,我的在修改后成了这样
[DEFAULT]##.............此处省略其他配置.................service_plugins = router,taas
3.同步数据库
neutron-db-manage --subproject tap-as-a-service upgrade head
4.重启neutron-server
sudo service neutron-server restart
5.验证
# neutron tap-service-listneutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.#
就说明controller上安装成功
2.计算节点
1.安装taas的python包
在计算节点上
0.更新软件源
sudo apt-get update
1.安装git
sudo apt-get install git
2.下载taas并进入taas目录
cd ~
sudo git install /openstack/tap-as-a-service
cd tap-as-a-service
3.安装taas
python setup.py install
如果安装完了,会提示在/usr/local/lib/python2.7/dist-packages/tap_as_a_service-4.0.0.egg-info下面有taas的python模块包
不放心的可以执行下面这段
vi /usr/local/lib/python2.7/dist-packages/tap_as_a_service-4.0.0.egg-info/entry_points.txt
正常的应该涨这样
[neutron.agent.l2.extensions]taas = neutron_taas.services.taas.agents.extensions.taas:TaasAgentExtension[neutron.db.alembic_migrations]tap-as-a-service = neutron_taas.db.migration:alembic_migration[neutron.service_plugins]taas = neutron_taas.services.taas.taas_plugin:TaasPlugin[neutron_taas.taas.agent_drivers]ovs = neutron_taas.services.taas.drivers.linux.ovs_taas:OvsTaasDriver[neutronclient.extension]tap_flow = neutron_taas.taas_client.tapflowtap_service = neutron_taas.taas_client.tapservice[tempest.test_plugins]tap-as-a-service = neutron_taas.tests.tempest_plugin.plugin:NeutronTaaSPlugin[neutron.service_providers]taas = neutron_taas.services.taas.service_drivers.taas_rpc.TaasRpcDriver
2.修改配置文件
这一步,devstack的安装脚本是错的,是错的!!!
devstack上的脚本将下面这段
[agent]extensions = taas
加到了/etc/neutron/plugins/ml2/ml2_conf.ini上!!!
这步加上后,实际上openvswitch_agent在启动后是识别不了taas插件的!!!
解决方法
将
[agent]extensions = taas
加到/etc/neutron/plugins/ml2/openvswitch_agent.ini中的[agent] section中
然后重启neutron-openvswitch-agent
service neutron-openvswitch-agent restart
查看日志,出现下面这行说明安装成功了
-10-27 21:52:45.538 2912 INFO neutron.agent.agent_extensions_manager [-] Loaded agent extensions: ['taas']