Mac + Virtualbox + CoreOS + etcd2 + fleet の基本設定(完)
CoreOSクラスタ構築 3台 + Worker 3台構成
前提
coreosクラスタ構築 3台構成
が出来ていること
目指す構成
アドレッッシング
環境 | hostname | IPアドレス | meta |
---|---|---|---|
MacbookAir 4GB | hostserver | xxx.xxx.xxx.xxx | role=services,cabinet=one |
virtualbox1 | coreos-01 | 192.168.0.10 | role=services,cabinet=one |
virtualbox2 | coreos-02 | 192.168.0.20 | role=services,cabinet=one |
virtualbox3 | coreos-03 | 192.168.0.30 | role=services,cabinet=one |
virtualbox4 | coreos-04 | 192.168.0.11 | role=workers,cabinet=two |
virtualbox5 | coreos-05 | 192.168.0.21 | role=workers,cabinet=two |
virtualbox6 | coreos-06 | 192.168.0.31 | role=workers,cabinet=two |
workの3台を新規に構築する
Mac + Virtualbox + CoreOS + etcd2 + fleet の基本設定(1)で作成したcoreosのイメージを3台分クローンを実施していきます。
※クローンの方法については、前回記事を参照ください
workerにcloud-config.ymlの設定を行っていきます。
vim cloud-config.yml
#cloud-config
hostname: coreos-04
write_files:
- path: /etc/environment
content: |
COREOS_PUBLIC_IPV4=192.168.0.11
COREOS_PRIVATE_IPV4=192.168.0.11
coreos:
update:
reboot-strategy: 'off'
etcd2:
proxy: on
name: coreos-04
heartbeat-interval: 1000
election-timeout: 5000
listen-client-urls: http://0.0.0.0:2379
initial-cluster: coreos-01=http://192.168.0.10:2380,coreos-02=http://192.168.0.20:2380,coreos-03=http://192.168.0.30:2380
fleet:
etcd_servers: http://127.0.0.1:2379
public-ip: 192.168.0.11
metadata: "role=workers,cabinet=two"
flannel:
interface: 192.168.0.11
units:
- name: etcd2.service
command: start
- name: fleet.service
command: start
- name: docker.service
command: start
- name: timezone.service
command: start
content: |
[Unit]
Description=timezone
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/ln -sf ../usr/share/zoneinfo/Japan /etc/localtime
- name: 10-static.network
runtime: false
content: |
[Match]
Name=enp0s3
[Network]
Address=192.168.0.11/24
DNS=8.8.8.8
DNS=8.8.4.4
ssh_authorized_keys:
- ssh-rsa ※ご自身の公開鍵
users:
- name: coreuser
passwd: $1$VIyj3wZe$HVVOEAc/H6a6YZGKCBWSD/
groups:
- sudo
- docker
ssh-authorized-keys:
- ssh-rsa ※ご自身の公開鍵
上記を「アドレッシング」にあるhostnameとIPアドレスを合わせます。
cloud-config.ymlの読み込み実施
sudo coreos-cloudinit -from-file=./cloud-config.yml
sudo cp -a cloud-config.yml /var/lib/coreos-install/user_data
sudo reboot
※cloud-initコマンドで反映されない部分があるので、直接user_dataも書き換えておきます。
etcdctl cluster-healthの確認
etcdctl cluster-health
member 59d0611e956db7d1 is healthy: got healthy result from http://192.168.0.20:2379
member 6fb0d145a155e8ee is healthy: got healthy result from http://192.168.0.30:2379
member 7a0fb1a3031d4c79 is healthy: got healthy result from http://192.168.0.10:2379
上記の通り、クラスタ化されているIPが表示されていれば問題ありません。
fleetctlの確認
ssh [email protected]
fleetctl list-machines --full
5b1639bd3cc347cf8fac0b9f597369e3 192.168.0.10 cabinet=one,role=services
6d28316711484f039eca4408627fdb0c 192.168.0.11 cabinet=two,role=workers
・・・本来であればクラスタ及びworkerも全部出てくるはずなのですが。。。
調べてみると以下の記事が出てきました。
また etcd の name 属性はユニークである必要があるので注意すること。
略するとマシンIDが使われる。マシンIDは /etc/machine_id で確認できる。マシンIDは環境を作成すると固定化されてしまうのでqemuのimgやvmを使いまわすとマシンIDが変わらず正しくクラスタが構築できないので注意すること。
rootをマウントして /etc/machine_id を削除し、再生成させるという方法もある。
なるほど。。。
というところで全てのサーバーにアクセスし、以下のコマンドを実行しました。
ssh 192.168.0.10
sudo mv /etc/machine-id /etc/machine-id.bk
sudo reboot
#この動作を全てのサーバーに
再度fleetctl の表示確認
fleetctl list-machines --full
MACHINE IP METADATA
4fb30e282c004f1794df9e91e56b14fb 192.168.0.31 cabinet=two,role=workers
5b1639bd3cc347cf8fac0b9f597369e3 192.168.0.10 cabinet=one,role=services
6d28316711484f039eca4408627fdb0c 192.168.0.11 cabinet=two,role=workers
703c849bcb924af5891ca5aae95e4e89 192.168.0.21 cabinet=two,role=workers
a6776a02935e4f01857364587836e338 192.168.0.20 cabinet=one,role=services
fffe34c5dcfa4aabbb1ba684101e521e 192.168.0.30 cabinet=one,role=services
6台分のサーバーが表示されるようになりました!
これでCoreOS+etcd2+fleetを使用したクラスタ化の構成が完了しました。
今回vagarantを利用しなかったことについて
にて既にvagrantのbox及びプロビジョニングファイルが配布されているのですが、当方にて以下の事象を確認しました。
1.$num_instanceを3で実行し、coreosをvagrant upで起動した場合問題なくクラスタの構成でUPされる
2.クラスタが正常になっているかの検証をするために、vagrant halt **で特定の端末を落とし、vagrant up | vagrant resumeで起動しても、IPアドレスが変わってしまう。※user_dataが保持されない
3.user_dataを作成するためにcloud-init/coreos-installしてもやはり揮発性があり検証が出来なかった。
私のvagrantの使い方がまずかったと思いますが、上記の事象がおきてしまったため断念しております。
※ただし、vagrantで利用できればcloud-config.ymlに記載されているIPアドレスなどを$public_ipv4など変数に置き換えることもできますので大変便利です。
This was intended but we should probably revise it if folks are depending on the old contents of /etc/environment. For EC2/OpenStack instances we moved the detection of $public_ipv4 and $private_ipv4 directly into coreos-cloudinit so that it would work gracefully with both EC2-style metadata services and config drive. The old /usr/share/oem/bin/coreos-setup-environment shipped with those images hung if no metadata service was available, breaking config drive based OpenStack systems.
次回
本構成を基礎構成として、fleetctlを使ったUnit、dockerの配置方法やfailoverの内容に触れていきたいと思います。
参考
Author And Source
この問題について(Mac + Virtualbox + CoreOS + etcd2 + fleet の基本設定(完)), 我々は、より多くの情報をここで見つけました https://qiita.com/xshsaku/items/3b1c92a60f3d7e401061著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .