kakine というOpenStackerには便利なツールがあり、ノリノリでセキュリティグループを20件ほど定義していたのだが。
いざ適用しようとしたら以下のようなエラーが出たのであった。怖い...何者なんだ...
$ bundle exec kakine apply -t pepabo NeutronError:Quota exceeded for resources: ['security_group']
OpenStackの様々なQuota
実は、AWSでいうインスタンスの数の制限とか、セキュリティグループは100件までですよとか、そういうアレがOpenStackにも存在する。詳細は以下のドキュメントを眺めるといいと思う。
- Configuration options - OpenStack Configuration Reference - havana
- クォータの管理 - OpenStack 管理ユーザーガイド - カレント
今回は、セキュリティグループ周りのQuotaを上げるのだが、セキュリティグループはNovaとNeutronの両方に項目があるのでややこしい。。
今回僕が出くわした設定は security_group_api=neutron なので、Neutron側の設定の変更だけで済むと思われる。
気になるならNova側も変えましょう...という感じで...
ということで設定を変える
具体的には
- quota_security_group - 1テナントで作成できるSGの数
- quota_security_group_rule - 1つのSG内に作成できるルールの数
これらがそれぞれデフォルト 10(!) / 100 なのを、 25 / 150 とかにする。
/etc/neutron/neutron.conf の、 [quota] ディレクティブの下の以下のコメントの辺を編集。
# number of security groups allowed per tenant, and minus means unlimited # quota_security_group = 10 +quota_security_group = 25 # number of security group rules allowed per tenant, and minus means unlimited # quota_security_group_rule = 100 +quota_security_group_rule = 150 # default driver to use for quota checks # quota_driver = neutron.db.quota_db.DbQuotaDriver ...
Novaの場合も、 /etc/nova/nova.conf に似たような項目がある。
あとは(novaと)neutronのAPIデーモンを再起動すればOK。
コマンドで確認
$ neutron quota-show +---------------------+-------+ | Field | Value | +---------------------+-------+ | floatingip | 50 | | network | -1 | | port | -1 | | router | 10 | | security_group | 25 | | security_group_rule | 100 | | subnet | -1 | +---------------------+-------+
反映されています。よかったですね。
たぶん neutron quota-update とかでもいいんだけど、設定ファイルを構成管理ツールなどであれすれば履歴管理もできて便利、ということでこっちのやり方を紹介した。
なお、
セキュリティグループが増えれば増えるほど、当然 compute node 上に自動生成される iptables の様子も複雑怪奇になるので、なんかパフォーマンスとかの影響が出るかもしれない。何かしらの形で計測して値を調整しましょう。