LoginSignup
36
36

More than 5 years have passed since last update.

Vagrant上のCoreOSでetcdを動かして別の3台でクラスタリングしてみた

Last updated at Posted at 2014-04-12

2014-04-13追記 お手軽に試したい方は @yungsang さんのVagrantfileをお勧めします

コメントにも書きましたが、現時点でCoreOSをvagrantで試すには、公式のVagrantfileを使うよりYungSang/coreos-clusterを使うのがお勧めです!

今度は動くところまでこぎつけました

「CoreOS + Vagrant に etcd を使ってクラスタを構築する」を試してみた - Qiitaの記事の後、CoreOS 入門 - Qiitaという素晴らしい記事が書かれました。よくわかってないまま試したら出来ませんでしたーという記事に対して、見るに見かねて書いて下さりありがとうございます。識者の知識を共有してもらえたという意味では、結果的には良かったです。

で、もうそのままでいいかなーとも思ったのですが、やっぱりVagrantで試してみたいと思って再挑戦してみました。元記事ではetcdはホストマシン(OSX)で動かしてCoreOS 3台をVagrantで動かすという構成だったのですが、etcdもVagrant上のCoreOSで動かせば簡単なのでは、と思いついたのでそれで試しました。

core-00というホスト名のVMで172.17.8.100:4001でetcdを動かして、core-01〜core-03の3台はcore-00のetcdに繋ぎに行きます。

IPアドレスは以下のように設定しています。

  • core-00: 172.17.8.100
  • core-01: 172.17.8.101
  • core-02: 172.17.8.102
  • core-03: 172.17.8.103

Vagrant上のCoreOSでetcdを動かす

簡単に試せるようにGitHubにプロジェクトhnakamur/coreos-etcd-vagrantを作りました。作ったと言ってもcoreos/coreos-vagrantをフォークしてちょっと変更しただけです。Cloud-Configの設定方法はCustomize with Cloud-Configを参照しました。

起動手順は以下の通りです。

git clone https://github.com/hnakamur/coreos-etcd-vagrant/
cd coreos-etcd-vagrant
vagrant up

Vagrantでさらに3台のVMを立ち上げてクラスタリングする

user-dataではcoreos.etcd.discoveryにcore-00のetcdのURLを指定しています。それ以外はuser-data.sampleから変更なしです。

git clone https://github.com/coreos/coreos-vagrant
cd coreos-vagrant
cat <<'EOF' > user-data
#cloud-config

coreos:
  etcd:
      discovery: http://172.17.8.100:4001/v2/keys/machines
      addr: $public_ipv4:4001
      peer-addr: $public_ipv4:7001
  units:
    - name: etcd.service
      command: start
    - name: fleet.service
      command: start
      runtime: no
      content: |
        [Unit]
        Description=fleet

        [Service]
        Environment=FLEET_PUBLIC_IP=$public_ipv4
        ExecStart=/usr/bin/fleet
EOF
NUM_INSTANCES=3 vagrant up

3台起動したら以下のようにfleetctlを実行してクラスタリングされていることを確認します。

$ vagrant ssh core-01
   ______                ____  _____
  / ____/___  ________  / __ \/ ___/
 / /   / __ \/ ___/ _ \/ / / /\__ \
/ /___/ /_/ / /  /  __/ /_/ /___/ /
\____/\____/_/   \___/\____//____/
core@core-01 ~ $ fleetctl list-machines -l
MACHINE                 IP      METADATA
b4e79fb3-a093-421e-a06d-7ae2f63cf7a8    172.17.8.103    -
681af189-b016-4d25-bd1b-fba970db540a    172.17.8.102    -
e436a060-0859-46c6-8ade-a5fc2ac508e5    172.17.8.101    -

うまく行きました!

試行錯誤したメモ

etcdを起動するVagrantfileではoverride-plugin.rbを古いバージョンに戻す必要があった

今回の再挑戦は、前回の記事「CoreOS + Vagrant に etcd を使ってクラスタを構築する」を試してみた - Qiitaのときにgit cloneしたcoreos/coreos-vagrantを使って作業していました。その後vagrant destroy -fでVMを削除して、フレッシュな環境でgit cloneもやり直してcoreos/coreos-vagrantの最新版にしたらCoreOSを起動してもetcdが起動されなくなってしまいました。

コミットaf12c67c7169ff303aa143346833fe1259a83013のoverride-plugin.rbではだめで、コミットadbbcef1af235336b9df7faf944764100e4cae2fのoverride-plugin.rbに戻せば動きました。ということで、https://github.com/hnakamur/coreos-etcd-vagrant/commit/65d3c79c8f5a123f793d9a7cbe9579ce68c94138 で古いバージョンに戻しています。

差分をきちんと理解したほうがいいのでしょうが、私の動機はCoreOSをちょっと触ってみたかっただけなので、そこまでは踏み込まないことにします。

vagrant upで起動しない時があった

vagrant upしたときにcore-01, core-02はすんなり起動したのにcore-03で接続タイムアウトになるという謎な現象も一度発生しました。

==> core-03: Waiting for machine to boot. This may take a few minutes...
    core-03: SSH address: 127.0.0.1:2204
    core-03: SSH username: core
    core-03: SSH auth method: private key
    core-03: Error: Connection timeout. Retrying...
    core-03: Error: Connection timeout. Retrying...
    core-03: Error: Connection timeout. Retrying...
    core-03: Error: Connection timeout. Retrying...
    core-03: Error: Connection timeout. Retrying...
    core-03: Error: Connection timeout. Retrying...
    core-03: Error: Connection timeout. Retrying...

あとしばらく放置していると勝手に?シャットダウンすることもありました。まあCoreOSはアルファ版ということで、私個人はすぐに使う予定もないので深追いしないことにします。

とりあえず変になった時はcore-00とcore01〜03の両方でvagrant destroy -fでVMを破棄して、core-00でvagrant up、core-01〜03でvagrant upで作りなおせばうまく行きました。

36
36
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
36