16
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOS6.6のLinux-HAでDRBDを構築する手順めも

Last updated at Posted at 2015-02-08

前置き

以下の記事のおまけです。
CentOS6.6のLinux-HAでDRBD上にOracleデータベースを構築する

Oracleをインストールする前までのLinux-HA構築手順をメモしておきます。

CentOSのインストール

ホスト名、IPアドレス設定

  • ノードA ホスト名:OraSv1 eth0:192.168.10.101 eth1:192.168.1.101
  • ノードB ホスト名:OraSv2 eth0:192.168.10.102 eth1:192.168.1.102

インストール時、DRBDで2重化するパーティション(/ora ext4)を追加する。
/etc/fstabがこうなるように。

/etc/fstab
/dev/mapper/vg-lv_root  /             ext4    defaults        1 1
/dev/mapper/vg-lv_home  /home         ext4    defaults        1 2
/dev/mapper/vg-lv_ora   /ora          ext4    defaults        1 2

初期設定

DRBDで管理するパーティションをマウントしないよう、/oraをコメントアウトする。

```sh:/etc/fstab`
/dev/mapper/vg-lv_root / ext4 defaults 1 1
/dev/mapper/vg-lv_home /home ext4 defaults 1 2

/dev/mapper/vg-lv_ora /ora ext4 defaults 1 2


/oraをアンマウントする。
`umount /ora`

パーティションの中身を空にする			
`dd if=/dev/zero bs=1M count=1 of=/dev/mapper/vg-lv_ora;sync`

ホスト名設定

```sh:/etc/hosts
192.168.10.101  OraSv1
192.168.10.102  OraSv2

HA用のユーザ・グループ作成

groupadd -g 1310 haclient
useradd -u 1310 -g haclient -d /home/haclient -s /bin/bash -m haclient
passwd haclient

iptables設定

iptables -L -n --line-number

iptables -I INPUT 1 -m tcp  -p tcp --dport 7788 -j ACCEPT
iptables -I INPUT 2 -m tcp  -p tcp --sport 7788 -j ACCEPT
iptables -I OUTPUT 1 -m tcp  -p tcp --dport 7788 -j ACCEPT
iptables -I OUTPUT 2 -m tcp  -p tcp --sport 7788 -j ACCEPT

iptables -I INPUT 3 -m udp -p udp --dport 5405 -j ACCEPT
iptables -I INPUT 4 -m udp -p udp --sport 5405 -j ACCEPT
iptables -I OUTPUT 3 -m udp -p udp --dport 5405 -j ACCEPT
iptables -I OUTPUT 4 -m udp -p udp --sport 5405 -j ACCEPT

iptables -L -n --line-number
service iptables save
service iptables restart

最新にアップデートしておく
yum update

DRBDのインストール

DRBD関連パッケージをインストール

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
yum install -y drbd84-utils kmod-drbd84

DRBDの設定

/etc/drbd.conf
# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example

# include "drbd.d/global_common.conf";	←コメントアウトする
# include "drbd.d/*.res";		←コメントアウトする

global {
       usage-count no;
}

common {
       syncer { rate 50M; }
}

resource r0 {
       protocol C;
       startup {
               wfc-timeout 120;
               degr-wfc-timeout 120;
       }
       net {
               cram-hmac-alg "sha1";
               shared-secret "password";
               after-sb-0pri disconnect;
               after-sb-1pri disconnect;
               after-sb-2pri disconnect;
       }
       disk {
               on-io-error pass_on;
       }
	# ノードAのホスト名、IPアドレス、DRBDで2重化するパーティションを定義
       on OraSv1 {                  # uname -n で表示されるホスト名
               device /dev/drbd0;
               disk /dev/mapper/vg-lv_ora;
               address 192.168.10.101:7788;
               meta-disk internal;
       }
	# ノードBのホスト名、IPアドレス、DRBDで2重化するパーティションを定義
       on OraSv2 {                  # uname -n で表示されるホスト名
               device /dev/drbd0;
               disk /dev/mapper/vg-lv_ora;
               address 192.168.10.102:7788;
               meta-disk internal;
       }
}

自動起動OFFにする

chkconfig --list drbd
chkconfig drbd off
chkconfig --list drbd

DRBDのメタデータを初期化
drbdadm create-md r0

おまじない

drbdadm -- 6::::1 set-gi r0
drbdadm dump-md r0 > /tmp/md
sed -i -r -e 's/0xF{16}/0x0000000000000000/g' /tmp/md
drbdmeta /dev/drbd0 v08 /dev/mapper/vg-lv_ora internal restore-md /tmp/md ; rm -f /tmp/md

DRBD起動(初回のみ)

DRBD起動(Primary, Secondary両方で実行)

service drbd start
service drbd status
drbd driver loaded OK; device status:
version: 8.4.5 (api:1/proto:86-101)
GIT-hash: 1d360bde0e095d495786eaeb2a1ac76888e4db96 build by
mockbuild@Build64R6, 2014-08-17 19:26:04
m:res  cs         ro                   ds                         p mounted  fstype
0:r0   Connected  Secondary/Secondary  Inconsistent/Inconsistent  C	

両方のノードでこの状態
(Connected Secondary/Secondary Inconsistent/Inconsistent)
になることを確認する。

以下、ノードAをPrimary、ノードBをSecondaryとして設定を進める。

Secondary側(ノードB)で実行

drbdadm invalidate r0

cat /proc/drbd
version: 8.4.5 (api:1/proto:86-101)
GIT-hash: 1d360bde0e095d495786eaeb2a1ac76888e4db96 build by
mockbuild@Build64R6, 2014-08-17 19:26:04
 0: cs:SyncSource ro:Secondary/Secondary ds:UpToDate/Inconsistent C r-----
    ns:2473212 nr:0 dw:0 dr:2473212 al:0 bm:0 lo:0 pe:4 ua:0 ap:0 ep:1
wo:f oos:23742668
        [>...................] sync'ed:  9.5% (23184/25596)M
        finish: 0:18:25 speed: 21,444 (21,484) K/sec

同期が終わるまで(sync'ed が100%になるまで)待つ。

同期完了するとこうなる。

  • ノードA
# service drbd status
drbd driver loaded OK; device status:
version: 8.4.5 (api:1/proto:86-101)
GIT-hash: 1d360bde0e095d495786eaeb2a1ac76888e4db96 build by
phil@Build64R6, 2014-10-28 10:32:53
m:res  cs         ro                 ds                 p  mounted  fstype
0:r0   Connected  Primary/Secondary  UpToDate/UpToDate  C
  • ノードB
# service drbd status
drbd driver loaded OK; device status:
version: 8.4.5 (api:1/proto:86-101)
GIT-hash: 1d360bde0e095d495786eaeb2a1ac76888e4db96 build by
phil@Build64R6, 2014-10-28 10:32:53
m:res  cs         ro                 ds                 p  mounted  fstype
0:r0   Connected  Secondary/Primary  UpToDate/UpToDate  C

ノードAで実行

drbdadm primary r0
mkfs.ext4 /dev/drbd0
mount /dev/drbd0 /ora
df
/dev/drbd0            25671160   44992  24315492   1% /ora

/dev/drbd0が/oraとして読み書き可能であること。
適当なファイルをノードAで作成してみる。

ノードAで実行

echo "DRBD TEST from Node A" > /ora/test.txt
ls /ora
cat /ora/test.txt
DRBD TEST from Node A

Primary/Secondaryを切り替えてみる。

umount /ora
drbdadm secondary r0

ノードBで実行

drbdadm primary r0
mount /dev/drbd0 /ora
df
/dev/drbd0            25671160   44992  24315492   1% /ora
cat /ora/test.txt
DRBD TEST from Node A

echo "DRBD TEST from Node B" >> /ora/test.txt

Primary/Secondaryを切り替えてみる。

umount /ora
drbdadm secondary r0

ノードAで実行

drbdadm primary r0
mount /dev/drbd0 /ora
cat /ora/test.txt
DRBD TEST from Node A
DRBD TEST from Node B

Pacemakerのインストール

Pacemakerリポジトリを取得、インストール

cd /tmp
wget "http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Flinux-ha%2F62369%2Fpacemaker-repo-1.1.12-1.1.el6.x86_64.rpm"
mv redir.php?m=jaist&f=%2Flinux-ha%2F62369%2Fpacemaker-repo-1.1.12-1.1.el6.x86_64.rpm pacemaker-repo-1.1.12-1.1.el6.x86_64.rpm

rpm -ivh pacemaker-repo-1.1.12-1.1.el6.x86_64.rpm
yum install pacemaker-all

Corosyncの設定

/etc/corosync/corosync.conf
compatibility: whitetank

aisexec {
       user: root
       group: root
}

service {
       name: pacemaker
       ver: 0
       use_mgmtd: yes
}

amf {
       mode: disabled
}

totem {
       version: 2
       secauth: off
       threads: 0
       rrp_mode: none
       clear_node_high_bit: yes
       token: 4000
       censensus: 7000
       join: 60
       interface {
               member {
                       memberaddr: 192.168.1.101	#ノードA
               }
               member {
                       memberaddr: 192.168.1.102	#ノードB
               }
               ringnumber: 0
               bindnetaddr: 192.168.1.0			#ネットワークアドレス
               mcastport: 5405
               ttl: 1
       }
       transport: udpu
}

logging {
       fileline: off
       to_logfile: yes
       to_syslog: no
       logfile: /var/log/cluster/corosync.log
       debug: off
       timestamp: on
       logger_subsys {
               subsys: AMF
               debug: off
       }
}

quorum {
       provider: corosync_votequorum
       expected_votes: 2
       two_node: 1
}

自動起動ONにする

chkconfig pacemaker on
chkconfig --list pacemaker
chkconfig corosync on
chkconfig --list corosync

Pacemaker, Corosync起動(初回のみ)

両方のノードで起動する

service corosync start
service pacemaker start

手動で停止するときはこの順番で停止すること
service pacemaker stop
service corosync stop

起動状態の確認(片方のノードで実行すればよい)
crm_mon -Aro

Last updated: Thu Dec 25 19:27:45 2014	
Last change: Thu Dec 25 19:24:22 2014	
Stack: corosync	
Current DC: OraSv1 (740103615) - partition with quorum	
Version: 1.1.12-561c4cf	
2 Nodes configured	
0 Resources configured	
	
	
Online: [ OraSv1 OraSv2 ]	
	
Full list of resources:	


Node Attributes:	
* Node OraSv1:
* Node OraSv2:
	
Operations:
* Node OraSv1:
* Node OraSv2:

両方がOnlineになってればOK(Ctrl+Cで表示終了)

CRM設定

片方のノードで実行すればよい
crm configure

property no-quorum-policy=ignore stonith-enabled=false
rsc_defaults resource-stickiness=INFINITY migration-threshold=1
commit
exit

DRBDを死活監視対象に設定

念のため、/dev/drbd0 をアンマウントしておく。
umount /ora

crm configure

primitive drbd_ora ocf:linbit:drbd params drbdconf=/etc/drbd.conf \
drbd_resource=r0 \
op start interval=0s timeout=240s \
op monitor interval=10 role=Slave \
op monitor interval=11 role=Master \
op stop interval=0 timeout=100s on-fail=block
	
ms ms-drbd_ora drbd_ora meta notify=true

primitive fs_ora ocf:heartbeat:Filesystem params run_fsck=no \
device=/dev/drbd0 directory=/ora fstype=ext4 \
op start interval=0s timeout=60s \
op monitor interval=15 timeout=40s \
op stop interval=0 timeout=60s on-fail=ignore

colocation coloc-drbd_fs inf: fs_ora ms-drbd_ora:Master
order order-drbd_fs inf: ms-drbd_ora:promote fs_ora:start

commit
exit

状況確認
crm_mon

 Master/Slave Set: ms-drbd_ora [drbd_ora]
     Masters: [ OraSv1 ]
     Slaves: [ OraSv2 ]
fs_ora      (ocf::heartbeat:Filesystem):    Started OraSv1

Mastersになっているノード(OraSv1)で/oraがマウントされていることを確認。

df
cat /ora/test.txt

Master側をリブート
shutdown -r now

Slave側がMasterに昇格すること
crm_mon

 Master/Slave Set: ms-drbd_ora [drbd_ora]
     Masters: [ OraSv2 ]
     Slaves: [ OraSv1 ]
fs_ora      (ocf::heartbeat:Filesystem):    Started OraSv2

/oraがマウントされていること
df

再起動した方がSlavesになっていること

仮想IPアドレス作成

仮想IPアドレス 192.168.10.100を作る。
Filesystem(fs_ora)とグループ化し、同一ノードで実行するよう設定する。

crm configure

primitive VIP1 ocf:heartbeat:IPaddr2 \
params ip=192.168.10.100 nic=eth0 cidr_netmask=24 \
op start interval=0s timeout=20s \
op stop interval=0s timeout=20s \
op monitor interval=30s

group grpora fs_ora VIP1

commit
exit

状況確認
crm_mon

VIP1    (ocf::heartbeat:IPaddr2):       Started OraSv2
 Master/Slave Set: ms-drbd_ora [drbd_ora]		
     Masters: [ OraSv2 ]		
     Slaves: [ OraSv1 ]		
fs_ora      (ocf::heartbeat:Filesystem):    Started OraSv2		

fs_oraとVIP1が同一ノードで起動すること。

別マシンから仮想IPに接続し、仮想IPが起動しているノード(上記の例だとOraSv2)に接続すること。


設定は以上です。

ここまで出来たら、元記事に戻ってOracleをインストールします。
CentOS6.6のLinux-HAでDRBD上にOracleデータベースを構築する

16
18
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?