OS >

目次

インストール

Chefクックブック

DC/OS 1.8.0 Early Access

クラスタ on ベアメタル

  1. ノードの基本セットアップ
    1. CoreOSの場合
      1. CoreOSの構築については、こちらのベアメタルの項をご参照ください。
        $ cat /etc/os-release | grep VERSION
        VERSION=1068.10.0
        VERSION_ID=1068.10.0
      2. note.pngDC/OSはインストール時 /tmp 以下に500MB程度の空き領域を必要としますが、CoreOSはデフォルトで物理メモリの半分程を tmpfs として /tmp にマウントしますので、物理メモリは2GB以上あるのがよいでしょう。諸事情によりもし動的に拡張したい場合には、以下の要領でリマウントします。
        $ sudo mount -o remount,size=1G tmpfs /tmp/
      3. lightbulb.pngもしVMを利用する場合には、クローンの上 /var/lib/coreos-install/user_data を編集して反映させれば、多くのノードを素早く作成できます。
    2. centos.pngCentOSの場合
      1. まず、System Requirements を参考に設定を行います。
      2. システムを最新に更新します。
        $ sudo yum update
        ...
        $ sudo reboot
        ...
        $ cat /etc/centos-release
        CentOS Linux release 7.2.1511 (Core)
        $ uname -r
        3.10.0-327.28.3.el7.x86_64
      3. ファイアウォールは最小構成ではロードされていませんが、もし有効な場合には無効にします。
        $ sudo systemctl stop firewalld && sudo systemctl disable firewalld
      4. 追加で必要なパッケージをインストールします。
        $ sudo yum install unzip ipset
      5. SELinuxを無効にし、nogroupグループを追加します。
        $ sudo setenforce Permissive
        $ sudo sed -i s/SELINUX=enforcing/SELINUX=permissive/g /etc/selinux/config
        $ sudo groupadd nogroup
      6. 次に、Install Docker on CentOS に従い、ディストリビューションのDockerではなく本家のそれをセットアップします。
      7. まず、OverlayFSモジュールを有効にします。
        $ sudo modprobe overlay
        $ sudo tee /etc/modules-load.d/overlay.conf <<-'EOF'
        overlay
        EOF
        $ lsmod | grep overlay
        overlay                42463  0
      8. Docker公式リポジトリを追加します。
        $ sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
        [dockerrepo]
        name=Docker Repository
        baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
        enabled=1
        gpgcheck=1
        gpgkey=https://yum.dockerproject.org/gpg
        EOF
      9. dockerサービスを追加します。
        $ sudo mkdir -p /etc/systemd/system/docker.service.d && sudo tee /etc/systemd/system/docker.service.d/override.conf <<- EOF
        [Service]
        ExecStart=
        ExecStart=/usr/bin/docker daemon --storage-driver=overlay -H fd://
        EOF
      10. すでに最新のDocker 1.12がリリースされていますが、DC/OSでは未サポートですので1.11以下のバージョンを指定してインストールし、サービスを起動させます。
        $ sudo yum install docker-engine-1.11.2-1.el7.centos docker-engine-selinux-1.11.2-1.el7.centos
        $ sudo systemctl start docker
        $ sudo systemctl enable docker
        Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
        $ sudo docker info
        ...
      11. /etc/yum.conf: 誤って最新版(1.12)に更新しないよう除外パッケージとして設定しておきます。
        1. exclude=docker-engine docker-engine-selinux
    3. ubuntu.pngUbuntu 16.04の場合(実験的)。DC/OSはまだ正式にUbuntuをサポートしていません。またDC/OSの実行には systemd を必要としますので、動作させることができる可能性があるのは15.04以降になります。
      1. 必要なパッケージをインストールします。
        $ sudo apt-get install tar xz-utils unzip curl ipset
      2. Dockerのチュートリアルに従い、Dockerをセットアップします。
      3. インストールスクリプトが正しく実行できるように、シンボリックリンクでパスを調整します。なお、インストールスクリプト実行時に getenforce コマンドを用いたチェックが失敗しますが(UbuntuではデフォルトでSELinuxをサポートしていませんので)支障ありません。
        $ sudo ln -s /bin/mkdir /usr/bin/mkdir
        $ sudo ln -s /bin/ln    /usr/bin/ln
        $ sudo ln -s /bin/tar   /usr/bin/tar
        $ sudo ln -s /usr/sbin/useradd /sbin/useradd
  2. Bootstrapノードの構築
    1. 設定のためのディレクトリ genconf/ を用意します。
      $ mkdir genconf
    2. genconf/config.yaml: 設定ファイルを作成します。以下の例では、リゾルバはGoogle DNSの設定になっていますが、必要に応じて内部DNSを設定してください。
      1. ---
      2. bootstrap_url: http://192.168.56.100:8080
      3. cluster_name: 'dcos0'
      4. exhibitor_storage_backend: static
      5. ip_detect_filename: /genconf/ip-detect
      6. master_list:
      7. - 192.168.56.101
      8. - 192.168.56.102
      9. - 192.168.56.103
      10. resolvers:
      11. # - <private dns>
      12. - 8.8.8.8
      13. - 8.8.4.4
    3. genconf/ip-detect スクリプトを作成します。以下の例では、ある特定のインタフェイスに割り当てられたIPアドレスを返しています。
      1. #!/usr/bin/env bash
      2. set -o nounset -o errexit
      3. export PATH=/usr/sbin:/usr/bin:$PATH
      4. iface=enp0s8  # or eth0,...
      5. 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)
      $ chmod 755 genconf/ip-detect 
      $ ./genconf/ip-detect 
      192.168.56.100
    4. DC/OSインストーラをダウンロードします。
      $ curl -O https://downloads.dcos.io/dcos/EarlyAccess/dcos_generate_config.sh
    5. 次のコマンドでカスタマイズされたDC/OSビルドファイルを生成させます。
      $ 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
      • note.pngDockerが未セットアップの場合エラーとなりますので、あらかじめDockerをインストールしておきます。CoreOSではすでにDockerがプリインストールされています。
        $ sudo bash dcos_generate_config.sh
        docker should be installed and running. Aborting.
    6. これらのインストールのためのリソースを Nginx で公開します。ポート番号は config.yaml で設定した bootstrap_url のそれと一致するように注意します。CoreOSではすでにdockerコマンドの実行にsudo権限は不要ですが、centos.pngCentOSでは必要となります。
      $ 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
  3. Masterノードの構築
    1. Master各ノードにSSHログインします。
    2. 作業ディレクトリを用意し、Bootstrapノードからインストールスクリプトをダウンロードします。
      $ 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
    3. masterロールを指定し、スクリプトを実行します。
      $ 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.
    4. 全ノードのインストールが完了した後は、以下のExhibitorのWebUIにアクセスし、ZooKeeperアンサンブルが起動完了するのを待ちます。
      http://m1.dcos0.example.com:8181/exhibitor/v1/ui/index.html
  4. Private Agent(旧Slave)ノードの構築
    1. Masterノードの場合と同様に、作業ディレクトリを用意し、Bootstrapノードからインストールスクリプトをダウンロードします。
      $ mkdir /tmp/dcos && cd /tmp/dcos
      $ curl -O http://boot.dcos0.example.com:8080/dcos_install.sh
      ...
    2. slaveロールを指定し、スクリプトを実行します。
      $ 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.
  5. DC/OS WebUIにアクセスし、クラスタの動作を確認します。
    http://m1.dcos0.example.com/

ノードの再セットアップ

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

DC/OS 1.7.0

クラスタ on Vagrant

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

CLI

  1. 環境要件を満たすように各依存パッケージをインストールします。
    • ubuntu.pngUbuntu 16.04では以下のようになります。
      $ python -V
      Python 2.7.12
      $ sudo apt-get install curl python-pip python-virtualenv virtualenv
      ...
  2. 指示の通り次のコマンド群を実行します。
    $ 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
  3. 最後の出力内容に従い、コマンドを実行します。
    $ 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'.
  4. ログインしてみます。指示のURLにアクセスしログイン後に得たトークンをペーストし、CLIでもログイン可能であることを確認します。
    $ 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!
  5. サービスの状態を確認してみます。
    $ 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