서버 설정 · 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/networknode1:
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=node1.clustersmb.int
GATEWAY=10.0.0.9node2:
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=node2.clustersmb.int
GATEWAY=10.0.0.9네트워크 인터페이스 구성
다음으로 네트워크 인터페이스를 구성합니다:
node1:
LAN 인터페이스:
vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=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-eth1DEVICE=eth1
BOOTPROTO=static
IPADDR=172.16.0.1
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=ee:ef:ff:9a:9a:57node2:
LAN 인터페이스:
vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=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-eth1DEVICE=eth1
BOOTPROTO=static
IPADDR=172.16.0.2
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=1a:18:b2:50:96:1eDNS 구성 설정
두 노드에서 DNS 구성을 설정합니다(네트워크에 따라):
vi /etc/resolv.confsearch clustersmb.int
nameserver 10.0.0.9기본 호스트 이름 해상도 구성
/etc/hosts 구성(두 노드에서 동일한 구성):
vi /etc/hosts127.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
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.