2022. 11. 25. 00:11ㆍ리눅스(Linux)
Channel Bonding이란? = 이더채널 본딩
- 채널 본딩이란 여러개의 NIC를 하나로 묶어 단일 Channel 형식으로 운영하는것을 말한다.
- 채널 본딩을 구현 할 경우 Fault Tolerance 환경을 구축할 수 있으며, 네트워크 인터페이스에 대한 Redundancy를 구현 할 수 있다.
- 폴트 플러런스란 한쪽 장치에 문제가 발생하더라도 반대쪽 장치에서 그 기능을 온전히 수행 하므로, 전체 시스템 운영에는 문제가 발생하지 않는 환경을 말한다.
- 부하도가 많은 장치의 경우 채널 본딩을 통한 네트워크 트래픽에 대한 Load Balancing을 구현 할 수 있다.
- Load Balancing은 네트워크 인터페이스 카드의 대역폭을 균형있게 사용하여 전체 네트워크 트래픽에 대한 각 장치의 부하도를 감소시킬 수 있다.(부하 분산)
[Mode 0] : Balance-rr (Round Robin)
- LoadBalancing구현 가능, 전체 NIC에 대한 순환 통신을 진행하고, 데이터 전송시에만 부하분산 진행 (Default값)
[Mode 1] : Active-Backup
- Failover, bond 내의 하나의 NIC만 통신, Main NIC에 문제가 발생 했을 경우 Bond내의 대체 NIC가 통신을 수행
[Mode 4] : 802.3ad(LACP)
- Failover, 동적 부하분산, NIC 대역폭 확장 통신 (IEEE 802.3ad 통신을 지원하는 스위치와 연결되어 있을 경우 사용 가능)
bond 0
- 논리적인 bond0(Master Device)을 생성 후 bond0이 사용할 물리적인 device들(Slave Device)(ens32, ens34)을 추가한다.
- bond0에만 ip 주소를 부여한다.
$ mode 0, 터미널로 작업
# systemctl disable NetworkManager
# systemctl stop NetworkManager
- 본딩 설정시 네트워크매니저 끄고 진행
# cd /etc/sysconfig/network-scripts
# vi ./ifcfg-bond0
DEVICE=bond0
- 장치이름
ONBOOT=yes
USERCTL=no
- 네트워크매니저 같은 것을 이용한 설정을 이용하지 않겠다라는 것이다.
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.2
DNS1=8.8.8.8
BROADCAST=192.168.1.255
# vi ./ifcfg-ens32 | # vi ./ifcfg-ens34
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes
- 밑에 추가
# vi /etc/sysconfig/network
# Created by anaconda
GATEWAYDEV=bond0
- 시스템 전체의 인터페이스에 대한 모든 기본 게이트웨이를 bond0이라는 작업
# vi /etc/modprobe.d/bonding.conf
alias bond0 bonding
- 본딩에 대한 설정 정보를 저장하는 모듈을 만드는 작업
# modprobe bonding
- 모드 적용
# systemctl restart network
- 재부팅
# cat /proc/net/bonding/bond0
- bond0 정보 확인
$ mod1 변경
# vi /etc/sysconfig/network-scripts/ifcfg-bond0
BONDING_OPTS="mode=1 miimon=100"
- 맨 아래줄에 추가해준다
# systemctl restart network
# cat /proc/net/bonding/bond0
- 모드가 Bonding Mode: fault-tolerance (active-backup)로 변경되어있는지 확인.
# watch -d -n 1 "cat /proc/net/bonding/bond0"
- 실시간 모니터링
# ping 8.8.8.8
- putty 1개를 더 틀고 입력
ens32 다운시켰을 때
ens34 다운시켰을 때
$ Network Manager 명령어로 채널본딩 설정
# ifconfig ens32 down
# ifconfig ens34 down
# mkdir /backup
# cd /etc/sysconfig/network-scripts
# mv ifcfg-ens32 ifcfg-ens34 /backup
# ls -l /backup
합계 8
-rw-r--r--. 1 root root 360 5월 16 13:01 ifcfg-ens32
-rw-r--r-- 1 root root 253 6월 8 11:51 ifcfg-ens34
# nmcli con add type bond con-name bond0 ifname bond0 mode active-backup ip4 192.168.1.100/24
연결 'bond0' (028fcca6-c5ef-43de-b313-24c53dcdfaa7)이 성공적으로 추가되었습니다.
# nmcli con mod id bond0 bond.options mode=active-backup,miimon=100
- bond0 장치의 Bonding Option 정의
- mode : Channel_Bonding Mode 정의
- miimon : 0.1초 단위의 모니터링 수행 ( Main 인터페이스에 문제가 있는지 확인 )
# nmcli conn
NAME UUID TYPE DEVICE
bond0 028fcca6-c5ef-43de-b313-24c53dcdfaa7 bond bond0
ens32 ee5baa59-9197-4393-903c-f74b64f80f59 ethernet --
ens34 d497469c-6dc2-38db-8ade-324af2f140e7 ethernet --
# nmcli conn del ens32
연결 'ens32'(ee5baa59-9197-4393-903c-f74b64f80f59)이(가) 성공적으로 삭제되었습니다.
# nmcli conn del ens34
연결 'ens34'(d497469c-6dc2-38db-8ade-324af2f140e7)이(가) 성공적으로 삭제되었습니다.
# nmcli conn
NAME UUID TYPE DEVICE
bond0 028fcca6-c5ef-43de-b313-24c53dcdfaa7 bond bond0
# nmcli conn add type bond-slave ifname ens32 con-name ens32 master bond0
연결 'ens32' (cee98a40-a3a0-4212-8555-93e26c72b101)이 성공적으로 추가되었습니다.
# nmcli conn add type bond-slave ifname ens34 con-name ens34 master bond0
연결 'ens34' (231832d3-03c8-4c7d-b326-32feb99395b1)이 성공적으로 추가되었습니다.
# systemctl restart NetworkManager
# nmcli conn
NAME UUID TYPE DEVICE
bond0 028fcca6-c5ef-43de-b313-24c53dcdfaa7 bond bond0
ens32 cee98a40-a3a0-4212-8555-93e26c72b101 ethernet ens32
ens34 231832d3-03c8-4c7d-b326-32feb99395b1 ethernet ens34
# ifconfig
bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::3b77:fed2:6929:ea56 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:8a:40:e8 txqueuelen 1000 (Ethernet)
RX packets 3 bytes 180 (180.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 19 bytes 2120 (2.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens32: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 00:0c:29:8a:40:e8 txqueuelen 1000 (Ethernet)
RX packets 4183 bytes 1449809 (1.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2690 bytes 449454 (438.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens34: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 00:0c:29:8a:40:e8 txqueuelen 1000 (Ethernet)
RX packets 166 bytes 29000 (28.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 358 bytes 56333 (55.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[ TEST ] : Terminal 2개 활성화 후 테스트
- Terminal 1번 : ping 8.8.8.8
- Terminal 2번 : watch -d -n 1 "cat /proc/net/bonding/bond0"
- Main으로 사용되는 인터페이스를 VMware에서 중지상태로 변경
- Backup 인터페이스가 활성화되며, 지속적인 통신이가능한 상태인지 확인한다.
'리눅스(Linux)' 카테고리의 다른 글
[Centos 7] sshd_config (SSH 설정 파일) (0) | 2022.11.25 |
---|---|
[Centos 7] DHCP (Dynamic Host Configuration Protocol) (1) | 2022.11.25 |
[Centos 7] 네트워크 명령어(ifconfig, Network Manager, route, netstat, IP Binding) (0) | 2022.11.24 |
[Centos 7] Linux Firewalld(방화벽) (0) | 2022.11.24 |
[Centos 7] Linux Iptables (1) | 2022.11.24 |