서버 설정 · 4 min read · Jan 29, 2026

GFS 및 DRBD를 사용한 Active/Active Samba CTDB 클러스터 설정 (CentOS 5.5)

GFS 및 DRBD를 사용한 Active/Active Samba CTDB 클러스터 설정 (CentOS 5.5)

이 문서에서는 GFS 및 DRBD를 사용하여 Active/Active Samba CTDB 클러스터를 설정하는 방법을 설명합니다. BRLink Servidor Linux 팀의 Rafael Marangoni가 준비했습니다.

소개

우리는 두 개의 노드를 사용하며, 두 노드는 모두 활성 노드이고 요청은 로드 밸런싱됩니다. 노드 간 데이터 복제를 위해 DRBD를 사용합니다. Active/Active 클러스터를 위해서는 두 노드가 DRBD 리소스에 동시에 쓰기 위해 ClusterFS(이 경우 GFS)를 사용해야 합니다.

1 사전 참고 사항

리눅스 배포판:

우리는 CentOS 5.5 (64비트) 배포판을 사용하고 있지만, 아마도 Fedora(그리고 Red Hat에서도 확실히)에서 작동할 것입니다. CentOS 설치는 매우 간단하고 전통적이며, 기본 패키지와 필요한 기타 항목을 선택하면 됩니다. 기억해야 할 한 가지 문제는 노드 간 데이터 복제를 위해 DRBD를 사용하므로 DRBD 전용 디스크 또는 파티션이 필요하다는 것입니다. CentOS 설치 시 디스크를 파티셔닝하기 전에 이를 기억하십시오.

네트워크 하드웨어/토폴로지:

우리는 노드당 두 개의 기가비트 NIC를 사용하며, 하나(eth0)는 네트워크(LAN)에 연결되고, 다른 하나(eth1)는 두 노드를 연결하는 크로스오버 케이블입니다.
크로스오버 케이블은 성능과 신뢰성을 향상시키기 위해 사용해야 하며, DRBD는 노드 간 데이터 복제를 위해 네트워크 스위치나 기타 장치에 의존하지 않습니다.

이 튜토리얼에서는 물리적 노드 node1.clusterbr.int 및 node2.clusterbr.int를 사용합니다:
node1.clustersmb.int: IP 10.0.0.181 (LAN) 및 IP 172.16.0.1 (크로스오버) 사용
node2.clustersmb.int: IP 10.0.0.182 (LAN) 및 IP 172.16.0.2 (크로스오버) 사용
vip1.clustersmb.int: 노드1의 클러스터 IP 10.0.0.183입니다.
vip2.clustersmb.int: 노드2의 클러스터 IP 10.0.0.184입니다.

디스크:

두 노드 모두 두 개의 디스크가 있습니다:
/dev/sda: 시스템 OS용;
/dev/sdb: DRBD용.
앞서 말했듯이, DRBD 전용 파티션을 남겨두면 하나의 디스크만 사용할 수 있습니다.

CTDB:

CTDB는 클러스터 파일 시스템에서 Samba와 함께 사용하기 위한 TDB의 클러스터 구현입니다. Active/Active 클러스터를 위해 필요하며, 두 smb 서비스가 네트워크 요청에 응답할 수 있습니다. 자세한 정보는 http://ctdb.samba.org에서 확인하십시오.

2 노드 준비

SELINUX 비활성화

SELINUX를 비활성화해야 합니다:

vi /etc/selinux/config

이 줄만 변경하십시오(나머지는 그대로 두십시오):

SELINUX=disabled

호스트 이름 설정

노드의 호스트 이름과 게이트웨이를 변경해야 합니다:

vi /etc/sysconfig/network

node1:

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=node1.clustersmb.int
GATEWAY=10.0.0.9

node2:

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=node2.clustersmb.int
GATEWAY=10.0.0.9

네트워크 인터페이스 구성

다음으로 네트워크 인터페이스를 구성합니다:

node1:

LAN 인터페이스:

vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=10.0.0.181
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=a6:1e:3d:67:66:78 

크로스오버/DRBD 인터페이스:

vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
IPADDR=172.16.0.1
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=ee:ef:ff:9a:9a:57

node2:

LAN 인터페이스:

vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=10.0.0.182
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=52:52:a1:1a:62:32

크로스오버/DRBD 인터페이스:

vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
IPADDR=172.16.0.2
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=1a:18:b2:50:96:1e

DNS 구성 설정

두 노드에서 DNS 구성을 설정합니다(네트워크에 따라):

vi /etc/resolv.conf
search clustersmb.int
nameserver 10.0.0.9

기본 호스트 이름 해상도 구성

/etc/hosts 구성(두 노드에서 동일한 구성):

vi /etc/hosts
127.0.0.1               localhost.localdomain localhost
10.0.0.191              node1.clustersmb.int   node1
10.0.0.192              node2.clustersmb.int   node2

PS: 이 파일에 다른 네트워크 주소를 가리키는 다른 줄을 추가하고 싶을 것입니다.

네트워크 연결 확인

모든 것이 정상인지 확인해 봅시다:

node1:

LAN 인터페이스를 통해 node2에 핑:

[root@node1 ~]# ping -c 2 node2

[root@node1 ~]# ping -c 2 node2
PING node2 (10.0.0.182) 56(84) bytes of data.
64 bytes from node2 (10.0.0.182): icmp_seq=1 ttl=64 time=0.089 ms
64 bytes from node2 (10.0.0.182): icmp_seq=2 ttl=64 time=0.082 ms
— node2 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.082/0.085/0.089/0.009 ms

크로스오버 인터페이스를 통해 node2에 핑:

[root@node1 ~]# ping -c 2 172.16.0.2

[root@node1 ~]# ping -c 2 172.16.0.2
PING 172.16.0.2 (172.16.0.2) 56(84) bytes of data.
64 bytes from 172.16.0.2: icmp_seq=1 ttl=64 time=0.083 ms
64 bytes from 172.16.0.2: icmp_seq=2 ttl=64 time=0.083 ms
— 172.16.0.2 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.083/0.083/0.083/0.000 ms

node2:

LAN 인터페이스를 통해 node1에 핑:

[root@node2 ~]# ping -c 2 node1

[root@node2 ~]# ping -c 2 node1
PING node1 (10.0.0.181) 56(84) bytes of data.
64 bytes from node1 (10.0.0.181): icmp_seq=1 ttl=64 time=0.068 ms
64 bytes from node1 (10.0.0.181): icmp_seq=2 ttl=64 time=0.063 ms
— node1 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.063/0.065/0.068/0.008 ms

크로스오버 인터페이스를 통해 node1에 핑:

[root@node2 ~]# ping -c 2 172.16.0.1

[root@node2 ~]# ping -c 2 172.16.0.1
PING 172.16.0.1 (172.16.0.1) 56(84) bytes of data.
64 bytes from 172.16.0.1: icmp_seq=1 ttl=64 time=1.36 ms
64 bytes from 172.16.0.1: icmp_seq=2 ttl=64 time=0.075 ms
— 172.16.0.1 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.075/0.722/1.369/0.647 ms

초기화 옵션 구성

런레벨을 3으로 설정하는 것을 선호합니다.

vi /etc/inittab

이 줄만 변경하십시오(나머지는 그대로 두십시오):

id:3:initdefault:

자동 초기화에서 일부 서비스를 제거하여 실제로 사용될 서비스만 유지하는 것을 선호합니다.

필요한 활성 서비스는 다음과 같습니다:

[root@node1 ~]# chkconfig --list | grep 3:sim

[root@node1 ~]# chkconfig –list | grep 3:sim
acpid 0:아니오 1:아니오 2:예 3:예 4:예 5:예 6:아니오
anacron 0:아니오 1:아니오 2:예 3:예 4:예 5:예 6:아니오
apmd 0:아니오 1:아니오 2:예 3:예 4:예 5:예 6:아니오
atd 0:아니오 1:아니오 2:아니오 3:예 4:예 5:예 6:아니오
cpuspeed 0:아니오 1:예 2:예 3:예 4:예 5:예 6:아니오
crond 0:아니오 1:아니오 2:예 3:예 4:예 5:예 6:아니오
irqbalance 0:아니오 1:아니오 2:예 3:예 4:예 5:예 6:아니오
kudzu 0:아니오 1:아니오 2:아니오 3:예 4:예 5:예 6:아니오
network 0:아니오 1:아니오 2:예 3:예 4:예 5:예 6:아니오
rawdevices 0:아니오 1:아니오 2:아니오 3:예 4:예 5:예 6:아니오
sshd 0:아니오 1:아니오 2:예 3:예 4:예 5:예 6:아니오
syslog 0:아니오 1:아니오 2:예 3:예 4:예 5:예 6:아니오


이 시점에서 구성 적용을 위해 두 노드를 재부팅해야 합니다.

reboot

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.