두 서버간 파티션 및 drbd 연결 도식화
┌─────────────────────────┐ ┌────────────────────┐
│ /opt/autocrypt/data2 │ │/opt/autocrypt/data1│
┌───────────────────────────┐ ┌──────────────────────┐
│ │ │ ext4 │
│ ext4 │──└──────────────────────┐ ┌───────────────────────────┐
│ │ drbd ├──────┤ drbd │
┌───────────────────────────┐─────────────────────────┐ ┌───────────────────────────┐
│ sdb2 │ sdb1 │ │ sdb1 │
┌───────────────────────────────────────────────────────┐ ┌─────────────────────────────┐
│ HDD │ │ HDD │
└───────────────────────────────────────────────────────┘ └─────────────────────────────┘
Server1 Server21.1. sdb 파티션 구성
# fdisk /dev/sdb 1.2. 파티션 포맷
# mkfs.ext4 /dev/sdb1
# mkfs.ext4 /dev/sdb21.3. 디바이스 UUID 확인
# blkid
/dev/sdb1: UUID="bf5b50eb-5a00-4dc4-b628-243bea114909" TYPE="ext4" PARTUUID="18c5e0b8-01"
/dev/sdb2: UUID="21d5fe61-691c-44fa-9066-d2365a52d45d" TYPE="ext4" PARTUUID="18c5e0b8-02"1.4. 서버 시작 시 자동 마운트를 위한 UUID 등록 (파티션 포맷 시 UUID가 변경된다)
# vi /etc/fstab
UUID=21d5fe61-691c-44fa-9066-d2365a52d45d /opt/autocrypt/data2 ext4 defaults 0 01.5. 파티션 마운트 후 서버 재시작
# mount /dev/sdb2 /opt/autocrypt/data2
# reboot1.6. 디스크 정보 확인
# df -h2.1. hot link?
데이터나 파일의 변경이 발생하면 관련된 다른 프로그램의 데이터나 파일도 변경되도록 지시하는 연결
2.2 인터페이스 확인
ip a2.2. hotlink용 네트워크 인터페이스 추가
# vi /etc/netplan/파일명.yamlnetwork:
ethernets:
enp0s3:
dhcp4: true
# enp0s9 : 테스트 장비 hotlink 네트워크 인터페이스 명
# address : primary의 경우 addresses 10.1.1.1, secondary의 경우 10.1.1.2
enp0s9:
dhcp4: no
addresses: [10.1.1.1/24]
gateway4: 10.1.1.1
version: 22.2. 네트워크 적용
# netplan apply3.1. drbd 설치
# apt install drbd8-utils***추가 내용 hostname 설정
3.2. 설정파일 수정
# vi /etc/drbd.confglobal {
usage-count yes;
}
common {
startup {
wfc-timeout 10;
degr-wfc-timeout 10;
outdated-wfc-timeout 10;
}
syncer {
rate 100M;
}
protocol C;
}
resource r0 {
net {
after-sb-0pri discard-least-changes;
after-sb-1pri discard-secondary;
after-sb-2pri disconnect;
}
on vpki1 {
device /dev/drbd0;
disk /dev/sdb1; # drbd 대상 디바이스
address 10.1.1.1:7789;
meta-disk internal;
}
on vpki2 {
device /dev/drbd0;
disk /dev/sdb1; # drbd 대상 디바이스
address 10.1.1.2:7789;
meta-disk internal;
}
}3.2. 메타 데이터 생성
# drbdadm create-md r03.3. service 시작
service drbd start3.4. Primary 서버 설정 (Primary 서버만 작업)
# drbdadm primary --force r03.5. drbd 파티션 포맷
# mkfs.ext4 /dev/drbd03.6. DBMS 데이터 디렉토리 생성 및 마운트
# mkdir -p /opt/autocrypt/data1
# mount /dev/drbd0 /opt/autocrypt/data13.7. 디스크 정보 확인
df -h3.8. drdb 상태 확인
# cat /proc/drbd
또는
# drbd-overview
------------------------------------------------
#연결된 상태
Connected Primary/Secondary UpToDate/UpToDate
#싱크 작업 중 상태
SyncSource Primary/Secondary
#연결 시도중 상태
WFConnection Primary/Unknown
#미연결 상태
StandAlone Primary/Unknown3.9. 미 연결 상태일 경우
# drbdadm connect r0
OR
# service drbd restart참고 (연결 상태일 경우)
root@vpki1:~# drbd-overview
0:r0/0 Connected Primary/Secondary UpToDate/UpToDate
-----------------------------------------------------------------------------------
root@vpki1:~# netstat -anp | grep 7789
tcp 0 0 10.1.1.1:40083 10.1.1.2:7789 ESTABLISHED -
tcp 0 0 10.1.1.1:7789 10.1.1.2:49725 ESTABLISHED -4.1. MariaDB 설치
# apt install mariadb-server4.2. 초기 MariaDB 데이터 백업
# mv /var/lib/mysql ~/백업디렉토리/4.3. 초기 MriaDB 데이터 /opt/autocrypt/data1 디렉토리로 복사
# cp -rf ~/백업디렉토리/mysql/* /opt/autocrypt/data1/4.4. mysql 실행을 위한 링크 생성
# ln -s /opt/autocrypt/data1 /var/lib/mysql4.5. mysql 디렉토리 owner 변경
# chown -R mysql:mysql /var/lib/mysql/4.6. MariaDB 시작
# service mysql start참고url
테스트:
primary : drbdadm down r0
secondary: drbdadm primary --force r0
primary : drbdadm up r0
=> Occur split brain 해결:
# drbdadm create-md r0
# drbdadm up r0
# drbdadm connect r0
# service drbd start monitoring target : was / db
문제 발생 시 :
- 1. stop was / db / drbd
- 2. ?
monitoring target : drbd-overview or /proc/drbd
check point :
# drbd-overview
0:r0/0 *Connected* Secondary/Primary UpToDate/UpToDate
---------------------------------------------------------
** 문제 발생 시 : status is not 'Connected'-. secondary에서 primary로 변경
# drbdadm primary --force r0-. check changed state
# drbd-overview-. mount device
# mount /dev/drbd0 /opt/autocrypt/data1-. check mounted state
# df -h-. service start : DB, WAS, Primary Script?
-. Secondary Script exit