网上貌似没有任何相关的博客。。。。下面我来讲一讲怎么将devstack下的openstack插件Tap-as-a-service 集成到手工搭建的openstack上
首先,github上面放的都是devstack版本,这一点对openstack开发运维人员就很不友好,实际生产环境中上需要在多个节点上上同步安装插件的plugin与agent,为了将插件同步部署到我们的生产环境中,我读了一下taas的devstack的安装脚本,发现很多地方竟然有bug!幸好我之前做过两年的neutron开发,对插件加载机制比较熟悉,所以费劲了一波周折还是弄好了,
Taas的github位置在https://github.com/openstack/tap-as-a-service,是云端流量捕获插件,具体的分析可以看我之前的一篇文章
https://blog.csdn.net/m0_37313888/article/details/82693789
neutron>=12.0.0
pbr!=2.1.0,>=2.0.0 # Apache-2.0
Babel!=2.4.0,>=2.3.4 # BSD
1.这里是安装的queens版本下的taas,具体怎么根据neutron版本查看openstack版本可以看我之前的另一篇文章
https://blog.csdn.net/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的
还是从devstack的安装脚本看起,位置在https://github.com/openstack/tap-as-a-service/blob/master/devstack/plugin.sh
关于脚本的使用网上有很多文章,我看了看脚本,总结升华了一下,主要有一下几步:
在控制节点上
0.更新软件源
sudo apt-get update
1.安装git
sudo apt-get install git
2.下载taas并进入taas目录
cd ~
sudo git clone -b stable/queens https://github.com/openstack/tap-as-a-service
cd tap-as-a-service
如果你的openstack是rocky版本的就,其他版本的同理
sudo git clone -b stable/rocky https://github.com/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.tapflow
tap_service = neutron_taas.taas_client.tapservice
[tempest.test_plugins]
tap-as-a-service = neutron_taas.tests.tempest_plugin.plugin:NeutronTaaSPlugin
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
neutron-db-manage --subproject tap-as-a-service upgrade head
sudo service neutron-server restart
# neutron tap-service-list
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
#
就说明controller上安装成功
在计算节点上
0.更新软件源
sudo apt-get update
1.安装git
sudo apt-get install git
2.下载taas并进入taas目录
cd ~
sudo git install https://github.com/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.tapflow
tap_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
devstack上的脚本将下面这段
[agent]
extensions = taas
这步加上后,实际上openvswitch_agent在启动后是识别不了taas插件的!!!
将
[agent]
extensions = taas
加到/etc/neutron/plugins/ml2/openvswitch_agent.ini中的[agent] section中
然后重启neutron-openvswitch-agent
service neutron-openvswitch-agent restart
查看日志,出现下面这行说明安装成功了
2018-10-27 21:52:45.538 2912 INFO neutron.agent.agent_extensions_manager [-] Loaded agent extensions: ['taas']