Linode(VPS)のCoreOSでDocker Swarm環境を構築する手順

最近すっかりDockerにはまっています。
すでに稼働中のサービスに新たな機能を追加したいときにも、コンテナを追加したり、入れ替えたりすることで対応でき、もし不具合が見つかっても、サクッと元に戻せるフットワークの軽さがとても気に入ってます。

Linodeという格安のVPSを利用することが多いのですが、LinodeのCoreOs(ContainerOS)で、Docker Swarm を使用できるようにするまでの手順をここにまとめておきます。

Linodeについて

ざっくりLinodeのサービスについて紹介しますと、こんな感じでしょうか。

  • VPSサービス
  • アメリカのサービス
  • 管理画面等は英語(英語が苦手な私でも使用できています)
  • ストレージはすべてSSD!
  • データセンターは日本にもある(距離によるレスポンス悪化の心配無用)
  • 費用:だいたいconohaさんの半額くらい(とてもお値打ち)
  • 基本的に時間課金
  • 通信量に制限はあるが、問題になる場面はほぼなさそう
  • 別ストレージをマウントできる。デタッチして別のマシンにマウントし直すことも可能。これが地味に便利

ご興味ありましたら、以下のリンクからどうぞ

SSD Cloud Hosting & Linux Servers – Linode

Linode(仮想マシン)を追加する

仮想マシンのことをLinodeと呼ぶようです。
仮想マシンのスペックとデータセンターを選択して追加します。

追加されたマシンをクリックすると、詳細を編集することが出来ます。RebuildメニューでOSを指定することが出来ます。

Container OSを選択し管理者用のパスワードを入力して、マシンをビルドします。

尚、CoreOSは、root権限でのログインが出来なくなっています。先程のパスワードを使ってcoreユーザーとしてログインします。root権限が必要な作業はsudoを使用します。

swap disk を削除する

CoreOSはswap diskを使いませんので、swap diskを削除します。
Linodeのダッシュボード( Linodes → dashboard → disks )を使ってswap diskを削除できます。swap diskのサイズ分だけ余裕が出来ますで、OSをインストールしたパーティションを拡大します。disksのところにある「Edit」からパーティションサイズの変更ができます。

起動する

Bootボタンをクリックすると、マシンが起動します。
しばらく待ってからSSHでログインします。
(※rootではなく、coreユーザとしてログイン)

ネットワークの設定をする

Linodeは自動的にネットワークの指定が行われるのですが、CoreOSだけは手動で設定が必要です。(Injentionによる特殊な起動方法のため)

sudo vi /etc/systemd/network/05-eth0.network

以下のように設定しています。
ダッシュボードの Remote Access でIPアドレスを確認できます。
複数ノードでの運用をする場合は、このページでprivate IP を追加してください。

[Match]
Name=eth0

[Network]
DHCP=no
IPv6PrivacyExtensions=false

# DNS resolvers (Google)
DNS=8.8.8.8 2001:4860:4860::8888 8.8.4.4 2001:4860:4860::8844

# IPv4 gateway and primary address.
Gateway=《 Default Gateways 》← ★書き換え
Address=《 Public IPs 》/24 ← ★書き換え

# Add a private address:
Address=《 Private IPs 》/17 ← ★書き換え

ホスト名を設定する

sudo hostnamectl set-hostname 《 Your Host Name 》★書き換え

自動アップデート(再起動)を停止する

CoreOSは、自動でOSのアップデートが行われて再起動します。まるでWindows10のように。

それで問題のないサービスならば良いのですが、再起動のタイミングをコントロールしたい場合は、自動アップデートのサービスを停止しておきます。

sudo systemctl stop update-engine

再起動すると、この設定は元に戻って自動アップデートが再開します。
OSの再起動をした際には、再度サービスを止めてやる必要があります。
(Linode の CoreOS では、あいにくIngectin を編集することが出来ません)

最新版にアップデートしたいときは、以下のようにします。

sudo systemctl start update-engine
sudo update_engine_client -check_for_update

Docker Swarmを開始する

マネージャ用のマシンで以下のコマンドを実行します。
複数ノードで運用する場合は、「–advertise-addr」オプションを使って、マスターノードのプライベートIPアドレスを指定します。

docker swarm init --advertise-addr 《 IP Adress 》★書き換え

このDocker Swarmに接続するための命令が表示されますので、保存しておきます。他のマシンでこの命令を実行することで、全体をひとつのDockerマシンのように使用することが出来るようになります。

# 例 他のノードで実行
docker swarm join --token SWHTKN-1-696760vjwi2flrrs75ay5x497tw5kxaihjieetqlw7xkh4pm2q-7946o5bzv3fw1o96r8nsdqf52 xxx.xxx.xxx.xx:2377

overlay ネットワークを設定します。overlayネットワークを使用することで、特別な準備なしに別ノードのコンテナ同士で通信を行うことができます。

docker network create --driver overlay 《 Network Name 》★書き換え

シェアする

  • このエントリーをはてなブックマークに追加

フォローする