‫この課題の要件は､ 前回の課題と非常によく似ています｡ コンテナを実行するとき､ あるいは事後的にコンテナのシェルに入る方法を知っておく必要があります｡
‫また､ Linuxのディストリビューションに関する基本的な知識を持っていて､ UbuntuとAlpineやCentOSは何が違うのかを知っていること｡
‫もちろん､ コンテナの運用も｡ そして､
‫エイリアスレコードとは何か､ どのように作成するかなど､ DNSレコードの仕組みの基本を説明します｡
‫DNS周りのテストをすることになるので､ それは便利ですね｡ 次の課題として､ DNSのラウンドロビンテストを行います｡
‫また､ DNSラウンドロビンとは､ 同じDNS名に応答するDNSエイリアスを持つ2つの異なるホストを持つことができるという概念です｡
‫googleのようなものを考えたとき｡ comは明らかに複数のサーバーを持っています｡
‫そこで､ 大企業が24時間365日稼働させるための手法の一つとして､ DNSラウンドロビンを採用し､
‫インターネット上で使用している名前の後ろにDNSレコードで複数のIPアドレスを実際に存在させるという戦略をとっています｡
‫さて､ コンテナでは､ 実はもっとシンプルになります｡
‫ここでは､ 実際にDocker Engine 1でこの機能を実現しています｡ 11歳以上
‫カスタムネットワークを作ると､ 実際にエイリアスを割り当てて､ 複数のコンテナが同じDNS名で応答できるようにする機能がありましたね｡
‫まず､ 新しい仮想ネットワークを作成し､ Elasticsearchという新しいイメージを使って2つのコンテナをセットアップします｡
‫Elasticsearchはこのコースの対象外ですが､ データストアとして人気が出てきていますね... まあ本当に検索用ですが｡
‫だから､ この名前なんです｡
‫そうですね｡
‫だから､ curlから叩くと､ 実はJSON形式になっているんです｡ これから行うのは､ このシナリオで本当に簡単に使えるので､
‫実際にクイックテストとして使ってみましょう｡
‫net-aliasコマンドを研究して確認したい｡
‫実はこれ､ docker runのオプションなんです｡
‫また､ コンテナを起動する際には､ コンテナ名だけでなく､ このコンテナを呼び出すための別のDNSエイリアスが必要であることを伝えることになります｡
‫これは､ Dockerを実運用で使用したことがあり､ 多くのコンテナを追加し始めた場合､ 同じ名前のコンテナを複数追加できないことに気づくという､
‫ちょっとした問題を回避するものです......｡
‫が､ ネットワーク上でDNSを解決するにはどうしたらいいのか､ もしかしたら同じアプリが2回インストールされているかもしれません｡
‫同じサーバーに開発環境とテスト環境があり､ その両方でDNSで検索したものを呼び出す必要があるのかもしれません｡
‫その制限を回避する方法がこれです｡
‫コンテナ作成時にエイリアスを追加し続けるだけで､ 実際にDNSのラウンドロビンと同じように応答できることが分かります｡
‫それで､ それらを起動したら､ アルパインのイメージを使ってnslookupをすると､
‫名前検索のためのDNSアドレスのリストが返ってくるだけです｡
‫その際､ 最初の2つのコンテナに割り当てたのと同じネットワークに--netで署名していることを確認してください｡
‫そして､ これらのコンテナの両方が同じ検索名に解決された後､ 実際にcurlコマンドを使用してelasticsearchサーバーの簡単な出力を得ることができます｡
‫そして､ これはelasticsearchのちょっとしたトリックで､ なぜこのデモで使うのがいいのか､ ということです｡ curlコマンドは､ 実はCentOSのイメージに付属しています｡
‫だから､ この場合はAlpineやUbuntuではなく､ CentOSを使えばいいだけなので簡単だし､ elasticsearchも9200番ポートで動作する｡
‫そして､ 簡単で短いJSONの結果を返すので､ 今回のテストでは手っ取り早いです｡
‫そして最後に､ elasticsearchは最初の起動時に､ 設定内で自分自身にランダムな名前をつけています｡
‫これは､ コンテナが指定しないと勝手に名前をつけてしまうのと同じようなものです｡
‫ここでできることは､ このcurlコマンドを何度も何度も実行すれば､
‫出力が... 同じ検索DNS名でcurlしているにもかかわらず...｡ を実行すると､ 2つの異なるelasticsearchコンテナの間を実際に行ったり来たりすることになります｡
‫イーブンではないかもしれません｡
‫正確に言うと､ 1つ→もう1つ→1つ→2つというようにはならない｡ DNSラウンドロビンの欠点は､
‫真のロードバランサーでないことです｡
‫私は､ これを貧乏人のローバランサーと呼んでいます｡
‫でも今回は､ DNSを組み込んだ仮想ネットワークを使って､ 同じ名前の複数のコンテナを簡単に使えるようにする方法を教えてくれるでしょう｡
‫そして､ いつものように次の講義に飛べば､ 私がやっているように歩いているところを見ることができます｡
‫しかし､ 少し異なるコマンドを入力したり､ 少し異なる方法でコンテナを起動することで､ 同じ最終結果を得ることができるかもしれません｡