CoreOS + Vagrant に etcd を使ってクラスタを構築する

More than 5 years have passed since last update.


目的


  • fleet を触るため、ローカルでテスト環境を構築します。

  • デモ用は Vagrant 環境が無難なので、Vagrant で CoreOS のクラスタ構築をします。


注意


  • Docker の話は出てきません

  • etcd を使うために Golang 1.2 環境が必要です

  • ローカルに etcd を立てる必要があります。


ゴール

CoreOS を Vagrant で複数台起動しクラスタを構築し fleetctl list-machines で確認する


前提環境


  • Mac OS X 10.7.x

  • Vagnrat 1.5.1

  • VirtualBox 4.3.10

  • Golang 1.2.1


etcd をセットアップ

discovery 用の etcd をローカルに構築します

--addr で指定している IP アドレスは virtualbox のゲートウェイの IP アドレスです。

うまく行かない場合は ifconfig の IP を確認してみて下さい (うちでは vboxnet5 でした)。

$ git clone git@github.com:coreos/etcd.git

$ cd etcd
$ ./build
$ bin/etcd -addr 172.12.8.1:4001 -v


動作確認

$ curl http://172.12.8.1:4001/version

etcd 0.3.0+git


Vagrant で CoreOS クラスタを構築する

まずは vagrant 用のリポジトリがあるので落としてきます

$ git clone https://github.com/coreos/coreos-vagrant.git

$ cd coreos-vagrant

user-data.example があるのでそれをコピーして user-data を作ります

$ cp user-data.example user-data


user-data の変更

user-data をいくつか弄ります


  • discovery


    • 先ほど立てた etcd の url を指定します

    • machines という key を使う事にします



変更後の設定ファイルは以下の通りです。

#cloud-config

coreos:
etcd:
discovery: http://172.12.8.1: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


インスタンスの指定

デフォルトの Vagrantfile はクラスタが 1 に設定されているのでこれを 3 にしましょう

# -*- mode: ruby -*-

# # vi: set ft=ruby :

require_relative 'override-plugin.rb'

NUM_INSTANCES = 3


実行

vagrant を起動します

$ vagrant up

core-01 に ssh でログインします

$ vagrant ssh core-01

fleetctl list-machines でクラスタの一覧を確認します

$ fleetctl list-machines -l

MACHINE IP METADATA
46662e5e-c747-4413-84a6-25fa0be5a143 172.12.8.101 -
bffd29b2-b797-475e-8707-f541a30a6c5d 172.12.8.102 -
bcb16546-346c-4d63-9391-019ae09f6882 172.12.8.103 -

これでクラスタ構築完了です


まとめ

少し手間はかかりますが、無事クラスタを構築出来ました。

次に fleet を使ってデプロイしてみましょう。

fleet で CoreOS + Vagrant の Cluster にデプロイする - Qiita


参考