Openstack Issue その1―正常に見えるのに大量にネットワークエラーが…
問題概要
VM は正常に起動できているように見えるのに、起動している compute ノードの/var/log/neutron/neutron-linuxbridge-agent.log
で
無限に ebtables のエラーを吐き続ける問題
ebtables v1.8.4 (nf_tables): CHAIN_USER_DEL failed (Device or resource busy): chain neutronARP-tapxxxxxxxx-xx
みたいなログが延々と出力され続けている…
参考
- Bug #1887281 “[linuxbridge] ebtables delete arp protect chain fa…” : Bugs : neutron
- Flush ebtables arp protect chains before deleting them · 2207b88544 - neutron - OpenDev: Free Software Needs Free Tools
方針
Bug #1887281 “[linuxbridge] ebtables delete arp protect chain fa…” : Bugs : neutronによれば、 新しいバージョンでは修正されているとのことだが、apt でインストールされる Neutron のバージョンでは Ussuri/Victoria 両リリースともに 修正前のバージョンでした…
Release apt installed Neutron Version bug fixed Neutron Version Ussuri 16.2.0 16.3.0+ Victoria 17.0.0 17.1.0+ なので、今回は手動でパッチ処理をおこなう方法で解決してみます
apt パッケージ管理下のソースコードを手動修正するので、もしかしたら何か不具合あるかもしれません Caution
(controller ノードは関係なさそうだが、一応同様の処理をしておく)
(テストコードの修正は必要ない気もするが一応置き換えます)
解決手順
修正済みのソースコードを取得する
controller ノードで Neutron リポジトリを
git clone
するController any user
cd /path/to/work/dir git clone https://opendev.org/openstack/neutron.git cd neutron git reset --hard 2207b885449667a7bc377f427b9123165223dbde
- 最新のコミットでパッチをあてると動かなかったりするので修正しているコミットにピンポイントで戻っておく
compute ノードに配布する
手元の PC から
scp
で受け渡す(配布できればやり方はなんでもよい)scp -3 controller:/path/to/work/dir/neutron/neutron/plugins/ml2/drivers/linuxbridge/agent/arp_protect.py compute:~/ scp -3 controller:/path/to/work/dir/neutron/neutron/tests/unit/plugins/ml2/drivers/linuxbridge/agent/test_arp_protect.py compute:~/
- scp コマンドの謎オプション -3 - Qiitaでリモート間ファイル転送できる
compute ノードで一応確認
Compute any user
ls ~ arp_protect.py test_arp_protect.py ...
オリジナルコードのバックアップをとっておく
Controller Compute root user
cd /usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/linuxbridge/agent cp arp_protect.py arp_protect.py.bak cd /usr/lib/python3/dist-packages/neutron/tests/unit/plugins/ml2/drivers/linuxbridge/agent cp test_arp_protect.py test_arp_protect.py.bak
修正済みコードに置き換える
Controller root user
cp /path/to/work/dir/neutron/neutron/plugins/ml2/drivers/linuxbridge/agent/arp_protect.py /usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/arp_protect.py cp /path/to/work/dir/neutron/tests/unit/plugins/ml2/drivers/linuxbridge/agent/test_arp_protect.py /usr/lib/python3/dist-packages/neutron/tests/unit/plugins/ml2/drivers/linuxbridge/agent/test_arp_protect.py
Compute root user
cp ~/arp_protect.py /usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/arp_protect.py cp ~/test_arp_protect.py /usr/lib/python3/dist-packages/neutron/tests/unit/plugins/ml2/drivers/linuxbridge/agent/test_arp_protect.py
ファイル権限を修正しておく
Controller Compute root user
chown root:root /usr/lib/python3/dist-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/arp_protect.py chown root:root /usr/lib/python3/dist-packages/neutron/tests/unit/plugins/ml2/drivers/linuxbridge/agent/test_arp_protect.py
Linux Bridge Agent 再起動
Controller Compute root user
systemctl restart neutron-linuxbridge-agent
解決確認
- VM を起動している compute ノードの
/var/log/neutron/neutron-linuxbridge-agent.log
でエラーが止まっていれば OK
- VM を起動している compute ノードの
(気になる場合は Neutron のレポジトリを最新コミットに戻しておく)
Controller any user
cd /path/to/work/dir/neutron git reset --hard HEAD@{1}
git reflog
の履歴で戻っているので他にもいろいろ git 操作してしまっている場合はHEAD@{1}
ではなく適切に戻しましょう
関連記事一覧
- OpenStack Ussuriをマニュアルインストールしてみたメモ
- OpenStack Ussuriマニュアルインストールその1―環境構築編
- OpenStack Ussuriマニュアルインストールその2―Keystone編
- OpenStack Ussuriマニュアルインストールその3―Glance編
- OpenStack Ussuriマニュアルインストールその4―Placement編
- OpenStack Ussuriマニュアルインストールその5―Nova編
- OpenStack Ussuriマニュアルインストールその6―Neutron編
- OpenStack Ussuriマニュアルインストールその7―Horizon編
- OpenStack Ussuriマニュアルインストールその8―Cinder編
- OpenStack Ussuriマニュアルインストールその9―起動編
- OpenStack Ussuri 追加インストールその1―Octavia編
- OpenStack Victoriaをマニュアルインストールしてみたメモ
- OpenStack Tips
- Issues
- Openstack Issueその1―正常に見えるのに大量にネットワークエラーが…(当記事)
- Openstack Issueその2―VMと疎通がとれない…
- Openstack Issueその3―Horizon「どこかがおかしくなりました」
- Openstack Issueその4―セルフサービスネットワーク激遅問題(検証段階)