最近すっかり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 》★書き換え
ホームページの制作(デザイン・コーディング・プログラミング)に加え、ネットショップの販売促進に関するアドバイスも致します。 20年以上に渡って実際にネットショップを運営した経験を生かし、聞きかじりではない実績を伴ったノウハウを、自分の言葉でお伝えいたします。 プログラミングの経験は30年以上。HTML、CSS、JavaScript、TypeScript、Vue、NuxtJS、Node.js、MySQL、MongoDB、Elasticsearch、WordPress、PHP、Docker、Electronなど、幅広く対応します。
コメント