Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
36
Help us understand the problem. What is going on with this article?
@hnakamur

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

More than 5 years have passed since last update.

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
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
hnakamur
sakura_internet
さくらレンタルサーバ、さくらのVPS、 さくらのクラウド、さくらの専用サーバなどのインターネットサービス・ITプラットフォームを提供しています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
36
Help us understand the problem. What is going on with this article?