先日のMesos Meetup Tokyo #1でのLTで発表させていただ内容を実践的にした形でQiitaに投稿します。
RancherでMesosとMarathonやってみた!!の資料をベースとしています。
Rancher ServerとAgent環境を構築して、Mesos & Marathon環境も構築して、RancherのMesosのArchitecutreを考えてみたいと思います。
Rancher Server & Agent on GCP
今回は、Google Cloud Platformを利用して、Rancher Server 1台とAgentホスト 4台の環境を作成します。
※他のクラウドベンダー、オンプレミス環境でも構いません。
Compute Engineで以下の5インスタンスを作成します。
項目 | 入力概要 |
---|---|
ゾーン | asia-southeast1-a |
マシンタイプ | vCPUx1 |
ブートディスク | Ubuntu 14.04 LTS |
ファイアウォール | HTTP トラフィックを許可する、HTTPS トラフィックを許可するの両方をチェックします。 |
GCPでは、デフォルトでファイアウォールが設定されていて、ホスト間でのコンテナの通信が行えないため、
設定を変更する必要があります。
GCPのダッシュボードで、「ネットワーキング」-「ファイアウォール」を選択して、ファイアウォールルールを作成します。
名前は任意名、ソースIPの範囲は0.0.0.0/0、プロトコルとポートは全て許可とします。
今回はお試しということで、全許可にしています。
最後に「作成」ボタンをクリックします。
Rancher Serverの構築
rootパスワードの設定
GCPではrootのパスワードがデフォルトでは設定されていないので、まずはrootのパスワードを設定します。
5インスタンスに任意のパスワードを設定します。
$ sudo passwd root
Dockerのインストール
Dockerをインストールします。
前回の「Kubernetes on Google Cloud Platform by Rancher ~Install & Architecture~」と同様に1.12.6をインストールします。
(※特に理由はありません)
5インスタンスにDockerをインストールします。
$ curl https://releases.rancher.com/install-docker/1.12.6.sh | sh
.
.
.
Client:
Version: 1.12.6
API version: 1.24
Go version: go1.6.4
Git commit: 78d1802
Built: Tue Jan 10 20:26:30 2017
OS/Arch: linux/amd64
Server:
Version: 1.12.6
API version: 1.24
Go version: go1.6.4
Git commit: 78d1802
Built: Tue Jan 10 20:26:30 2017
OS/Arch: linux/amd64
.
.
.
Remember that you will have to log out and back in for this to take effect!
Rancher Serverのインストール
5インスタンスうちの1台に最新版のRancher Serverのコンテナをインストールします。
2017年6月現在Rancher Serverはv1.6.2となります。
$ sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server
対象のインスタンスの外部IPにポート8080でブラウザからアクセスします。
http://外部IPアドレス:8080/
1.「Got it」をクリックします。
2.下部メニューの言語選択から「日本語」を選択します。
3.上部メニューの「管理者」-「アクセスコントロール」を選択します。
4.「click here」をクリックします。
5.GitHubのログイン画面が表示されます。ログインします。
※GitHubのアカウントを持っていない場合は作成しましょう。
6.「Register a new Application」ボタンをクリックします。
7.赤枠箇所を入力し、「Register application」ボタンをクリックします。
8.「Client ID」および「Client Secret」が払い出されます。
9.GitHubから払い出された「クライアント ID」および「クライアント秘密キー」を入力して「保存」をクリックします。
10.「GitHubアカウントで認証」ボタンをクリックします。
11.Rancher側の画面が切り替わり「GitHubは有効です」と表示されます。
Mesos環境テンプレートの作成
1.上部メニュー「環境管理」を選択します。
2.「環境追加」をクリックします。
3.「名前」に任意の名前を入力します。ここでは「Mesos」とします。「環境のテンプレート」でMesosのアイコンを選択します。「作成」をクリックします。
4.上部メニューから「Mesos」を選択します。
5.「ホストを追加」をクリックします。
Rancher Agentのインストール
1.赤枠のコマンドをコピーして、残り4台にペーストし、「閉じる」をクリックします。
sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.2 http://RancherServer外部IP:8080/v1/scripts/F9EECE5AE8FBF581E48F:1483142400000:Bzx0M3N05gizRN4WkiJPSKtUp0
2.上部メニュー「インフラストラクチャー」から「ホスト」を選択します。
3.Rancher ServerとRancher Agentが連携し、約5分以内にMesos環境が構築されます。
4.上部メニュー「MESOS」-「概要」を選択します。
5.「Mesos UI」をクリックします。
自動的にブラウザが起動し、Mesos UIを利用できます。
Marathonのデプロイ
Rancherのカタログ機能を利用して、Marathonをデプロイします。
1.上部メニュー「カタログ」-「コミュニティ」を選択します。
2.Marathonの「詳細を見る」をクリックします。
3.「起動」をクリックします。
4.上部メニュー「インフラストラクチャー」から「ホスト」を選択します。
HOST4にデプロイされたことが確認できます。
※デプロイホストはRancherにより自動的に決まります。
http://host4の外部IPアドレス:8080/ にブラウザでアクセスすることでMarathon UIを利用できます。
以下構成となります。
MarathonによるNginxのスケールアウト
1.Marathonのコンテナがあるホストの外部IPとポート8080にブラウザでアクセスし、「Create Application」をクリックします。
2.IDに任意名を入力(ここではnginxとします)し、「Docker Container」を選択します。
3.「Image」にnginxと入力して、「Create Application」をクリックします。
4.nginxのイメージがデプロイされて、Runningであることを確認し、nginxをクリックします。
5.「Scale Application」をクリックします。
6.スケールする数を入力し、「Scale Application」をクリックします。
7.nginxがスケールされたことを確認します。
6.Rancher UIからも確認できます。
以下構成となります。
Mesos Architecture of Rancher
ホスト3台に、MesosスタックにMesos Master,Mesos Slave,Zookeeperのコンテナがデプロイされて、4台目以降のホストにはMesosスタックにMesos Slaveがデプロイされますが、各ホストへの配置はRancherにより自動で行われます。
MarathonやCHRONOS等のカタログは、スタックとしてまとめられて、Rancherにより自動的にホストにデプロイされます。
スタンドアロンのコンテナは、基本的に独立型コンテナスタックにデプロイされます。
どのホストにデプロイされるかはRancherにより自動的に決まります。
テンプレート選択するだけで、Mesos環境が簡単に構築でき、カタログを利用すれば、MarathonやCHRONOS等のMesos FrameworkもデプロイできるのでDC/OSような環境がすぐに構築できます。
RancherではMesos同様にK8S環境も簡単に構築できるので、「Kubernetes on Google Cloud Platform by Rancher ~Install & Architecture~」と合わせて、試してみましょう。