ocfs2 cluster
구성
두 개의 리눅스로 구성하는 예 구성은 다음과 같다고 가정함.
Hostname | ip | OS | kernel | disk |
---|---|---|---|---|
first | 192.168.0.221 | debian7.11 | 3.16.7 | 100G |
second | 192.168.0.222 | debian7.11 | 3.16.7 | 100G |
IP | host | os |
---|---|---|
192.168.200.101 | extsvr1 | ubuntu20.04 |
192.168.200.102 | extsvr2 | ubuntu20.04 |
192.168.200.201 | fep1 | ubuntu20.04 |
192.168.200.202 | fep2 | ubuntu20.04 |
192.168.123.101 | internal-extsvr1 | |
192.168.123.102 | internal-extsvr2 | |
192.168.123.201 | internal-fep1 | |
192.168.123.202 | internal-fep2 |
OCFS tools설치
first second각각에 설치함.
apt update && apt install ocfs2-tools
OCFS2 설정
순서 | 설정 항목 | 파일 혹은 명령 |
---|---|---|
1 | host 설정 | /etc/hosts |
2 | cluster layout 설정 | /etc/ocfs2/conf |
3 | kernel 설정 | /etc/sysctl.conf |
4 | o2cb시작/끝내기 | /etc/default/o2cb |
5 | ocfs2 filesystem 만들기 | mkfs.ocfs2 |
6 | ocfs2 file system mount | mount -t ocfs2 /dev/DEVICE /mount |
/etc/hosts
192.168.0.221 first
192.168.0.222 second
192.168.200.101 extsvr1 extsvr1-192
192.168.200.102 extsvr2 extsvr2-192
192.168.200.111 extsvrdev extsvrdev-192
192.168.200.201 fep1 fep1-192
192.168.200.202 fep2 fep2-192
192.168.200.211 fepdev fepdev-192
192.168.123.101 internal-extsvr1
192.168.123.102 internal-extsvr2
192.168.123.201 internal-fep1
192.168.123.202 internal-fep2
/etc/ocfs2/conf
cluster:
node_count = 2
name = cluster
node:
number = 0
cluster = cluster
ip_port = 7777
ip_address = 192.168.0.221
name = first
node:
number = 1
cluster = cluster
ip_port = 7777
ip_address = 192.168.0.222
name = second
cluster:
node_count = 4
name = woori_cluster
node:
number = 1
name = internal-extsvr1
cluster = woori_cluster
ip_port = 7777
ip_address = 192.168.123.101
node:
number = 2
name = internal-extsvr2
cluster = woori_cluster
ip_port = 7777
ip_address = 192.168.123.102
node:
number = 3
name = internal-fep1
cluster = woori_cluster
ip_port = 7777
ip_address = 192.168.123.201
node:
number = 4
name = internal-fep2
cluster = woori_cluster
ip_port = 7777
ip_address = 192.168.123.202
__ 조심할 것 __:
- node: cluster:는 첫 번째 컬럼부터.
- 각 섹션의 파라메터는 꼭 tab으로 들여쓰기한다.
- 섹션구분을 위해 꼭 빈 줄을 넣는다.
time out등 ocfs2 설정값
/etc/default/o2cb
의 내용
O2CB_ENABLED=true
O2CB_BOOTCLUSTER=cluster
O2CB_HEARTBEAT_THRESHOLD=31
O2CB_IDLE_TIMEOUT_MS=60000
O2CB_KEEPALIVE_DELAY_MS=2000
O2CB_RECONNECT_DELAY_MS=2000
O2CB_ENABLED=true
O2CB_BOOTCLUSTER=woori_cluster
O2CB_HEARTBEAT_THRESHOLD=31
O2CB_IDLE_TIMEOUT_MS=60000
O2CB_KEEPALIVE_DELAY_MS=2000
O2CB_RECONNECT_DELAY_MS=2000
항목 | 설명 |
---|---|
O2CB_ENABLED | ‘true’ means to load the driver on boot. |
O2CB_BOOTCLUSTER | If not empty, 시작할 클러스터 이름 |
O2CB_HEARTBEAT_THRESHOLD | 노드가 죽었다고 간주되기 시간(초단위) /2 + 1 |
O2CB_IDLE_TIMEOUT_MS | 네트웍이 죽었다고 생각될 시간(천분의 1초단위) |
O2CB_KEEPALIVE_DELAY_MS | 패킷이 살아서 전달될 최대지연시간(천분의 1초단위) |
O2CB_RECONNECT_DELAY_MS | 네트웍이 다시 연결될때 최소지연시간(천분의 1초단위) |
kernel설정
/etc/sysctl.conf
에 다음을 기록함.
kernel.panic_on_oops = 1
kernel.panic = 30
kernel.panic_on_oops = 1
: o2cb가 기능하도록 하는 kernel thread가 크래쉬되었을 때, cluster가 hang되지 않도록 kernel oops상태를 panic으로 바꾸어 주어야 합니다.kernel.panic = 30
: kernel panic 상태가 30초 동안 지속될 때 시스템이 자동으로 reboot되게 합니다.
sysctl -p
명령 실행
first# sysctl -p
second# sysctl -p
o2cb
명령
o2cb status
: 상태보기o2cb online
: 시작o2cb offline
: 끝내기o2cb unload
: 메모리에서 내리기
mkfs.ocfs2
옵션들
옵션 | 설명 |
---|---|
-b 블록크기 | inode의 크기, 지원하는 값은 512, 1k,2k,4k(내정값) |
-C 클러스터크기 | 지원되는 값 4k(내정값), 8k,16k,32k,256k, 512k, 1M |
–fs-feature-level=feature-level | default ,max-compat =이전버젼과 호환성유지되는 특성만, max-feature =최근에 지원되는 모든 특성 모두 허용 |
–fs_features=feature | mkfs.ocfs2(8) 맨 페이지 참고 |
-J size=저널크기 | 내정값은 64M for -Tdatafile , 256M for -Tmail ,128M for -Tvmstore |
-L 볼륨 레이블 | |
-N 노드갯수 | |
-T 쓰임 | datafiles ,mail , vmstore |
LVM 로지컬 볼륨은 쓰지 않는다.
데이터베이스 파일을 저장할거라면cluster크기를 정하지 말라.
파일시스템크기 | 적당한 클러스터크기 |
---|---|
1 GB-10 GB | 8K |
10 GB-100 Gb | 16K |
100 GB-1 TB | 32K |
1 TB-10 TB | 64K |
10 TB-16 TB | 128K |
mkfs.ocfs2 -L "wrocfs2vol" -T datafiles /dev/md1
mount /etc/fstab
wrocfs2vol /data ocfs2 _netdev,defauts 0 0