https://dcos.io/docs/1.7/administration/installing/custom/advanced/ を参考に DC/OS をセットアップしてみる
環境はいつものように DigitalOcean
CoreOS で master 3台、agent 1台
別 OS で良かったのかどうかわからないけど Bootstrap 用サーバーを Ubuntu で1台
Bootstrap サーバーのセットアップ
Bootstrap サーバーはセットアップ用のパッケージやスクリプトの配布サーバーです。
まずは Docker Engine のインストール
$ curl -fsSL https://get.docker.com/ | sh
任意の場所に genconf というディレクトリを作成
$ mkdir -p genconf
genconf/config.yaml を作成
--- bootstrap_url: http://: cluster_name: ' ' exhibitor_storage_backend: static ip_detect_filename: /genconf/ip-detect master_list: - - - resolvers: - 8.8.4.4 - 8.8.8.8
<bootstrap_public_ip> は master, agent の各サーバーからアクセス可能な bootstrap サーバーのIPアドレス
<your_port> は任意のポート、Docker で起動する nginx の publish port です
/genconf/ip-deect はこの後 genconf/ip-detect というスクリプトファイルを作成します
<cluster-name> は任意のクラスタ名
resolvers の DNS サーバーも他に自前のものがあればそれでも問題なし
genconf/ip-detect というファイルで自ホストのIPアドレスを取得するスクリプトを作成します
DigitalOcean なので metadata API から取得します
#!/bin/bash curl -fsSL http://169.254.169.254/metadata/v1/interfaces/private/0/ipv4/address
DC/OS installer のダウンロード
$ curl -O https://downloads.dcos.io/dcos/EarlyAccess/commit/14509fe1e7899f439527fb39867194c7a425c771/dcos_generate_config.sh
ここで dcos_generate_config.sh を実行します
$ sudo bash dcos_generate_config.sh Extracting image from this script and loading into docker daemon, this step can take a few minutes dcos-genconf.14509fe1e7899f4395-3a2b7e03c45cd615da.tar c56b7dabbc7a: Loading layer [==================================================>] 5.041 MB/5.041 MB cb9346f72a60: Loading layer [==================================================>] 22.73 MB/22.73 MB bc3f3016e472: Loading layer [==================================================>] 4.063 MB/4.063 MB 24e0af39909a: Loading layer [==================================================>] 129.5 MB/129.5 MB fd56668380be: Loading layer [==================================================>] 2.048 kB/2.048 kB 90755ec2374c: Loading layer [==================================================>] 415.4 MB/415.4 MB 58ae10cff6df: Loading layer [==================================================>] 4.608 kB/4.608 kB Loaded image: mesosphere/dcos-genconf:14509fe1e7899f4395-3a2b7e03c45cd615da Running mesosphere/dcos-genconf docker with BUILD_DIR set to /root/genconf ====> EXECUTING CONFIGURATION GENERATION Generating configuration files... Final arguments:{ ... } Package filename: packages/dcos-config/dcos-config--setup_caecbbeb5649b58b74977a1adbd6512480245c9a.tar.xz Package filename: packages/dcos-metadata/dcos-metadata--setup_caecbbeb5649b58b74977a1adbd6512480245c9a.tar.xz Generating Bash configuration files for DC/OS
次のような状態となります
. ├── dcos-genconf.14509fe1e7899f4395-3a2b7e03c45cd615da.tar ├── dcos_generate_config.sh └── genconf ├── cluster_packages.json ├── config.yaml ├── ip-detect ├── serve │ ├── bootstrap │ │ ├── 3a2b7e03c45cd615da8dfb1b103943894652cd71.active.json │ │ └── 3a2b7e03c45cd615da8dfb1b103943894652cd71.bootstrap.tar.xz │ ├── bootstrap.latest │ ├── cluster-package-info.json │ ├── dcos_install.sh │ ├── fetch_packages.sh │ └── packages │ ├── dcos-config │ │ └── dcos-config--setup_caecbbeb5649b58b74977a1adbd6512480245c9a.tar.xz │ └── dcos-metadata │ └── dcos-metadata--setup_caecbbeb5649b58b74977a1adbd6512480245c9a.tar.xz └── state 7 directories, 13 files
ここで genconf/serve を DocumentRoot として nginx でファイルを公開します
$ sudo docker run -d -p:80 -v $PWD/genconf/serve:/usr/share/nginx/html:ro nginx
Bootstrap サーバーのセットアップはこれで完了
Master サーバー3台のセットアップ
3台それぞれで実行します
作業ディレクトリの作成と移動
$ mkdir /tmp/dcos && cd /tmp/dcos
Bootstrap サーバーからセットアップ用スクリプトのダウンロード
$ curl -O http://: /dcos_install.sh
Master サーバーとしてセットアップされるように引数に master を指定して実行
$ sudo bash dcos_install.sh master
これでしばらく待っていれば完了です
大量のサービスが登録されています
$ systemctl | grep dcos dcos-adminrouter.service loaded active running Admin Router: A high performance web server and a reverse proxy server dcos-cosmos.service loaded active running Package Service: DC/OS Packaging API dcos-ddt.service loaded active running Diagnostics: DC/OS Distributed Diagnostics Tool Master API and Aggregation Service dcos-epmd.service loaded active running Erlang Port Mapping Daemon: DC/OS Erlang Port Mapping Daemon dcos-exhibitor.service loaded active running Exhibitor: Zookeeper Supervisor Service dcos-history-service.service loaded active running Mesos History: DC/OS Resource Metrics History Service/API dcos-marathon.service loaded active running Marathon: DC/OS Init System dcos-mesos-dns.service loaded active running Mesos DNS: DNS based Service Discovery dcos-mesos-master.service loaded active running Mesos Master: DC/OS Mesos Master Service dcos-minuteman.service loaded active running Layer 4 Load Balancer: DC/OS Layer 4 Load Balancing Service dcos-oauth.service loaded active running OAuth: OAuth Authentication Service dcos-spartan.service loaded active running DNS Dispatcher: An RFC5625 Compliant DNS Forwarder dcos.target loaded active active dcos.target dcos-adminrouter-reload.timer loaded active waiting Admin Router Reloader Timer: Periodically reload admin router nginx config to pickup new dns dcos-gen-resolvconf.timer loaded active waiting Generate resolv.conf Timer: Periodically update systemd-resolved for mesos-dns dcos-logrotate.timer loaded active waiting Logrotate Timer: Timer to trigger every 2 minutes dcos-signal.timer loaded active waiting Signal Timer: Timer for DC/OS Signal Service dcos-spartan-watchdog.timer loaded active waiting DNS Dispatcher Watchdog Timer: Periodically check is Spartan is working
Agent サーバーのセットアップ
Master とほぼ同じですが最後のスクリプト実行の引数が異なります
$ sudo bash dcos_install.sh slave
Exhibitor for ZooKeeper にアクセスしてみる
Master サーバーの port 8181 で Exhibitor が起動しています
DC/OS Dashboard へアクセスしてみる
Master サーバーの port 80 で DC/OS コンソールが起動しています
OAuth でログインします
Dashboard 画面(Marathon で1つのコンテナを実行中)
Services 画面では Marathon が稼働していることが確認できます
ここから Marathon のインターフェースにアクセスできます
Marathon のインターフェース、ここで Application として Docker コンテナなどを実行できます
Nodes では Agent ノードの状況が確認できます、ここでは1つしか Agent をセットアップしていないので1つしか見えません
Universe では簡単に(ワンクリック?)追加可能なサービスが並んでいます
System では DC/OS を構成する各コンポーネントの状況が確認できます
非常に沢山のコンポーネントがあります
- Admin Router
- Admin Router Reloader
- Admin Router Reloader Timer
- Cluster ID
- Diagnostics
- DNS Dispatcher
- DNS Dispatcher Watchdog
- DNS Dispatcher Watchdog Timer
- Erlang Port Mapping Daemon
- Exhibitor
- Generate resolv.conf
- Generate resolv.conf Timer
- Keepalived
- Layer 4 Load Balancer
- Logrotate
- Logrotate Timer
- Marathon
- Mesos Agent
- Mesos DNS
- Mesos History
- Mesos Master
- Mesos Persistent Volume Discovery
- OAuth
- Package Service
- Signal
- Signal Timer
Chronos を追加してみる
Universe の Chronos アイコンの下にある Install Package をクリックすると、確認が表示されます
再度 Install Package をクリックするとインストールが始まります、これだけでインストール完了です
しばらくすると Services に Chronos が追加されていることが確認できます
とりあえず動かすことはできたが調べるべきことが盛り沢山だ