네트워크 설정

본 장에서는 ZetaData의 DB 노드와 Storage 노드의 네트워크 구성하는 방법에 대해서 설명합니다.

개요

ZetaData는 DB 노드와 Storage 노드 간의 빠른 네트워크 통신을 위해서 InfiniBand를 사용합니다. 아래의 과정으로 InfiniBand를 사용해서 ZetaData 네트워크를 설정합니다.

  1. InfiniBand 드라이버 설치

  2. InfiniBand 드라이버 동작 확인

  3. 커널 파라미터 설정

  4. 네트워크 구성 (각 InfiniBand 제조사의 네트워크 구성 메뉴얼을 참고하여 구성합니다.)

참고

InfiniBand가 없거나 사용에 문제가 있는 경우 RDMA 프로토콜 대신 TCP 프로토콜을 사용하도록 설정할 수 있습니다. 방법은 “초기화 파라미터”의 SSVR_USE_TCP 파라미터를 참고합니다.

아래 그림은 앞으로 예에서 사용할 ZetaData 노드의 InfiniBand용 IP 주소 구성입니다.

그림 1. ZetaData 노드 InfiniBand IP address 구성도


1. InfiniBand 드라이버 설치

InfiniBand를 사용하기 위해서는 OS에 맞는 적합한 드라이버와 라이브러리를 설치해야 합니다.

먼저 각 OS 별로 적합한 명령어를 통해 해당하는 라이브러리를 설치합니다.

아래는 OS별 라이브러리 설치 예입니다.

Ubuntu

$ sudo apt-cache search libibverb

위 명령어로 출력된 'Development files for the libibverbs library' package를 설치합니다.

$ sudo apt-get install libibverbs-dev

RedHat 계열(RHEL, CentOS, Fedora)

$ yum install libibverbs-devel libibverbs-devel-static

아래는 RedHat 7, 8, 9 OS 위에 멜라녹스(Mellanox)사에서 제공한 InfiniBand 드라이버를 설치하는 예시입 니다.

1. 멜라녹스 드라이버를 설치합니다.

$ ./mlnxofedinstall

  1. InfiniBand용 네트워크 설정 파일을 생성합니다. 아래는 DB 노드 0번에서의 설정 파일 예입니다.

$ echo "CONNECTED_MODE=yes
> TYPE=InfiniBand
> BOOTPROTO=none
> DEFROUTE=yes
> #IPV4_FAILURE_FATAL=no
> #IPV6INIT=yes
> #IPV6_AUTOCONF=yes
> #IPV6_DEFROUTE=yes
> #IPV6_FAILURE_FATAL=no
> NAME=ib0
> #UUID=6842318b-35d2-475a-8ae2-b3f9ec6b787a
> DEVICE=ib0
> ONBOOT=yes
> IPADDR=10.10.10.11
> NETMASK=255.255.255.0
> #PREFIX=32
> #IPV6_PEERDNS=yes
> #IPV6_PEERROUTES=yes" > /etc/sysconfig/network-scripts/ifcfg-ib0

  1. subnet manager 기능을 지원하지 않는 스위치의 경우에 opensmd 서비스를 실행합니다.

$ systemctl enable opensmd.service
$ service opensmd start

  1. 서버를 재부팅합니다.


2. InfiniBand 드라이버 동작 확인

아래는 멜라녹스사에서 제공하는 InfiniBand 드라이버의 동작을 확인하는 예입니다.

DB 노드 0번

$ ip addr show ib0
8: ib0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 65520 qdisc pfifo_fast \
state UP qlen 1024
link/infiniband 80:00:00:2c:fe:80:00:00:00:00:00:00:50:65:f3:ff:ff:88:81:d0 \
brd 00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff
inet 10.10.10.11/24 brd 10.10.10.255 scope global ib0
valid_lft forever preferred_lft forever
inet6 fe80::5265:f3ff:ff88:81d0/64 scope link
valid_lft forever preferred_lft forever
$ ibv_rc_pingpong
local address: LID 0x0006, QPN 0x008382, PSN 0xc85390, GID ::
remote address: LID 0x0002, QPN 0x02e388, PSN 0xb0671b, GID ::
8192000 bytes in 0.01 seconds = 10726.02 Mbit/sec
1000 iters in 0.01 seconds = 6.11 usec/iter

DB 노드 1번

$ ip addr show ib0
8: ib0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 65520 qdisc pfifo_fast \
state UP qlen 1024
link/infiniband 80:00:00:2c:fe:80:00:00:00:00:00:00:50:65:f3:ff:ff:88:71:40 \
brd 00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff
inet 10.10.10.12/24 brd 10.10.10.255 scope global ib0
valid_lft forever preferred_lft forever
inet6 fe80::5265:f3ff:ff88:7140/64 scope link
valid_lft forever preferred_lft forever
$ ibv_rc_pingpong 10.10.10.11
local address: LID 0x0002, QPN 0x02e388, PSN 0xb0671b, GID ::
remote address: LID 0x0006, QPN 0x008382, PSN 0xc85390, GID ::
8192000 bytes in 0.00 seconds = 13317.62 Mbit/sec
1000 iters in 0.00 seconds = 4.92 usec/iter

참고

위 예에서는 ibv_rc_pinpong 명령어로 DB 노드 간의 테스트만 진행하였으나, SSVR 노드를 포함한 모든 노드에서 각 ZetaData 노드로의 InfiniBand 드라이버 동작 테스트를 진행하는 것을 권장합니다.

Last updated