ユーザ用ツール

サイト用ツール


サイドバー

プログレス合同会社

広告

Action disabled: source
server:docker:convoy

Convoy

データの永続化を行うため、Dockerのストレージドライバ兼バックアッププラグインConvoyを導入しています。

1.Convoyのインストール

DockerホストにGitHubからConvoyをインストールします。
DockerホストはCoreOSで稼働していますので、下記はcoreユーザーでの実行になります。

$ CONVOY_VER=0.5.0 …(1) $ CONVOY_URL=https://github.com/rancher/convoy/releases/download/v$CONVOY_VER $ CONVOY_FILE=convoy.tar.gz $ pushd /tmp $ wget $CONVOY_URL/$CONVOY_FILE $ tar xvf $CONVOY_FILE $ sudo cp -v convoy/convoy* /opt/bin …(2) $ popd
(1) 2017/11/07執筆時のバージョンです。最新バージョンはGitHubで確認してください。
(2) /opt/binは事前に作成済のディレクトリです。

2.Convoyの起動

インターネット上では、ループバックデバイスを作成しストレージ・バックエンドにdevicemapperを利用した記事が多いのですが、Dockerコンテナのフェイルオーバーを想定し、NFS上でのディレクトリ共有で行うことにします。
下記の起動/停止スクリプトを作成し、start/stopで起動/停止を行います。
(例)
/opt/systemd/docker/convoy.shに作成し、/opt/systemd/docker/convoy.sh startで起動します。

#!/bin/sh CONVOY_DIR=/var/docker/volume …(1) PROG=convoy CONVOY=/opt/bin/$PROG CONVOY_LOG=/var/log/$PROG.log CONVOY_PID=/var/run/$PROG.pid CONVOY_SOCKET=/var/run/convoy/convoy.sock CONVOY_OPTS="--drivers vfs --driver-opts vfs.path=$CONVOY_DIR" …(2) PLUGIN_DIR=/etc/docker/plugins PLUGIN_SPEC=$PLUGIN_DIR/convoy.spec …(3) [ ! -e $PLUGIN_DIR ] && mkdir $PLUGIN_DIR case "$1" in start) [ -e $CONVOY_PID ] && exit echo -e "\n*\n*** Start $PROG $(date) ***\n*\n" >> $CONVOY_LOG mkdir -p /var/run/$PROG echo "unix://${CONVOY_SOCKET}" > $PLUGIN_SPEC …(4) $CONVOY daemon $CONVOY_OPTS >> $CONVOY_LOG 2>&1 & echo $(pidof $CONVOY) > $CONVOY_PID ;; stop) [ ! -e $CONVOY_PID ] && exit kill $(cat $CONVOY_PID) rm -f $CONVOY_PID rm -f $PLUGIN_SPEC echo -e "\n*\n*** Stop $PROG $(date) ***\n*\n" >> $CONVOY_LOG ;; esac
(1) Convoyボリュームを配置するNFS上のディレクトリです。実際はシンボリックリンクを作成しています。
(2) NFSを使用する場合の起動パラメータです。
(3) DockerエンジンにConvoyを組み込む先のディレクトリです。
(4) DockerエンジンとUnixドメインソケットで連携させます。

3.ボリュームの作成

作成するボリューム名をwebdataとした場合の作成方法は下記になります。

$ sudo /opt/bin/convoy create webdata $ sudo /opt/bin/convoy mount webdata # 作成したボリュームを確認してみます $ sudo /opt/bin/convoy list

4.起動サービス定義

Systemd用の起動サービス定義ファイルは下記になります。

[Unit] Description = Docker Volume Plugin - Convoy Before = docker.service [Service] Type = oneshot ExecStart = /opt/systemd/docker/convoy.sh start ExecStop = /opt/systemd/docker/convoy.sh stop RemainAfterExit = yes [Install] WantedBy = default.target

server/docker/convoy.txt · 最終更新: 2017/11/08 by プログレス合同会社