메뉴 닫기

ceph osd node간 이더넷 본딩 설정.

전체적인 설계시 osd 노드간의 본딩 구성으로 네트워크를 구성하는 방식은 일반 스토리지에서의 본딩 구성과 크게 다르지 않다.

10G 포트 한개로 통신시 서로 다른 두 노드간의 iperf를 비요하여 보면 9g로 통신됨을 알 것이다.

보통 네트워크 전용의 80~90%가 실제 사용되는 이유이다.

이에 본딩 구성 후 iperf 측정해보면 약 18G로 통신됨을 확인할 수 있을 것이다.

본딩은 두개의 이더넷 포트를 하나의 포트처럼 사용하는 구조를 가지고 있다.

10g랜카드 두개 혹은 2개포트가 있는 랜카드를 이용하여 구성하며 방법은 다음과 같다.

1. 모듈 추가.
vi /etc/modules
———————————-
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with “#” are ignored.
— bonding
————————————

# apt-get install ifenslave

2. 네트웍 디바이스 네임 ethx로 변경
vi /etc/default/grub
———————————————————————————-
GRUB_CMDLINE_LINUX=”net.ifnames=0 biosdevname=0″
———————————————————————————-
grub-mkconfig -o /boot/grub/brub.cfg 또는 update-grub

3. 네트웍 파일 수정.

auto eth0
iface eth0 inet manual
bond-master bond0

auto eth1
iface eth1 inet manual
bond-master bond0

auto bond0
iface bond0 inet static
address 서버 아이피.
netmask 서버 넷마스크
gateway 서버 게이트웨이
dns-nameserver 네임서버주소
post-up ifconfig bond0 mtu 1500
bond-mode 0
bond-miimon 100
bond-lacp-rate 1
bond-slaves eth1 eth0

4. system reboot

5. 확인.

root@ssd-osd-225-220:~# ifconfig
bond0 Link encap:Ethernet HWaddr 6c:f4:3r:f4:g5:g2
inet addr:10.10.10.22 Bcast:10.10.10.255 Mask:255.255.224.0
inet6 addr: fe80::6eb3:11ff:fe3b:50ef/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:622409670 errors:0 dropped:0 overruns:0 frame:0
TX packets:495570901 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:805682011054 (805.6 GB) TX bytes:643110871173 (643.1 GB)

eth0 Link encap:Ethernet HWaddr 6c:f4:3r:f4:g5:g2
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:318371644 errors:0 dropped:0 overruns:0 frame:0
TX packets:247501961 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:412128235276 (412.1 GB) TX bytes:321114066146 (321.1 GB)

eth1 Link encap:Ethernet HWaddr 6c:f4:3r:f4:g5:g2
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:304038026 errors:0 dropped:0 overruns:0 frame:0
TX packets:248068940 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:393553775778 (393.5 GB) TX bytes:321996805027 (321.9 GB)

eth0과 eth1 이 bond0으로 묶여 있음을 확인.

실제 본딩된 것으로 네트워크 통신이 되는 확인은 iperf를 이용하여 확인해보길 바란다.

참고) 본딩 설정시 mode를 선택하게 된다. 각각의 값에 따라 방식이 다르니 아래를 참고 하길 바란다.

balance-rr or 0 — Sets a round-robin policy for fault tolerance and load balancing. Transmissions are received and sent out sequentially on each bonded slave interface beginning with the first one available.

active-backup or 1 — Sets an active-backup policy for fault tolerance. Transmissions are received and sent out via the first available bonded slave interface. Another bonded slave interface is only used if the active bonded slave interface fails.

balance-xor or 2 — Sets an XOR (exclusive-or) policy for fault tolerance and load balancing. Using this method, the interface matches up the incoming request’s MAC address with the MAC address for one of the slave NICs. Once this link is established, transmissions are sent out sequentially beginning with the first available interface.
broadcast or 3 — Sets a broadcast policy for fault tolerance. All transmissions are sent on all slave interfaces.

802.3ad or 4 — Sets an IEEE 802.3ad dynamic link aggregation policy. Creates aggregation groups that share the same speed and duplex settings. Transmits and receives on all slaves in the active aggregator. Requires a switch that is 802.3ad compliant.

balance-tlb or 5 — Sets a Transmit Load Balancing (TLB) policy for fault tolerance and load balancing. The outgoing traffic is distributed according to the current load on each slave interface. Incoming traffic is received by the current slave. If the receiving slave fails, another slave takes over the MAC address of the failed slave.

balance-alb or 6 — Sets an Active Load Balancing (ALB) policy for fault tolerance and load balancing. Includes transmit and receive load balancing for IPV4 traffic. Receive load balancing is achieved through ARP negotiation.

이제 우리는 OSD 스토리지 본딩 설정을 위와 같이 마쳤다.

다음은 본딩된 각각의 스토리자가 ceph 노드로 통신 할 수 있도록 환경 설정을 맞춰보자.

ceph.conf 파일 [osd] 설정을 다음과 같이 진행하면 된다.

[osd.0]
host = ceph_osd.1
public_addr = 공용아이피.
cluster_addr = 본딩아이피.

공용아이피 와 본딩 아이피를 나눈 이유는 다음과 같다.

하나의 대역으로 움직이는 ceph의 경우 클라이언트에서 던지고 받는 질의 답변등에 대해 저널링화 시킨다 또한 모니터링 서버에의 initial과정에서도 적지 않은
네트워크 흐름을 보인다 이때 osd 노드간 통신시 발생되는 트래픽과 합쳐지게 될시 병목현상이 발생 할 수도 있으며, 네트워크 부하 또한 발생을 피할 수 없을 것이다.
이것을 완화 시키기 위한 조취로 공용아이피와 클러스터 아이피(본딩 아이피)로 나누게 된 배경이 있으니 참고하길 바란다.

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x