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 |
|
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