IDC 엔지니어의 기술 이야기

CentOS 7 DRBD + Oracle + PCSD + Corosync + Pacemaker 설치 및 운영 본문

OS_APP/Linux

CentOS 7 DRBD + Oracle + PCSD + Corosync + Pacemaker 설치 및 운영

붉은볼곰팅이 2019. 12. 30. 10:43
반응형

///////////////////  전체 설계도 ///////////////////// 


1. 하드웨어 구성 형태

 

 1) Front

   - 960G * 6 = Raid 1+0 (Disk 공간 효율을 위하여 전체 Raid 구성후 논리 Raid 분리)

      > Logical Disk 1 : 200G   >> OS영역(Swap 64G) , Disk 동기화 구역 아님

      >Logical Disk 2 : 2.6T    >> Oracle(DB 프로그램 설치 공간) , Disk 동기화 구역 아님                                                                             >> Oracle Data , Disk 동기화 구역

 

 2) Rear

   - eno1(서비스 대역) : 192.168.20.56(ACT), 192.168.20.57(STD) >> VIP : 192.168.20.100

   - eno2(DRDB 디스크 동기화 대역) : 10.100.100.1(ACT), 10.100.100.2(STD)

 

 

2. 서비스 구성 형태

 1) CentOS 7.4 + DRBD + PCSD + Corosync + Pacemaker

    - DRBD, PCSD, Corosync, Pacemaker 서비스 자동시작

 

 2) 구성형태

 

DRBD를 활용한 ORACLE 이중화 구성형태

  • PCSD 통한 corosync+pacemaker 제어
  • Auto-FailBack(노드 정상화시 자동복구 금지)
  • Resource : 장애발생시 Standby 전환에 포함되는 서비스 항목
  • Oracle Listener 서비스 전환을 위해 tnanames.ora 파일 생성(ORACLE_HOME\network\admin)

///////////////////  DRDB 설치 및 구축 /////////////////////
** ALL은 양쪽 노드 모두에서 실행해야 되는거임

 

ALL # cat /etc/hosts
10.100.100.1    DB-node1
10.100.100.2    DB-node2
192.168.20.60   DB

ALL # cd /usr/local/src
ALL # wget http://elrepo.reloumirrors.net/elrepo/el7/x86_64/RPMS/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
ALL # rpm -ivh elrepo-release-7.0-2.el7.elrepo.noarch.rpm
ALL # yum -y install drbd kmod-drbd84 kernel-devel

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

include "drbd.d/drbddata.conf";
include "drbd.d/*.res";

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

include "drbd.d/drbddata.conf";
include "drbd.d/*.res";

ALL # cat /etc/drbd.d/drbddata.conf
resource drbd {
 startup {
 wfc-timeout 30;
 outdated-wfc-timeout 20;
 degr-wfc-timeout 30;
 }
 
 net {
 cram-hmac-alg sha1;
 shared-secret sync_disk;
 }

 syncer {
 rate 100M;
 verify-alg sha1;
 }
 
 on DB-node1 {
 device /dev/drbd0;
 disk /dev/sdb2;
 address 10.100.100.1:7789;
 meta-disk internal;
 }
 
 on DB-node2 {
 device /dev/drbd0;
 disk /dev/sdb2;
 address 10.100.100.2:7789;
 meta-disk internal;
 }
}

ALL # drbdadm create-md storage

ALL # systemctl start drbd

MASTER # drbdadm -- --overwrite-data-of-peer primary storage

///////////////////  DRDB 설치 및 구축 /////////////////////

################### PCSD+Corosync+Pacemake 설치 및 구축 ###################

ALL # yum install -y corosync pacemaker pcs resource-agents

ALL # systemctl start pcsd.service
ALL # systemctl enable pcsd.service
ALL # systemctl enable corosync.service
ALL # systemctl enable pacemaker.service

MASTER # useradd hacluster
MASTER # passwd hacluster


MASTER # pcs cluster auth DB-node1 DB-node2 -u hacluster -p sys1234
MASTER # pcs cluster setup --name DB_cluster DB-node1 DB-node2
MASTER # pcs cluster start --all
MASTER # pcs cluster enable --all
MASTER # pcs status corosync
MASTER # pcs status 
MASTER # pcs cluster cib
MASTER # pcs property set stonith-enabled=false
MASTER # pcs property set no-quorum-policy=ignore
MASTER # pcs resource defaults resource-stickiness="INFINITY"

MASTER # pcs resource create my_VIP ocf:heartbeat:IPaddr2  ip=192.168.20.60 cidr_netmask=32 op monitor interval=30s on-fail=ignore --group Oracle_Cluster
MASTER # pcs resource create oradb oracle sid="ORACLEDB" home="/oracle/app/product/11g" user="oracle" op monitor on-fail=ignore --group Oracle_Cluster
MASTER # pcs resource create oralsnr oralsnr sid="ORACLEDB" home="/oracle/app/product/11g" user="oracle" op monitor on-fail=ignore --group Oracle_Cluster
MASTER # pcs resource create oradata ocf:linbit:drbd drbd_resource=drbd op monitor on-fail=ignore
MASTER # pcs resource create orafs Filesystem device="/dev/drbd0" directory="/oradata" fstype="ext4" op monitor on-fail=ignore

MASTER # pcs resource master OraClone oradata master-max=1 master-node-max=1 clone-max=2 clone-node-max=1 notify=true
MASTER # pcs constraint colocation add orafs with OraClone INFINITY with-rsc-role=Master
MASTER # pcs constraint order promote OraClone then start orafs Adding OraClone orafs
MASTER # pcs constraint colocation add my_VIP with orafs INFINITY
MASTER # pcs constraint order orafs then my_VIP Adding orafs my_VIP

################### PCSD+Corosync+Pacemake 설치 및 구축 ###################

 

///////////////////  DRBD 운영 ///////////////////// 

3. 운영
1) Disk 동기화 정상 유무 확인
[root@DB-node1 ~]# cat /proc/drbd 
version: 8.4.11-1 (api:1/proto:86-101)
GIT-hash: 66145a308421e9c124ec391a7848ac20203bb03c build by mockbuild@, 2018-11-03 01:26:55
         0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
           ns:42612 nr:2288 dw:47132 dr:120537 al:41 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
Ø Connected : 정상(그 이외에 비정상)
Ø Primary/Secondary (현재 해당서버는 Primary로 운영중, )
 
2) 이중화 여부 정상 여부 확인
** 웹에서도 확인가능 https://192.168.20.100:2224/login (ID/PW : hacluster / sys1234)
        [root@DB-node1 ~]# pcs status
        Cluster name: DB_cluster
        Stack: corosync
        Current DC: DB-node2 (version 1.1.19-8.el7_6.4-c3c624ea3d) - partition with quorum
        Last updated: Wed May 15 09:40:37 2019
        Last change: Wed May 15 08:47:02 2019 by root via cibadmin on DB-node1
         
        2 nodes configured
        6 resources configured
         
        Online: [ DB-node1 DB-node2 ]
         
        Full list of resources:
         
         Master/Slave Set: OraClone [oradata]
             Masters: [ DB-node1 ]
             Slaves: [ DB-node2 ]
         Resource Group: Oracle_Cluster
             my_VIP     (ocf::heartbeat:IPaddr2):       Started DB-node1
             oradb      (ocf::heartbeat:oracle):        Started DB-node1
             oralsnr    (ocf::heartbeat:oralsnr):       Started DB-node1
         orafs  (ocf::heartbeat:Filesystem):    Started DB-node1
         
        Daemon Status:
          corosync: active/enabled
          pacemaker: active/enabled
           pcsd: active/enabled
Ø Online: [ DB-node1 DB-node2 ] : 정상(그 이외에 비정상)
Ø my_VIP     (ocf::heartbeat:IPaddr2):       Started DB-node1  : VIP에 대한 서비스 확인(그 이외에 비정상)
oradb      (ocf::heartbeat:oracle):        Started DB-node1   : DB에 대한 서비스 확인(그 이외에 비정상)
oralsnr    (ocf::heartbeat:oralsnr):       Started DB-node1    : Oracle Listener 에 대한 서비스 확인(그 이외에 비정상)
orafs  (ocf::heartbeat:Filesystem):    Started DB-node1       : Oradata 파티션에 대한 서비스 확인(그 외외에 비정상)
 
3) 서비스 테스트 예제
** 순서대로 기재
A. DB-node1에서 Oracle Table 수정 작업


B. Active 수동전환(장애상황 연출)
[root@DB-node1 ~]# pcs cluster standby DB-node1    //약 1분정도후 전환 완료
[root@DB-node1 ~]# pcs status
Cluster name: DB_cluster
Stack: corosync
Current DC: DB-node2 (version 1.1.19-8.el7_6.4-c3c624ea3d) - partition with quorum
Last updated: Wed May 15 09:52:50 2019
Last change: Wed May 15 09:52:27 2019 by root via cibadmin on DB-node1
 
2 nodes configured
6 resources configured
 
Node DB-node1: standby    //DB-node1이 Cluster에서 제외됨(디스크동기화도 안됨)
Online: [ DB-node2 ]
 
Full list of resources:
 
Master/Slave Set: OraClone [oradata]
Masters: [ DB-node2 ]
           Stopped: [ DB-node1 ]
         Resource Group: Oracle_Cluster
             my_VIP     (ocf::heartbeat:IPaddr2):       Started DB-node2
             oradb      (ocf::heartbeat:oracle):        Started DB-node2
             oralsnr    (ocf::heartbeat:oralsnr):       Started DB-node2
         orafs  (ocf::heartbeat:Filesystem):    Started DB-node2
         
        Daemon Status:
          corosync: active/enabled
          pacemaker: active/enabled
  pcsd: active/enabled
 
C. DB-node2에서 좀전 수정한 Table 정상 유무 확인


D. DB-node1 정상화 된것으로 가정하고 Disk 동기화를 위한 Cluster Re-Join
** 주의. DB-node1다시 Active가 되는 것은 아님
[root@DB-node1 ~]# pcs cluster unstandby DB-node1
>> status 조회시 “Online: [ DB-node1 DB-node2 ]” 나오면 됨
>> drbd 조회시 “Connected ro: Secondary/Primary” 나오면 됨
 
E. DB-node2에서 Oracle Table 수정


F. DB-node1으로 다시 전환
[root@DB-node1 ~]# pcs cluster standby DB-node2
>> 전환이 완료 되면 아래 명령어 실행
[root@DB-node1 ~]# pcs cluster unstandby DB-node2
>> DB-node2 Cluster-DB2 Re-Join
 
G. 테스트 완료

반응형

'OS_APP > Linux' 카테고리의 다른 글

ubuntu wireshark 설치 및 사용기  (0) 2023.07.03
Linux Bind named.conf 및 Zone 이상유무 체크  (0) 2019.06.17
SSH 접속 느려짐  (0) 2019.02.26
CentOS Bonding  (0) 2019.02.20