読者です 読者をやめる 読者になる 読者になる

$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

vagrantでCentOSのVMを立ちあげて、ネットワークが遅い時に試すこと

 最近PrePANのcarton 1.0化を進めるため、vagrant、chef、knife、AWSなどにはまりまくっております。今回はその中でvagrantにchefを適用しようとしたら全く終わらなくて、それについて調べたことについて話します。

 PrePANの開発環境でvagrantを使っていたりするのですが、そのVMに対してchefを適用してみたところ、固まってしまって動かない(厳密に言うとすこしずつしか動かない)という状態になりました。そこでいろいろ調べてみると、IPv6DNSの関係でネットワークの疎通が遅くなっていたという事がわかりました。

 詳しくは Slow networking (due to IPv6?) on CentOS 6.x · Issue #1172 · mitchellh/vagrant · GitHub を見てもらうと分かると思いますが、IPv6で名前解決に行く時にtimeoutまで固まってしまう(?)ということらしいです。この辺りそこまで詳しくないので、なんでそうなるかはよくわかっていません。

 修正する方法としてはVagrantfileに以下を追記するだけで大丈夫でした。

Vagrant.configure("2") do |config|
  config.vm.box       = "centos-6.4"

  # ...

  # IPv6とDNSでのネットワーク遅延対策で追記
  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--natdnsproxy1", "off"]
    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "off"]
  end
end