networking-odl项目的目的/用途就是sync odl和neutron的资源数据库和状态
v1中对于每个neutron的资源操作都相应的调用odl restfu api来同步odl,但问题有以下:
2个操作不能顺序进行导致状态不一致:
V2用来解决资源竞争,可扩展行和支持HA。
基本原理是每个neutron操作都记录到odl 数据库中,
每个odl driver在sync线程中去同步到odl,解决了issue 3。
先把操作记录到DB中解决了操作到odl顺序不一致的问题 (issue 6),
sync线程需要获取DB锁来解决并发锁的问题(issue 2),
同时多个neutron server可以同时写入记录DB解决了并发的问题(issue 1)。
issue 5从odl到neutron的通知功能在开发计划中。
JournalEntry就是一个neutron的操作记录,在ML2的odl driver中的precommit时设置状态为PENDING,
然后由后台同步线程或者postcommit来触发处理PROCESSING 操作。
v2如何支持HA的:
neutron server的操作记录到DB中,同步线程需要获得DB锁来做同步处理。
重新完全同步被用来ODL重启或者初始化时,从neutron DB(注意不是jounalentry DB)同步ODL
需要Lightweight 测试框架来测试HA,tempest测试too heavy, 有一种想法是把tempest 过程录制下来再Lightweight 测试框架回放。
目前社区https://review.openstack.org/#/c/314447/ 打算采用一种更为灵巧的做法,通过message bus上的RPC来模拟neutron 失败来测试HA。