忍者ブログ

インフラ構築手順書

はじめてのインフラ、サーバ構築時に役に立つように構築手順情報をまとめました。


[PR]

広告 

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



PaceMaker+DRBD構築5 【MySQL設定】

広告 

PaceMaker+DRBD構築5 【MySQL設定(ノード1)】

対象:DBサーバ(1台)
Heartbeatによる冗長化構成を行う場合のMysql設定を記述する。
ここで説明する構築手順はプライマリ側のノード1でのみで行う。

my.cnfの基本設定

DRBDのプライマリがノード1にあることを確認する。roが[Primary/Secondary]となっていることを確認。
# cat /proc/drbd
version: 8.4.2 (api:1/proto:86-101)
GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by root@dkpdb-01, 2012-11-06 15:33:13
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:4718628 nr:0 dw:4718628 dr:86838 al:1309 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
※roが[Secondary/ Primary]となっている場合は、別ノードがDRBDのプライマリとなっている。

/dev/drbd0がマウントされていない場合は、/dbにマウントする。
# mount -t ext4 /dev/drbd0 /db
my.cnfをレプリケーションディレクトリ(/db/mysql)上に配置し、/etc/my.cnfにリンクを張る。
# mkdir /db/mysql -p
# ln -s /db/mysql/my.cnf /etc/my.cnf


my.cnfの基本設定
実メモリが4GB以上であることを前提とする。
# vi /etc/my.cnf
 [mysqld]
##---- 基本設定 ------------------------
port            = 3306
socket          = /opt/app/mysql/tmp/mysql.sock
back_log = 50 
default-character-set = utf8
#skip-character-set-client-handshake

##---- 制限 ------------------------
max_connections = 100
max_connect_errors = 10
wait_timeout = 28800

##---- チューニング ------------------------
table_open_cache = 2048
max_allowed_packet = 16M
binlog_cache_size = 1M
max_heap_table_size = 64M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 4M
join_buffer_size = 4M
thread_cache_size = 8
thread_concurrency = 8
query_cache_type = ON
query_cache_min_res_unit = 4K
query_cache_size = 64M
query_cache_limit = 2M
key_buffer_size = 32M
tmp_table_size = 64M
thread_stack = 192K
#skip-bdb
skip-name-resolve 

##---- ストレージエンジン ------------------------
default-storage-engine = INNODB
#default-table-type = INNODB
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 2G
innodb_data_file_path = ibdata1:10M:autoextend
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 8M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120

# LOG関連
log-bin=mysql-bin
binlog_format=mixed
expire-logs-days=7
slow_query_log
long_query_time = 2
log-queries-not-using-indexes
log-error=/db/mysql/logs/mysqld.log

server-id = 1
ft_min_word_len = 4
transaction_isolation = REPEATABLE-READ

#Function対応(Function作成時のみ)
#log_bin_trust_function_creators=1

#Myisam関連
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover

※「skip-character-set-client-handshake」は脆弱性の根源であるためコメントアウトする


データベースの初期化と確認

データベースの初期化 mysql_install_dbスクリプトはmysqlデータベースにuser、db、host、tables_priv、columns_privテーブルを作る
# mkdir /db/mysql ; cd /db/mysql/
# /opt/app/mysql/scripts/mysql_install_db  --user=mysql --basedir=/opt/app/mysql/
※mysql_install_dbは実行したディレクトリにdataディレクトリを作成される。


ディレクトリ所有者の変更
# /opt/app/mysql/tmp/
# chown -R mysql:mysql  /opt/app/mysql/.
# chown -R mysql:mysql /db/mysql/data/
Mysqlログディレクトリと運用を考慮して、/var/log/にシンボリックリンクを作成する
# mkdir /var/log/mysql 
# ln -s /var/log/mysql /db/mysql/logs 
# chown mysql:mysql /var/log/mysql


自動起動設定
Mysql起動スクリプトを/etc/init.d/に配置するが、mysqlの起動はHeatbeatで行う。
[chkconfig --list]コマンドでmysqlのランレベル2,3,4,5が[off]になっていることを確認する。
※このスクリプトはHeatBeatでは利用しないが、手動起動用として利用する。
# cd /usr/local/src/mysql-5.5.25a
# cp support-files/mysql.server /etc/init.d/mysqld
# chmod 755 /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld ;chkconfig mysqld off
# chkconfig --list|grep mysql
mysqld          0:off   1:off   2:off   3:off   4:off   5:off   6:off


MySQLのerrorログとSlow_queriesのログローテート
/var/log/mysql/mysqld.log /var/log/mysql/log_slow_queries.log {
     missingok
     weekly
     dateext
     rotate 48
 }


MySQLの手動起動確認
・MySQLの起動確認
# /etc/rc.d/init.d/mysqld start
Starting MySQL                                             [  OK  ]

・ログの確認
起動できない場合はログを確認する
# view /var/log/mysql/mysqld.log




PaceMaker+DRBD構築5 【MySQL設定(ノード2)】

ここで説明する手順はDRBDのセカンダリ側のノードのみで行う。
※DRBDのスイッチオーバはノード1で行う。

DRBDのスイッチオーバ

ノード1のDRBDをセカンダリにする(ノード1上で実行)
# drbdadm secondary all

ノード2のDRBDをプライマリにする(ノード2上で実行)
# drbdadm primary all

/dev/drbd0を/dbにマウントする(ノード2上で実行)
# mount -t ext4 /dev/drbd0 /db

Mysqlログディレクトリ作成
Mysqlログディレクトリと運用を考慮してシンボリックリンクを作成する
# mkdir /var/log/mysql 
# chown mysql:mysql /var/log/mysql

自動起動設定
Mysql起動スクリプトを/etc/init.d/に配置するが、mysqlの起動はHeatbeatで行う。
[chkconfig --list]コマンドでmysqlのランレベル2,3,4,5が[off]になっていることを確認する。
※このスクリプトはHeatBeatでは利用しないが、手動起動用として利用する。
# cd /usr/local/src/mysql-5.5.25a
# cp support-files/mysql.server /etc/init.d/mysqld
# chmod 755 /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld ;chkconfig mysqld off
# chkconfig --list|grep mysql
mysqld          0:off   1:off   2:off   3:off   4:off   5:off   6:off


MySQLのerrorログとSlow_queriesのログローテート
/var/log/mysql/mysqld.log /var/log/mysql/log_slow_queries.log {
     missingok
     weekly
     dateext
     rotate 48
 }




PaceMaker+DRBD構築5 【Mysqlインストール後の整備】

MySQLをインストールした後に、基本セキュリティ設定やDB作成を行う。

Mysqlの簡易セキュリティ設定

MySQLのインストール直後は、特権ユーザroot にパスワードが設定されていないので、rootのパスワード設定、不要なアカウントとDB削除する必要があります。

環境変数の設定
mysql_secure_installationを実行する前に、MySQLのバイナリファイルのパスを通す必要がある。
# export PATH="$PATH:/opt/app/mysql/bin/"

簡易セキュリティ設定(mysql_secure_installation)
# /opt/app/mysql//bin/mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):Enter
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

※赤字の箇所を入力

ログインの確認
変更したパスワードでログインできることを確認する
# /opt/app/mysql/bin/mysql -p



Heartbeatのヘルスチェック用DB作成

Mysqlを起動した状態でDBとTabaleを作成する。
Heartbeatのヘルスチェック用DB作成
・Heartbeat用DB:chk_db
・Heartbeat用ユーザ:chk_user
・パスワード(仮):7h9_dbts
#/opt/app/mysql/bin/mysql
mysql>create database chk_db ;
mysql> grant Select on chk_db.* to chk_user@localhost identified by '7h9_dbts';


muninでMysqlの情報を取得する場合に下記の権限も付与する
/opt/app/mysql/bin/mysql
mysql> grant Select on mysql.* to chk_user@localhost identified by '7h9_dbts';
mysql> grant  PROCESS,SUPER,REPLICATION CLIENT on *.* to chk_user@localhost identified by '7h9_dbts';


HeartBeatのヘルスチェック用Table作成
mysql>CREATE TABLE `chk_tbl` (
  `chk` varchar(2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
※HeartbeatのヘルスチェックはTableの存在の有無のみをチェックしているので、カラム名は任意です。



PaceMaker+DRBD構築 の目次

01. PaceMaker+DRBD構築  【PaceMakerのインストール】
02. PaceMaker+DRBD構築  【DRBDのインストール】
03. PaceMaker+DRBD構築  【DRBDの設定】
04. PaceMaker+DRBD構築  【MySQLインストール】
05. PaceMaker+DRBD構築  【MySQL設定】
06. PaceMaker+DRBD構築  【リソース登録】
07. PaceMaker+DRBD構築  【運用/障害復旧】


・おすすめ書籍
[Linux-DB システム構築/運用入門 ]のECサイト価格横断比較と評価
HAクラスタ構築のおすすめ書籍


拍手[0回]



PaceMaker+DRBD構築6【リソース登録】

広告 

PaceMaker+DRBD構築6 【リソース登録】

DRBDの設定まで終わったら、次はPaceMakerのリソース登録です。
リソース登録するためにはcrmコマンドやLCMCなど登録できますが、ここではファイルにリソースを記述し取り込む方法で行います。


PaceMakerのリソース登録情報

Mysqlリソース情報
項目
インストールディレクトリ /opt/db/mysql/
DBデータディレクトリ /db01/mysql/data/
Check用DB chk_db
Check用DBユーザ chk_user
Check用DBパスワード passwd
Check用Table chk_tbl

リソース設定のポイント
・リソース設定
項目リソースエージェント備考/今回の設定値
ディスクのチェック ocf:pacemaker:diskd DRBDのデバイス領域:/dev/sdb
DRBDのメタディスク領域:/dev/sda (Internal)
DRBDリソースの設定 ocf:linbit:drbd DRBDリソース名:rdb01
ファイルシステムのリソース設定 ocf:heartbeat:Filesystem デバイス:/dev/drbd0
ディレクトリ:/db
メール通知リソースの設定 ocf:heartbeat:MailTo 通知先:hoge_system@ml01.hoge.hoge.jp
Mysql監視リソースの設定 ocf:heartbeat:mysql ・DBデータディレクトリ
 "/db01/mysql/data"
・Mysql設定ファイル
 "/etc/my.cnf"
・socket
 "/tmp/mysql.sock"
・pid
 "/opt/db/mysql/mysqld.pid"
・ログ
 "/var/log/mysql/mysqld.log"
・パラメータ
 "--ledir=/opt/db/mysql/bin --basedir=/opt/db/mysql"
・ヘルスチェック情報
 ユーザ/パスワード "chk_user"/"passwd"
 ヘルスチェックTable "chk_db.chk_tbl"
Ping監視リソースの設定 ocf:pacemaker:pingd Ping先:172.18.56.254 172.18.56.73 172.18.56.74
VIPリソースの設定 ocf:heartbeat:IPaddr2 VIP:172.18.56.80
VIP重複設定の検知 ocf:heartbeat:VIPcheck 監視VIP:172.18.56.80
※/dev/sdbは、DRBDディスクのマウントポイントである。
# tune2fs -l /dev/sdb
 省略
   Filesystem volume name:   
   Last mounted on:          /db
   Filesystem UUID:          dccf88f5-b49d-495b-b017-33b7ccdceac8
   Filesystem magic number:  0xEF53
 省略

・リソースのグループ、リソース間の制約・順序設定
 group、colocation 、orderで設定

・マスタースレーブのリソース定義
 msで設定


Pachemakerのリソース登録手順

■Pachemakerのリソース登録用ファイルの作成
下記ファイルをテンプレートとして、個別の値を変更するだけでPacemakerにDRBDとMysqlをリソースとして登録でき、簡単に冗長化ができます。
# vi mysql_setup.crm
primitive prm_diskd ocf:pacemaker:diskd \
        params name="diskcheck_status" device="/dev/sdb" interval="10" \
        op start interval="0" timeout="60s" \
        op monitor interval="10s" timeout="60s" \
        op stop interval="0" timeout="60s"
primitive prm_diskd_internal ocf:pacemaker:diskd \
        params name="diskcheck_status_internal" device="/dev/sda" interval="10" \
        op start interval="0" timeout="60s" \
        op monitor interval="10s" timeout="60s" \
        op stop interval="0" timeout="60s"
primitive prm_drbd_r0 ocf:linbit:drbd \
        params drbd_resource="rdb01" \
        op monitor interval="30" role="Master" timeout="30" \
        op monitor interval="40" role="Slave" timeout="30" \
        op start interval="0" timeout="240" \
        op stop interval="0" timeout="100"
primitive prm_fs ocf:heartbeat:Filesystem \
        params device="/dev/drbd0" directory="/db" fstype="ext4" options="noatime" \
        operations $id="prm_fs-operations" \
        op start interval="0" timeout="60" \
        op stop interval="0" timeout="60" \
        op monitor interval="10s" timeout="60s" OCF_CHECK_LEVEL="20" \
        meta target-role="started"
primitive prm_mailto ocf:heartbeat:MailTo \
        params email="hoge_system@ml01.hoge.hoge.jp" subject="HeartBeat FailOver" \
        op start interval="0" timeout="10s" \
        op monitor interval="10s" timeout="10s" \
        op stop interval="0" timeout="10s" \
        meta target-role="started"
primitive prm_mysqld ocf:heartbeat:mysql \
        params binary="/opt/db/mysql/bin/mysqld_safe" client_binary="/opt/db/mysql/bin/mysql" datadir="/db01/mysql/data" config="/etc/my.cnf" socket="/tmp/mysql.sock" user="mysql" group="dba" pid="/opt/db/mysql/mysqld.pid" log="/var/log/mysql/mysqld.log" additional_parameters="--ledir=/opt/db/mysql/bin --basedir=/opt/db/mysql" test_user="chk_user" test_passwd="passwd" test_table="chk_db.chk_tbl" \
        operations $id="prm_mysqld-operations" \
        op start interval="0" timeout="120s" \
        op stop interval="0" timeout="120s" \
        op monitor interval="20s" timeout="30" OCF_CHECK_LEVEL="10" \
        meta target-role="started"
primitive prm_pingd ocf:pacemaker:pingd \
        params name="default_ping_set" host_list="172.18.56.254 172.18.56.73 172.18.56.74" multiplier="100" dampen="50" \
        operations $id="prm_pingd-operations" \
        op monitor interval="10s" timeout="20s" attempts="50" \
        op start interval="0" timeout="90s" on-fail="restart" \
        op stop interval="0" timeout="100s" on-fail="ignore"
primitive prm_vip ocf:heartbeat:IPaddr2 \
        params ip="172.18.56.80" cidr_netmask="24" \
        op monitor interval="10" \
        meta target-role="started"
primitive prm_vipcheck ocf:heartbeat:VIPcheck \
        params target_ip="172.18.56.80" count="1" wait="10" \
        op start interval="0" timeout="90s" start_delay="4" \
        op stop interval="0" timeout="60s" \
        meta target-role="started"
group grp_mysqld prm_vipcheck prm_fs prm_vip prm_mysqld prm_mailto
ms ms_drbd_r0 prm_drbd_r0 \
        meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"
clone clone_diskd prm_diskd
clone clone_diskd_internal prm_diskd_internal
clone clone_pingd prm_pingd
location loc_grp_mysqld grp_mysqld \
        rule $id="loc_grp_mysqld-rule" -inf: not_defined default_ping_set or default_ping_set lt 100
colocation col_mysqld_diskd inf: grp_mysqld clone_diskd
colocation col_mysqld_diskd_internal inf: grp_mysqld clone_diskd_internal
colocation col_mysqld_drbd inf: grp_mysqld ms_drbd_r0:Master
colocation col_mysqld_pingd inf: grp_mysqld clone_pingd
order ord_mysqld_diskd 0: clone_diskd grp_mysqld
order ord_mysqld_diskd_int 0: clone_diskd_internal grp_mysqld
order ord_mysqld_drbd inf: ms_drbd_r0:promote grp_mysqld:start
order ord_mysqld_pingd inf: clone_pingd grp_mysqld
property $id="cib-bootstrap-options" \
        dc-version="1.0.12-066152e" \
        cluster-infrastructure="Heartbeat" \
        stonith-enabled="false" \
        no-quorum-policy="ignore" \
        default-resource-stickiness="200" \
        last-lrm-refresh="1352465746"
rsc_defaults $id="rsc-options" \
        migration-threshold="1" \
        resource-stickiness="INFINITY"

■リソース設定を反映
# crm configure load update mysql_setup.crm 
※/dev/drbd0をext4のファイルシステムで事前に作成していないとエラーとなる。
DRBDプライマリー側で「 mkfs -t ext4 /dev/drbd0」を実行する
 プライマリの確認は[# cat /proc/drbd]で「0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----」となっていることを確認する。Secondary/Primaryとなっている場合は、別ノードがプライマリとなっていることになる。


PaceMakerリソース登録時の補足情報

リソースは大きくPrimitive、Clone、Master/Slaveの3種類に定義することができる。これによって必ず1つのノードで動かさなければならない排他制御が必要なサービス、両方のノードで行う必要がある監視、マスタースレーブ関係のあるサービスなど様々な場面に対応することができる。それらのサービスをリソースエージェントを介することで統一的な方法で管理している。
種類説明
Primitive アクティブ/スタンバイ構成で用いる基本的なリソースで、どこか1つのノードで動くことができるリソース。障害を検知したら他のノードにフェールオーバーさせることができる。
Clone Primitiveリソースを複数のノードで動作させるために使用する。Primitiveを停止してそれを複製するためCloneと呼ばれる。 pingの疎通監視などサービスを提供していないノードでも確認する基本的な監視で利用されることが多い。
Master/Slave Cloneのリソースで親子関係があるリソースに使用する。代表的なリソースとしてPrimaryとSecondaryの状態を管理する必要があるDRBDがあげられる。



PaceMaker+DRBD構築 の目次

01. PaceMaker+DRBD構築  【PaceMakerのインストール】
02. PaceMaker+DRBD構築  【DRBDのインストール】
03. PaceMaker+DRBD構築  【DRBDの設定】
04. PaceMaker+DRBD構築  【MySQLインストール】
05. PaceMaker+DRBD構築  【MySQL設定】
06. PaceMaker+DRBD構築  【リソース登録】
07. PaceMaker+DRBD構築  【運用/障害復旧】


・おすすめ書籍
[Linux-DB システム構築/運用入門 ]のECサイト価格横断比較と評価
HAクラスタ構築のおすすめ書籍


拍手[0回]



PaceMaker+DRBD構築7 【運用】

広告 

PaceMaker+DRBDの運用

PaceMaker+DRBDを運用する上で、よく使うコマンドを紹介します。

Pacemaker状態確認
・TOPコマンドの様にリアルタイムの情報を参照
# crm_mon
============
Last updated: Mon Apr  8 15:58:17 2013
Stack: Heartbeat
Current DC: dk-db01 (e55c28c8-89c7-4d61-9c9a-aef306eae480) - partition with quo
rum
Version: 1.0.12-066152e
2 Nodes configured, unknown expected votes
5 Resources configured.
============

Online: [ dk-db02 dk-db01 ]

 Resource Group: grp_mysqld
     prm_vipcheck       (ocf::heartbeat:VIPcheck):      Started dk-db01
     prm_vip    (ocf::heartbeat:IPaddr2):       Started dk-db01
     prm_fs     (ocf::heartbeat:Filesystem):    Started dk-db01
     prm_mysqld (ocf::heartbeat:mysql): Started dk-db01
     prm_mailto (ocf::heartbeat:MailTo):        Started dk-db01
 Master/Slave Set: ms_drbd_r0
     Masters: [ dk-db01 ]
     Slaves: [ dk-db02 ]
 Clone Set: clone_diskd
     Started: [ dk-db01 dk-db02 ]
 Clone Set: clone_diskd_internal
     Started: [ dk-db01 dk-db02 ]
 Clone Set: clone_pingd
     Started: [ dk-db01 dk-db02 ]

・実行時の状態を表示(バッチ等で利用)
# crm_mon -1

DRBD状態確認
# cat /proc/drbd
version: 8.4.2 (api:1/proto:86-101)
GIT-hash: 7ad5f850d711223713d6dcsss3dd48860321070c build by root@dk-db01, 2012-11-06 15:33:13
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:45515384 nr:0 dw:45577604 dr:5178098 al:537 bm:64 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
cs,ro,dsの値で状態を確認することができます。
項目正常時異常時(例)
cs Connected WFConnection
StandAlone
ro Primary/Secondary
or Secondary/Primary
Primary/Unknown
Secondary/Unknown
ds UpToDate/UpToDate UpToDate/DUnknow



PaceMaker+DRBDの障害復旧手順(片ノードのみ障害)

ノード間のDRBD同期が取れていない状態になった場合の復旧手順を説明します。
DRBDの状態確認
ノード1側のDRBD状態を確認
# cat /proc/drbd
version: 8.4.2 (api:1/proto:86-101)
GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by root@dk-db01, 2012-11-06 15:33:13
0: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r-----
    ns:1412 nr:636 dw:3648 dr:13333 al:16 bm:15 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:1200
ノード2側のDRBD状態を確認
# cat /proc/drbd
version: 8.4.2 (api:1/proto:86-101)
GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by root@dk-db02, 2012-11-06 15:44:03
0: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown   r-----
    ns:0 nr:1408 dw:1408 dr:1672 al:0 bm:8 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
※ノード1側がPrimay状態であるため、ノード2側のデータを破棄し、ノード1側データを正とする。


ノード2側のデータを破棄
ノード2側(データ廃棄側)のDRBDリソースをセカンダリ状態へ変更
 ※すでにセカンダリ(Secondary)状態であるが、念のため実行する。
#  drbdadm secondary rdb01
 書式:drbdadm secondary resource名

ノード2側のDRBD状態を確認
# cat /proc/drbd
version: 8.4.2 (api:1/proto:86-101)
GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by root@dk-db02, 2012-11-06 15:44:03
0: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown   r-----
    ns:0 nr:1408 dw:1408 dr:1672 al:0 bm:8 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
※今回はすでにSecondary状態であったため、特に結果は変わらない。

ノード2側のメタデータを破棄
# drbdadm -- --discard-my-data connect rdb01
※ノード1側がWFConnection状態であるため、ノード間の自動再接続が行われる。

ノード2側のDRBD状態を再度確認
# cat /proc/drbd
version: 8.4.2 (api:1/proto:86-101)
GIT-hash: 7ad5f850d711223713d6dcsss3dd48860321070c build by root@dk-db02, 2012-11-06 15:33:13
 0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
    ns:45515384 nr:0 dw:45577604 dr:5178098 al:537 bm:64 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0



PaceMaker+DRBDの障害復旧手順(両ノードがStandAlone状態)

両ノードが単独で動作している状態(スプリットブレイン)からの復旧手順を説明します。
※基本的な手順は、上記の片ノードからの復旧と同じです。

DRBDの状態確認
ノード1側のDRBD状態を確認
# cat /proc/drbd
version: 8.4.2 (api:1/proto:86-101)
GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by root@dk-db01, 2012-11-06 15:33:13
0: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknown   r-----
    ns:13112 nr:636 dw:35652 dr:58573 al:23 bm:32 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:15304

ノード2側のDRBD状態を確認
# cat /proc/drbd
version: 8.4.2 (api:1/proto:86-101)
GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by root@dk-db02, 2012-11-06 15:44:03
0: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown   r-----
    ns:0 nr:11652 dw:13060 dr:3200 al:0 bm:25 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
※ノード1側がPrimay状態であるため、ノード2側のデータを破棄し、ノード1側データを正とする。

ノード2側のデータを破棄
ノード2側(データ廃棄側)のDRBDリソースをセカンダリ状態へ変更
 ※すでにセカンダリ(Secondary)状態であるが、念のため実行する。
#  drbdadm secondary rdb01
 書式:drbdadm secondary resource名

ノード2側のDRBD状態を確認
# cat /proc/drbd
version: 8.4.2 (api:1/proto:86-101)
GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by root@dk-db02, 2012-11-06 15:44:03
0: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown   r-----
    ns:0 nr:11652 dw:13060 dr:3200 al:0 bm:25 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
 ※今回はすでにSecondary状態であったため、特に結果は変わらない。

ノード2側のメタデータを破棄
# drbdadm -- --discard-my-data connect rdb01
 書式:drbdadm -- --discard-my-data connect リソース名

ノード2側のDRBD状態を再度確認
ここからが、片ノードのみの復旧手順と異なります。両ノードがStandAlone状態であった ため自動接続は行われません。
# cat /proc/drbd
version: 8.4.2 (api:1/proto:86-101)
GIT-hash: 7ad5f850d711223713d6dcadc3dd48860321070c build by root@dk-db02, 2012-11-06 15:44:03
0: cs:WFConnection ro:Secondary/Unknown ds:UpToDate/DUnknown C r-----
    ns:0 nr:0 dw:13060 dr:3200 al:0 bm:25 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

ノード1側で手動最同期
# drbdadm connect rdb01
 書式:drbdadm connect リソース名


ノード2側のPrimary昇格
※Primary/Primary構成の場合、ノード2側もPrimaryに昇格させる必要がある。
#  drbdadm primary rdb01


PaceMaker+DRBDの運用関連記事

PaceMaker+DRBDの実践運用手順
DRBDのエラー対応
DRBDの基本コマンド


PaceMaker+DRBD構築 の目次

01. PaceMaker+DRBD構築  【PaceMakerのインストール】
02. PaceMaker+DRBD構築  【DRBDのインストール】
03. PaceMaker+DRBD構築  【DRBDの設定】
04. PaceMaker+DRBD構築  【MySQLインストール】
05. PaceMaker+DRBD構築  【MySQL設定】
06. PaceMaker+DRBD構築  【リソース登録】
07. PaceMaker+DRBD構築  【運用/障害復旧】


・おすすめ書籍
[Linux-DB システム構築/運用入門 ]のECサイト価格横断比較と評価
HAクラスタ構築のおすすめ書籍


拍手[0回]



Yahoo!ブックマーク Googleブックマーク はてなブックマーク livedoorClip del.icio.us FC2 ニフティクリップ iza Buzzurl 


最新記事
(09/17)
(04/09)
(04/09)
(03/22)
(01/16)
(12/30)
(12/26)
(09/21)
(09/21)
(09/20)
(09/12)
(06/13)
(06/13)
(03/14)
(02/15)
(01/03)
(01/03)
(10/04)
(09/20)
(09/15)
(09/14)
(09/14)
(09/14)
(09/06)
(08/30)
最古記事
(10/29)
(10/29)
(10/29)
(10/29)
(10/29)
(04/12)
(04/12)
(06/12)
(06/12)
(06/20)
(06/22)
(07/22)
(07/22)
(07/30)
(07/30)
(08/18)
(08/18)
(08/22)
(08/24)
(08/24)
(08/24)
(08/24)
(08/24)
(08/24)
(08/24)


PR

Copyright © インフラ構築手順書 : All rights reserved

TemplateDesign by KARMA7

忍者ブログ [PR]

管理人限定

検索フォーム

カスタム検索

フリーエリア

ESXiの基本設定・運用設定
ESXiのSSH設定
ESXiの NTP設定
VMware ESXiでの時刻同期(NTP)ペストプラクティス
ESXiのゲストOS(仮想マシン)複製
ESXiのOVF形式で複製
異なるESXiバージョン間の複製(移行)
クローン作成後の後処理
仮想マシンのLVM追加
仮想共有ディスクファイルの作成
ESXi上でハイパーバイザーを稼動させる
パフォーマンスがでないとき確認すること


サーバ構築手順
ESXi上でRACを構築する
GFS2+DRBD構築
PaceMaker+MySQLレプリケーション構築
PaceMaker+DRBD構築
HeartBeat2+DRBD構築


Solarisの構築手順
Solarisのネットワーク設定変更
Solarisのホスト名変更
Solaris11のresolv.conf変更手順
Solaris11のHDD増設手順


AWS(Amazon Web Service)の基本設定・運用設定
S3 WEBサイトの構築
S3 WEBサイトのアクセス制限
S3 WEBサイトのリダイレクト設定


Windows Azureの基本設定・運用設定
AzureでWordpress構築
英語版Wordpressを日本語化する
AzureWebサイトの独自ドメイン設定
AzureWebサイトのモード変更
WEBアクセスログ解析ツールの比較


WordPressの基本設定・運用設定
WordPressの基本構造
WordPressのインストール手順
Wordpressマルチサイト機能
「続き読む(more)」カスタマイズ
Wordpressの独自PHP
Wordpressをサブディレクトリに移す
既存サブディレクトリをルートディレクトリとする
Wordpressが利用可能な共用ホスティング


Postfix構築
Postfixにおける暗号化したSMTP認証設定


SoftEtherVPNの構築
ESXi上のSoftEtherVPN構築
DDNSと組み合わせたSoftEtherVPNの設定


LinuxのAD連携
LinuxのActiveDirectory連携について
PAM認証でAD連携
ApacheでAD連携(LDAP認証)
ApacheでAD連携(Kerberos認証)
SAMBAで2台目DCサーバを構築
RedmineとGitのLDAP(AD)認証設定
JenkinsのLDAP(ActiveDirectory)認証設定


Redmine設定
Alminium(RedmineとGit/SVN)のインストール手順
RedmineとGitのLDAP(AD)認証設定
RedmineとGitの移行
JenkinsのLDAP(ActiveDirectory)認証設定


サーバの基本設定・運用設定
Apache
Apacheの基本設定
Apacheの仮想ホスト設定
PHPの基本設定
Nginxのロードバランサ設定
WebDAV構築手順
アンチウィルス
無償アンチウィルス(ClamAV)の導入手順
システム監視
システム監視ソフトMuninの導入手順
システム監視ソフトZabbixの導入手順
sarによるリソース使用情報取得


サーバ移行
Mysqlマイグレーション
MySQLマイグレーション時の問題点と解決策
Windows
Windows OS評価版からの移行
SQL Server評価版からの移行
クラスタソフト
クラスタソフトの比較

ツリーカテゴリ

広告ーSEO





人気ブログランキングへ
にほんブログ村 IT技術ブログ Webサイト構築へ

ブログ王ランキングに参加中!


最新トラックバック

バーコード

アフィリエイト2