Midnightjapan

Tag: heartbeat

Heartbeat の安全な停止方法

by jun on 7月.26, 2011, under Linux, Mysql, PHP, Programing

1号機(プライマリー) 2号機(セカンダリー)として稼働中のDRBD+Heartbeat(HAクラスタシステム)を構築している。
これを安全に停止するための自己記録である。

まず2号機にログインして管理者になり[Heartbeat]を停止する。

[管理者@2号機] # /etc/rc.d/init.d/heartbeat stop

これで、2号機が停止したら1号機にログインして管理者になり[Heartbeat]を停止する。

[管理者@1号機] # /etc/rc.d/init.d/heartbeat stop

※ 深夜の気が向いたときしかやりたくないので、ついここで、rootにならずにやって、サブシステムがロックしているとか、よくわからないエラーがでてしまい、余計な時間がかかることがあるが、rootになっていれば問題はおきるわけがない。

つづいて、[Heartbeat]がとまったことでDRBDもこのようになっている。

[管理者@1号機] # /etc/rc.d/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: ************************* build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09
m:res  cs         ro                   ds                 p  mounted  fstype
0:r0   Connected  Secondary/Secondary  UpToDate/UpToDate  C

そこでこのようにプライマリーにしてマウントする

[管理者@1号機] # drbdadm primary all
[root@winsor ~]# /etc/rc.d/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: ************************* build by mockbuild@builder10.centos.org, 2010-06-04 08:04:09
m:res  cs         ro                 ds                 p  mounted  fstype
0:r0   Connected  Primary/Secondary  UpToDate/UpToDate  C
[管理者@1号機] # mount /dev/drbd0 /マウントしたいパス

これで安全に停止してメンテナンスが可能です。

ささ、MySQLのバックアップやディスク容量の増加など完了しました。
今度はちゃんと元にもどしましょう。

まず1号機にログインして管理者になり[Heartbeat]を開始する。

[管理者@1号機] # /etc/rc.d/init.d/heartbeat start

つぎに2号機にログインして管理者になり[Heartbeat]を開始する。

[管理者@2号機] # /etc/rc.d/init.d/heartbeat start

そしたらあわてずに待つ。
1号機2号機どちらでもかまわないが[Heartbeat]のステータスを表示する。
一応プライマリーの1号機でみてみることにする。

[管理者@1号機] # crm_mon
Defaulting to one-shot mode
You need to have curses available at compile time to enable console mode

============
Last updated: Tue Jul -- --:--:-- ----
Current DC: NONE
2 Nodes configured.
1 Resources configured.
============

Node: 1号機.lan (***********************************************): OFFLINE
Node: 2号機.lan (***********************************************): OFFLINE

じっくりね。結構この状態が続いて、あせることがあるかもしれないけど、あわてない。
そして1分から2分後

[管理者@1号機] # crm_mon
Defaulting to one-shot mode
You need to have curses available at compile time to enable console mode

============
Last updated: Tue Jul -- --:--:-- ----
Current DC: 1号機.lan (***********************************************)
2 Nodes configured.
1 Resources configured.
============

Node: 1号機.lan (***********************************************): online
Node: 2号機.lan (***********************************************): online

Resource Group: group_1
    IPaddr2_1   (heartbeat::ocf:IPaddr2):       Started 1号機.lan
    MailTo_2    (heartbeat::ocf:MailTo):        Started 1号機.lan
    drbddisk_3  (heartbeat:drbddisk):   Started 1号機.lan
    Filesystem_4        (heartbeat::ocf:Filesystem):    Started 1号機.lan
    httpd_5     (lsb:httpd):    Started 1号機.lan
    mysqld_6    (lsb:mysqld):   Started 1号機.lan

ふぅ、一安心。たまにしかやらないから、余計ね。ご苦労様でした _(._.)_

コメントなし :, , more...

Heartbeatのリソース解放方法

by jun on 1月.22, 2011, under Linux, Mysql, Programing

WEB DBシステムを開発中のJUNです。
こんばんわ。

世間から隔離されてはや2週間、皆様いかがおすごしですか?
さて、表題の件ですがこんな問題が発生しました。

MySQLサーバーのデータベースをコールドバックアップの手法でデータの入れ替えを行いました。

理由は単純で、MySQLサーバーのデータを社内の試験サーバーで開発し定期的に進捗報告を行うため、簡単に言うと提出するわけです。

そんなわけで、なれた手つきで試験サーバーデータを送信して、本サーバーに。

本サーバーでMySQLを停止します。

# /etc/rc.d/init.d/mysql stop
# MySQL を停止中:                                            [  OK  ]

OKかと思いきや、しまったHeartbeatでフェイルオーバーするぞ!

と思ったら

# crm_mon
Defaulting to one-shot mode
You need to have curses available at compile time to enable console mode

============
Last updated: Sat Jan 22 18:54:08 2011
Current DC: main.pokepoke.lan (***)
2 Nodes configured.
1 Resources configured.
============

Node: main.pokepoke.lan (****): online
Node: sub.pokepoke.lan (******): online

Resource Group: group_1
    IPaddr2_1   (heartbeat::ocf:IPaddr2):       Started main.pokepoke.lan
    MailTo_2    (heartbeat::ocf:MailTo):        Started main.pokepoke.lan
    drbddisk_3  (heartbeat:drbddisk):   Started main.pokepoke.lan
    Filesystem_4        (heartbeat::ocf:Filesystem):    Started main.pokepoke.lan
    httpd_5     (lsb:httpd):    Started main.pokepoke.lan
    mysqld_6    (lsb:mysqld):   Started main.pokepoke.lan (unmanaged) FAILED

Failed actions:
    mysqld_6_stop_0 (node=main.pokepoke.lan, call=39, rc=1): Error

ふむ・・・これは・・・ログやら調べてみると、heartbeatがリソースの障害を検知してフェールオーバを実行しようとしたとき、管理下のリソースを停止させようとしたけれども、停止させようとしたリソースの停止要求がタイムアウトしたらしい。

そりゃ止めてるからね。

そんなわけでheartbeatはそのリソースをUnmanagedとしてマークする。

これを解放するための方法を記録する。

# crm_resource -H main.pokepoke.lan -r mysqld_6 -C

これは「 crm_resource -H <ホスト名> -r <リソース名> -C 」と解釈してください。

数秒でカリカリ終わったので、確認してみると。

# crm_mon
Defaulting to one-shot mode
You need to have curses available at compile time to enable console mode

============
Last updated: Sat Jan 22 18:56:18 2011
Current DC: main.pokepoke.lan (***)
2 Nodes configured.
1 Resources configured.
============

Node: main.pokepoke.lan (****): online
Node: sub.pokepoke.lan (******): online

Resource Group: group_1
    IPaddr2_1   (heartbeat::ocf:IPaddr2):       Started main.pokepoke.lan
    MailTo_2    (heartbeat::ocf:MailTo):        Started main.pokepoke.lan
    drbddisk_3  (heartbeat:drbddisk):   Started main.pokepoke.lan
    Filesystem_4        (heartbeat::ocf:Filesystem):    Started main.pokepoke.lan
    httpd_5     (lsb:httpd):    Started main.pokepoke.lan
    mysqld_6    (lsb:mysqld):   Started main.pokepoke.lan

問題は解消してくれた。

しかし、ほんとにフェイルオーバーしてくれるのか心配・・・・

コメントなし :, more...



何かお探しですか?

以下にキーワードを入力してサイト内検索が可能です:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!