Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

docker RAを使ってみる...

More than 3 years have passed since last update.

改訂履歴

2017/02/10 Linux-ha-japanで公開されているpacemaker1.1.15のリポジトリパッケージで再確認した為、内容を更新しました。


resourece-agentにあるdocker RAを利用してみました。
なお、確認は、CentOS7.3上でPacemakerのバージョンは、1.1.15、リソースエージェントは3.9.7を使っています。

準備

dockerをインストールしておきます。確認した時のdockerのバージョンは、1.13.1-rc2でした

[root@docker01 ~]# docker --version
Docker version 1.13.1-rc2, build 54f71fd

[root@docker01 ~]# ps -ef |grep docker
root       908     1  0 16:16 ?        00:00:01 /usr/bin/dockerd
root      1002   908  0 16:16 ?        00:00:00 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc
root      2116  1165  0 16:26 pts/0    00:00:00 grep --color=auto docker

今回は事前にdockerのイメージをローカルに用意しておく方式を取ります。
用意したイメージは、centos:latestです。

[root@docker01 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
remote              latest              7c4ab4ed16fd        4 days ago          312 MB
busybox             latest              7968321274dc        5 weeks ago         1.11 MB
centos              latest              67591570dd29        2 months ago        192 MB

内容

CLIファイルの準備

以下の内容でCLIファイルを作成しておきます。
なお、今回はstonithは考慮していません。(dockerのコンテナのSTONITHには、fence_dockerを利用する必要があります)

CLI.crm
property no-quorum-policy="ignore" \
        stonith-enabled="false" \
        startup-fencing="false" \

rsc_defaults resource-stickiness="INFINITY" \
        migration-threshold="1"

primitive container1 ocf:heartbeat:docker \
        params \
                name="test1" \
                run_opts="-t -i" \
                run_cmd="/bin/bash" \
                image="docker.io/centos:centos7" \
        op start interval="0s" timeout="90s" on-fail="restart" \
        op monitor interval="3s" timeout="30s" on-fail="restart" \
        op stop interval="0s" timeout="90s" on-fail="fence"

起動

Pacemaker(corosyncも)を起動します。
起動後、crmコマンドで先のCLIファイルを投入します。

[root@docker01 ~]# systemctl start pacemaker
[root@docker01 ~]# crm configure load update docker.crm 

[root@docker01 ~]# crm_mon -1 -Af
Stack: corosync
Current DC: docker01 (version 1.1.15-1.el7-e174ec8) - partition WITHOUT quorum
Last updated: Mon Feb 20 16:21:58 2017          Last change: Mon Feb 20 16:21:53 2017 by root via cibadmin on docker01

1 node and 1 resource configured

Online: [ docker01 ]

 container1     (ocf::heartbeat:docker):        Started docker01

Node Attributes:
* Node docker01:

Migration Summary:
* Node docker01:

[root@docker01 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
a77497bf8c80        centos:latest       "/bin/bash"         47 seconds ago      Up 46 seconds                           test1

エラー検知

とりあえず、起動したコンテナをkill(故障)してみます。

[root@docker01 ~]# docker kill test1
test1

[root@docker01 ~]# crm_mon -1 -Af
Stack: corosync
Current DC: docker01 (version 1.1.15-1.el7-e174ec8) - partition WITHOUT quorum
Last updated: Mon Feb 20 16:23:45 2017          Last change: Mon Feb 20 16:21:53 2017 by root via cibadmin on docker01

1 node and 1 resource configured

Online: [ docker01 ]


Node Attributes:
* Node docker01:

Migration Summary:
* Node docker01:
   container1: migration-threshold=1 fail-count=1 last-failure='Mon Feb 20 16:23:32 2017'

Failed Actions:
* container1_monitor_3000 on docker01 'not running' (7): call=7, status=complete, exitreason='none',
    last-rc-change='Mon Feb 20 16:23:32 2017', queued=0ms, exec=0ms

ちゃんと、エラー検知してますね。

次は、fence_dockerでSTONITHをしてみたいと思います。
- 2015/10/30補足:現状、Pacemakerでfence_dockerでのSTONITHを実行させる為には、dockerコンテナ内でPacemakerクラスタを構成する必要がある。(dockerコンテナ内のリソース故障~STONITH~ホストへfence_dockerでSTONITHを依頼)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away