[[OS]] >

* 目次 [#te8908c2]

#contents

* インストール [#qb484efb]

** DC/OS 1.8.0 Early Access [#v5aff7ba]

*** クラスタ on ベアメタル [#d6c7b8cd]

- [[Advanced DC/OS Installation Guide>https://dcos.io/docs/1.8/administration/installing/custom/advanced/]] を参考にインストールします。
- '''[[Advanced DC/OS Installation Guide>https://dcos.io/docs/1.8/administration/installing/custom/advanced/]]''' を参考にインストールします。
- 以下の例では、各ノードには[[CoreOS]]を用いてセットアップしています。
-- [[CoreOS]]の構築については、[[こちら>CoreOS]]のベアメタルの項をご参照ください。
-- DC/OSはインストール時 /tmp 以下に500MB程度の空き領域を必要としますが、CoreOSはデフォルトで物理メモリの半分程を tmpfs として /tmp にマウントしますので、物理メモリは2GB以上あるのがよいでしょう。諸事情によりもし動的に拡張したい場合には、以下の要領でリマウントします。
-- &ref(images/note.png,nolink);DC/OSはインストール時 /tmp 以下に500MB程度の空き領域を必要としますが、CoreOSはデフォルトで物理メモリの半分程を tmpfs として /tmp にマウントしますので、物理メモリは2GB以上あるのがよいでしょう。諸事情によりもし動的に拡張したい場合には、以下の要領でリマウントします。
 $ sudo mount -o remount,size=1G tmpfs /tmp/
- ホスト名とIPアドレスは以下の通りとします。
|~No.|~ホスト名|~IPアドレス|~役割|~備考|
|1|boot.dcos0.example.com|192.168.56.100|Bootstrap||
|2|m{1..3}.dcos0.example.com|192.168.56.10{1..3}|Master||
|2|m{1..3}.dcos0.example.com|192.168.56.10{1..3}|Master|奇数台|
|3|a{1..3}.dcos0.example.com|192.168.56.10{4..6}|Private Agent||
//|4|p{1..3}.dcos0.example.com|192.168.56.10{7..9}|Public Agent||

+ Bootstrapノードの構築
++ 設定のためのディレクトリ ''genconf'' を用意します。
++ 設定のためのディレクトリ ''genconf/'' を用意します。
 $ mkdir genconf
++ ''genconf/config.yaml'': 設定ファイルを作成します。以下の例では、リゾルバはGoogle DNSの設定になっていますが、必要に応じて内部DNSを設定してください。
#geshi(yaml,number){{
---
bootstrap_url: http://192.168.56.100:8080
cluster_name: 'dcos0'
exhibitor_storage_backend: static
ip_detect_filename: /genconf/ip-detect
master_list:
- 192.168.56.101
- 192.168.56.102
- 192.168.56.103
resolvers:
# - <private dns>
- 8.8.8.8
- 8.8.4.4
}}
++ ''genconf/ip-detect'' スクリプトを作成します。以下の例では、ある特定のインタフェイスに割り当てられたIPアドレスを返しています。
#geshi(bash,number){{
#!/usr/bin/env bash
set -o nounset -o errexit
export PATH=/usr/sbin:/usr/bin:$PATH
iface=enp0s8  # or eth0,...
echo $(ip addr show $iface | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1)
}}
++ DC/OSインストーラをダウンロードします。
 $ curl -O https://downloads.dcos.io/dcos/EarlyAccess/dcos_generate_config.sh
++ 次のコマンドでカスタマイズされたDC/OSビルドファイルを生成させます。
#geshi{{
$ 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.4cfc235259a2375c55-d70f6d2201e1b68343.tar
Running mesosphere/dcos-genconf docker with BUILD_DIR set to /home/core/genconf
====> EXECUTING CONFIGURATION GENERATION
Generating configuration files...
...
Package filename: packages/dcos-config/dcos-config--setup_72aea9b059dc73e84badcf9de190bc7db3d8a0da.tar.xz
Package filename: packages/dcos-metadata/dcos-metadata--setup_72aea9b059dc73e84badcf9de190bc7db3d8a0da.tar.xz
Generating Bash configuration files for DC/OS
}}
--- &ref(images/note.png,nolink);[[Docker]]が未セットアップの場合エラーとなりますので、あらかじめDockerをインストールしておきます。CoreOSではすでにDockerがプリインストールされています。
#geshi{{
$ sudo bash dcos_generate_config.sh
docker should be installed and running. Aborting.
}}
++ これらのインストールのためのリソースを Nginx で公開します。ポート番号は config.yaml で設定した ''bootstrap_url'' のそれと一致するように注意します。CoreOSではすでにdockerコマンドの実行にsudo権限は不要です。
#geshi{{
$ docker run -d -p 8080:80 -v $PWD/genconf/serve:/usr/share/nginx/html:ro nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
357ea8c3d80b: Pull complete 
0fc04568277e: Pull complete 
0bed9719ddcb: Pull complete 
Digest: sha256:d33834dd25d330da75dccd8add3ae2c9d7bb97f502b421b02cecb6cb7b34a1b6
Status: Downloaded newer image for nginx:latest
a4b4ef94853f6062dbec826a64934210c3426b9620c05a444dd33b8d7b02ad76
}}
+ Masterノードの構築
++ Master各ノードにSSHログインします。
++ 作業ディレクトリを用意し、Bootstrapノードからインストールスクリプトをダウンロードします。
#geshi{{
$ mkdir /tmp/dcos && cd /tmp/dcos
$ curl -O http://boot.dcos0.example.com:8080/dcos_install.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 15505  100 15505    0     0   828k      0 --:--:-- --:--:-- --:--:--  946k
}}
++ ''master''ロールを指定し、スクリプトを実行します。
#geshi{{
$ sudo bash dcos_install.sh master
Starting DC/OS Install Process
Running preflight checks
Checking if DC/OS is already installed: PASS (Not installed)
PASS Is SELinux disabled?
Checking if docker is installed and in PATH: PASS 
Checking docker version requirement (>= 1.6): PASS (1.10.3)
Checking if curl is installed and in PATH: PASS 
Checking if bash is installed and in PATH: PASS 
Checking if ping is installed and in PATH: PASS 
Checking if tar is installed and in PATH: PASS 
Checking if xz is installed and in PATH: PASS 
Checking if unzip is installed and in PATH: PASS 
Checking if ipset is installed and in PATH: PASS 
Checking if systemd-notify is installed and in PATH: PASS 
Checking if systemd is installed and in PATH: PASS 
Checking systemd version requirement (>= 200): PASS (229)
Checking if group 'nogroup' exists: PASS 
Checking if port 53 (required by spartan) is in use: PASS 
Checking if port 80 (required by adminrouter) is in use: PASS 
Checking if port 443 (required by adminrouter) is in use: PASS 
Checking if port 1050 (required by 3dt) is in use: PASS 
Checking if port 2181 (required by zookeeper) is in use: PASS 
Checking if port 5050 (required by mesos-master) is in use: PASS 
Checking if port 7070 (required by cosmos) is in use: PASS 
Checking if port 8080 (required by marathon) is in use: PASS 
Checking if port 8101 (required by dcos-oauth) is in use: PASS 
Checking if port 8123 (required by mesos-dns) is in use: PASS 
Checking if port 8181 (required by exhibitor) is in use: PASS 
Checking if port 9000 (required by metronome) is in use: PASS 
Checking if port 9942 (required by metronome) is in use: PASS 
Checking if port 9990 (required by cosmos) is in use: PASS 
Checking if port 15055 (required by dcos-history) is in use: PASS 
Checking if port 33107 (required by navstar) is in use: PASS 
Checking if port 36771 (required by marathon) is in use: PASS 
Checking if port 41281 (required by zookeeper) is in use: PASS 
Checking if port 42819 (required by spartan) is in use: PASS 
Checking if port 43911 (required by minuteman) is in use: PASS 
Checking if port 46839 (required by metronome) is in use: PASS 
Checking if port 61053 (required by mesos-dns) is in use: PASS 
Checking if port 61420 (required by epmd) is in use: PASS 
Checking if port 61421 (required by minuteman) is in use: PASS 
Checking if port 62053 (required by spartan) is in use: PASS 
Checking if port 62080 (required by navstar) is in use: PASS 
Checking Docker is configured with a production storage driver: PASS (overlay)
Creating directories under /etc/mesosphere
Creating role file for master
Configuring DC/OS
Setting and starting DC/OS
Created symlink from /etc/systemd/system/multi-user.target.wants/dcos-setup.service to /etc/systemd/system/dcos-setup.service.
}}
++ 全ノードのインストールが完了した後は、以下のExhibitorのWebUIにアクセスし、ZooKeeperアンサンブルが起動完了するのを待ちます。
 http://m1.dcos0.example.com:8181/exhibitor/v1/ui/index.html
+ Private Agent(旧Slave)ノードの構築
++ Masterノードの場合と同様に、作業ディレクトリを用意し、Bootstrapノードからインストールスクリプトをダウンロードします。
#geshi{{
$ mkdir /tmp/dcos && cd /tmp/dcos
$ curl -O http://boot.dcos0.example.com:8080/dcos_install.sh
...
}}
++ ''slave''ロールを指定し、スクリプトを実行します。
#geshi{{
$ sudo bash dcos_install.sh slave
Starting DC/OS Install Process
Running preflight checks
Checking if DC/OS is already installed: PASS (Not installed)
PASS Is SELinux disabled?
Checking if docker is installed and in PATH: PASS 
Checking docker version requirement (>= 1.6): PASS (1.10.3)
Checking if curl is installed and in PATH: PASS 
Checking if bash is installed and in PATH: PASS 
Checking if ping is installed and in PATH: PASS 
Checking if tar is installed and in PATH: PASS 
Checking if xz is installed and in PATH: PASS 
Checking if unzip is installed and in PATH: PASS 
Checking if ipset is installed and in PATH: PASS 
Checking if systemd-notify is installed and in PATH: PASS 
Checking if systemd is installed and in PATH: PASS 
Checking systemd version requirement (>= 200): PASS (229)
Checking if group 'nogroup' exists: PASS 
Checking if port 53 (required by spartan) is in use: PASS 
Checking if port 5051 (required by mesos-agent) is in use: PASS 
Checking if port 34451 (required by navstar) is in use: PASS 
Checking if port 39851 (required by spartan) is in use: PASS 
Checking if port 43995 (required by minuteman) is in use: PASS 
Checking if port 61001 (required by agent-adminrouter) is in use: PASS 
Checking if port 61420 (required by epmd) is in use: PASS 
Checking if port 61421 (required by minuteman) is in use: PASS 
Checking if port 62053 (required by spartan) is in use: PASS 
Checking if port 62080 (required by navstar) is in use: PASS 
Checking Docker is configured with a production storage driver: PASS (overlay)
Creating directories under /etc/mesosphere
Creating role file for slave
Configuring DC/OS
Setting and starting DC/OS
Created symlink from /etc/systemd/system/multi-user.target.wants/dcos-setup.service to /etc/systemd/system/dcos-setup.service.
}}
+ DC/OS WebUIにアクセスし、クラスタの動作を確認します。
 http://m1.dcos0.example.com/

*** ノードの再セットアップ [#pfde7a44]

- Agentノードの再起動などでIPアドレスが変更になる場合には、DC/OSを再インストールする必要があります。

+ 以前のインストールが残存している場合には、以下のコマンドで削除します。
#geshi{{
$ sudo -i /opt/mesosphere/bin/pkgpanda uninstall
$ sudo rm -rf /opt/mesosphere /etc/mesosphere
}}
+ 上記と同じ手順でノードを再セットアップします。

** DC/OS 1.7.0 [#e0f8cb13]

*** クラスタ on Vagrant [#za5969b5]

- いくつかの問題を回避するため、以下のバージョンを用いてセットアップすると良いでしょう。
++ [[dcos-vagrant-0.8.0>https://github.com/dcos/dcos-vagrant/releases/tag/v0.8.0]]
++ [[Vagrant]] 1.8.4: 1.8.5のバグ[[#7627>https://github.com/mitchellh/vagrant/issues/7627]]を回避するため
++ VirtualBox 5.0.x: Vagrant 1.8.4が5.1.x未対応のため
- 論理プロセッサは8つほど、メモリは16GB程度あった方が、様々なDCアプリケーションを試せるのではないかと思われます。

+ [['''Deploy DC/OS Vagrant'''>https://github.com/dcos/dcos-vagrant/blob/v0.8.0/docs/deploy.md]]に従い、インストールを進めます。
+ あらかじめ[[Vagrant]]とVirtualBoxをインストールしておきます。
-- &ref(images/ubuntu.png,nolink);Ubuntu 16.04の場合には、Vagrantのバージョンがやや古いため、[[Vagrantのサイト>https://releases.hashicorp.com/vagrant/]]から目的のバージョンのdebパッケージをダウンロードしインストールします。VirtualBoxについてもサイトの[[インストールマニュアル>https://www.virtualbox.org/wiki/Download_Old_Builds_5_0]]に従いインストールします。
+ 以下のVagrantプラグインをインストールします。vagrant-hostmanagerは必須ですが、vagrant-vbguestはオプションです。
#geshi{{
$ vagrant plugin install vagrant-hostmanager
...
$ vagrant plugin install vagrant-vbguest
...
}}
+ dcos-vagrant をダウンロードし、適当な場所に展開します。
#geshi{{
$ tar xvxf dcos-vagrant-0.8.0.tar.gz
...
}}
+ [[DC/OS Releases>https://dcos.io/releases/]]から1.7.0のインストーラ(dcos_generate_config.sh)をダウンロードし、展開したdcos-vagrantのルートディレクトリに置きます。
#geshi{{
$ cp dcos_generate_config.sh dcos-vagrant-0.8.0/
}}
+ dcos-vagrant-0.8.0/ に移動し、目的のバージョンの設定ファイルを有効化します。
#geshi{{
$ cd dcos-vagrant-0.8.0/
$ ln -s config-1.7.yaml etc/config.yaml
}}
-- インストールマニュアルでは、環境変数で指定する方法が記述されていますが、繰り返し試す場合にはシンボリックリンクが便利でしょう。
#geshi{{
$ export DCOS_CONFIG_PATH=etc/config-1.7.yaml
}}
+ 次にDC/OSクラスタの設定ファイルをコピーして有効化します。
#geshi{{
$ cp VagrantConfig.yaml{.example,}
}}
+ 繰り返しインポートされるベースboxをあらかじめダウンロードしておきます。
#geshi{{
$ vagrant box add https://downloads.dcos.io/dcos-vagrant/metadata.json
}}
+ デプロイします。クラスタらしくプライベートエージェントは複数ノードからはじめるとよいでしょう。
#geshi{{
$ vagrant up m1 a1 a2 p1 boot
}}
-- &ref(images/lightbulb.png,nolink);マシンリソースが厳しい場合には、最小構成からはじめてみます。様子を見ながらエージェントを追加していくとよいでしょう。
#geshi{{
$ vagrant up m1 a1 boot
...
$ vagrant up a2
...
}}

*** CLI [#d8f051d5]

- WebUIにある説明に従いインストールします。

+ 環境要件を満たすように各依存パッケージをインストールします。
-- &ref(images/ubuntu.png,nolink);Ubuntu 16.04では以下のようになります。
#geshi{{
$ python -V
Python 2.7.12
$ sudo apt-get install curl python-pip python-virtualenv virtualenv
...
}}
+ 指示の通り次のコマンド群を実行します。
#geshi{{
$ mkdir -p dcos && cd dcos && 
>   curl -O https://downloads.dcos.io/dcos-cli/install.sh && 
>   bash ./install.sh . https://m1.dcos && 
>   source ./bin/env-setup
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  5163  100  5163    0     0   2535      0  0:00:02  0:00:02 --:--:--  2535
Installing DC/OS CLI from PyPI...

Running virtualenv with interpreter /usr/bin/python2
New python executable in /home/alice/dcos/bin/python2
Also creating executable in /home/alice/dcos/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
[core.reporting]: set to 'True'
[core.dcos_url]: set to 'https://m1.dcos'
[core.ssl_verify]: set to 'false'
[core.timeout]: set to '5'

Modify your bash profile to add DCOS to your PATH? [yes/no] yes

Finished installing and configuring DC/OS CLI.

Run this command to set up your environment and to get started:
source /home/alice/dcos/bin/env-setup && dcos help
}}
+ 最後の出力内容に従い、コマンドを実行します。
#geshi{{
$ source /home/alice/dcos/bin/env-setup && dcos help
Command line utility for the Mesosphere Datacenter Operating
System (DC/OS). The Mesosphere DC/OS is a distributed operating
system built around Apache Mesos. This utility provides tools
for easy management of a DC/OS installation.

Available DC/OS commands:

	auth           	Authenticate to DC/OS cluster
	config         	Manage the DC/OS configuration file
	help           	Display help information about DC/OS
	marathon       	Deploy and manage applications to DC/OS
	node           	Administer and manage DC/OS cluster nodes
	package        	Install and manage DC/OS software packages
	service        	Manage DC/OS services
	task           	Manage DC/OS tasks

Get detailed command description with 'dcos <command> --help'.
}}
+ ログインしてみます。指示のURLにアクセスしログイン後に得たトークンをペーストし、CLIでもログイン可能であることを確認します。
#geshi{{
$ dcos auth login

Please go to the following link in your browser:

    https://m1.dcos/login?redirect_uri=urn:ietf:wg:oauth:2.0:oob

Enter authentication token: eyJ0eXAiOiJKV ...
Login successful!
}}
+ サービスの状態を確認してみます。
#geshi{{
$ dcos service
NAME           HOST      ACTIVE  TASKS  CPU  MEM  DISK  ID                                         
marathon  192.168.65.90   True     0    0.0  0.0  0.0   0f41da67-6fe9-4614-8f29-6f0f13098b81-0000
}}


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS