DRBD 9環境の構築をAnsibleでサクッと自動化する:DRBDの仕組みを学ぶ(16)(2/3 ページ)
DRBDを軸に、データを遠隔地にも即時複製して万が一の事態に備える「冗長化/高可用性システム」の構築テクニックを紹介する本連載。今回は、DRBDの最新版「DRBD 9」環境をOSSの環境構築自動化ツール「Ansible」を使って簡単に構築する方法をお届けします。
Ansibleの設定
続いて、Ansibleの設定を行っていきます。「DRBD 9-Ubuntu16.03-Ansible」というディレクトリを作成し、その中にAnsibleの実行に必要な「Playbook」などを配置します。
Ansibleの実行環境を確認
まず、正しくAnsibleが実行できる環境になっていることを確認しましょう。
Ansibleの対象ホストを記述する「ansible_hosts」というファイルを作成し、対象とする3台のIPアドレスを記述します。今回はそのままIPアドレスを記述しましたが、大規模な構成においては、グループ分けも可能です。
$ sudo vi ansible_hosts 192.168.0.101 192.168.0.102 192.168.0.103
pingモジュールを使ってAnsibleの疎通確認をします。pingに対して「pong」が帰ってくればOKです。
$ ansible -i ansible_hosts all -m ping 192.168.0.101 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.0.102 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.0.103 | SUCCESS => { "changed": false, "ping": "pong" }
ディレクトリ構成
今回構築するAnsibleのディレクトリ構成は以下の通りです(図2)。
「DRBD9-Ubuntu16.04-Ansible」ディレクトリ以下に構成ファイルを配置します。
「drbd9.yml」がメインのPlaybookとなります。Playbookの中で、DRBD 9とインターネット経由での時刻取得に使うNTP(Network Time Protocol)用の「roles」を呼び出して実行するように記述します。詳細は後述します。
rolesは、一定の役割を持たせて、それらの機能をコンポーネントとしてまとめておく設定ファイルです。今回は、DRBD 9をインストールするためのコードを記述したDRBD 9用のrolesと、NTPの最新版をインストールするコードを記述したNTP用のrolesを作成します。
それぞれのrolesディレクトリの中には「task」と「templetes」があります。taskはインストールなどの実際の処理を記述するファイルを格納するディレクトリで、templetesには差し替え用のファイルなどを配置するディレクトリとなります。tasks、templetesの他にも「vars」「defaults」なども使えますが、ここでは説明を割愛します。
続いて、個々の設定ファイルを解説します。
drbd9.yml
drbd9.ymlは前述した通り、メインのPlaybookファイルです。Ansibleを実行する際にはこのファイルを読み込んで、実行します。
--- - hosts: all user: ksawada sudo: yes roles: - ntp - DRBD 9
今回作成したdrbd9.ymlでは、全てのホストに対してユーザー名:ksawadaにsudoの許可を与えています。また、2つのrolesを呼び出して実行するように記述してあります。
このように、メインのPlaybookは非常にシンプルな内容です。Playbookを処理ごとに分割して、コンポーネントとしてまとめておけるrolesを使いこなすのがポイントです。コンポーネントとしてまとめておくと、構築を自動化する他のPlaybookを作る場合にも流用できます。
main.yml(DRBD 9用)
先ほど、rolesはDRBD 9用とNTP用の2つを作成すると説明しました。まず、DRBD 9用のrolesとして、「/roles/debd9/tasks/」ディレクトリにある「main.yml」を確認します。
--- - name: hosts Change template: src="roles/DRBD 9/templete/hosts" dest="/etc/hosts" - name: Lvm Create lvg: vg=drbdpool pvs=/dev/sdb1 - name: DRBD 9 Repository Add apt_repository: repo='ppa:linbit/linbit-DRBD 9-stack' - name: DRBD 9 & DRBD Manage Install apt: name={{item}} state=present update_cache=yes with_items: - drbd-utils - python-drbdmanage - drbd-dkms
DRBD 9用のmain.ymlには、DRBD 9をインストールするために必要な手順を記述します。
それぞれ「name」の行には、実行する処理の任意の項目名を記述します。どんな内容でも構いませんが、誰もが分かる明解なものにするのが望ましいでしょう。
「name: hosts Change」では、templatesディレクトリににあらかじめ用意した「hosts」ファイルを「/etc/hosts」に上書きする処理を記述しています。
「name: Lvm Create」では、/dev/sdb1を初期化して「drbdpool」というボリュームグループを作成する処理を記述しています。このボリュームはDRBD 9専用の領域として使われるものです。
「name: DRBD 9 Repository Add」では、DRBD 9とDRBD Manageをインストールするためのリポジトリを追加する処理を記述しています。同時にパッケージリストも最新に更新しています。
「name: DRBD 9 & DRBD Manage Install」では、DRBD 9とDRBD Manageをインストールする処理を記述しています。
hosts(DRBD 9用)
前述した変更用の「hosts」ファイルは、以下の内容で「/roles/debd9/template/」ディレクトリにあらかじめ用意しておきます。IPアドレスなどはお使いの環境に応じて適宜変更してください。
127.0.0.1 localhost 192.168.0.101 DRBD 9-1 192.168.0.102 DRBD 9-2 192.168.0.103 DRBD 9-3
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
障害時にサブサーバへ自動で切り替える「高可用性WordPressシステム」の作り方 前編
サービスを止めてはならない環境で活躍する冗長化支援ツール「DRBD」。今回は、CMSツールとして多くのWebサイトで利用されている「WordPressサーバ」の高可用性をDRBDで確保する方法を解説します。前編は、必要なソフトウェアのインストールと初期設定までを説明します。DRBD(Distributed Replicated Block Device)とは何か
障害監視ツールなどと一緒に使うことで、サービスの継続提供を助けるDRBD。Linuxカーネルに統合されている機能ですが、上手に使いこなしているでしょうか? 本連載では、DRBDの動作や使いどころを順を追って紹介していきます。ミラーリングツール「DRBD」によるデータ保護
「Heartbeat」の適切な導入によってHAクラスタを構成し、Linux上で動作しているサービスの可用性を上げることができます。続いて、肝心のデータそのものを保護できるツール「DRBD」について紹介しましょう。DRBD+iSCSIでサクッと作れる、Windows 10の「自動データ複製&冗長化システム」
DRBDを軸に、データを遠隔地にも即時複製して万が一の事態に備える「冗長化/高可用性システム」の構築テクニックを紹介する本連載。今回は、Windows 10/Windows Server環境の「自動データ複製&冗長化システムの作り方」を解説します。- DRBD+iSCSI夢の共演(前編)〜 Windowsドライブをミラーリングで保護 〜
Linux上で動作するオープンソースソフトウエア「DRBD」とiSCSIを組み合わせ、部門内のWindows端末のデータをバックアップするシステムを構築してみよう