entOS7 네트워크 이중화 구성 (리눅스 본딩)
네트워크 선로에 문제가 생기거나 NIC 카드에 장애가 발생할 시 네트워크 사용이 원활하지 않을 수 있다.
이러한 장애에 대비하고자 네트워크 이중화 실습을 해보고자 한다.
cisco 에서는 etherchannel, windows에서는 Teaming, 리눅스에서는 Bonding이라고 부른다고 한다.
Active-Backup 구성을 해보겠다.
리눅스 본딩
- 여러 네트워크 카드를 사용하여 네트워크 단일 장애에 대처할 수 있음 // Active-Standby
- 여러 네트워크 카드를 사용하여 네트워크의 대역폭(Bandwidth)을 늘릴 수 있다. // Trunking
- 여러 네트워크 카드를 사용하여 데이터 송수신 부하를 분산시킬 수 있다. // Load
mode=0 (round-robin) mode 0과 1을 주로 많이 씀
mode=1 (active-backup)
mode=2 (balance-xor)
mode=3 (broadcast)
mode=4 (802.3ad)
mode=5 (balance-tlb)
mode=6 (balance-alb)
Active-Backup Mode 실습해보기
2개 이상의 NIC를 하나의 가상 NIC로 그룹화하여 다른 물리적 NIC가 고장났을 때도 통신을 할 수 잇도록 Failover 하는 모드가 Active-backup 이다.
NIC 추가
Vmware Workstation 기준
NIC 추가시켜주기 ( 그러면 리눅스 내에서는 ens?? 가 하나 추가될 것이다.)
+ NAT(Network Address Translation) 으로 설정하기
OK누르고 빠져나오기
* Vsphere나 Oracle 등 기타 가상머신들은 구글링해서 찾아보시면 된다
재부팅 후 ip a를 통해 확인해보니 기존의 ens33에 더불어 ens34가 추가되었다.
[root@localhost network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:3f:8c:9f brd ff:ff:ff:ff:ff:ff
inet 192.168.5.3/24 brd 192.168.5.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe3f:8c9f/64 scope link
valid_lft forever preferred_lft forever
3: ens34: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 00:0c:29:3f:8c:a9 brd ff:ff:ff:ff:ff:ff
NetworkManager 중단
전에 실습해본 바로 NetworkManager을 비활성화나 중단시키지 않을 시 제대로 실습이 진행이 되질 않았다. ( 본딩 구성 후 systemctl restart network 할 때)
고로, 애초에 본딩 구성 시 NetworkManager을 중단 후 본딩을 구성시켜보겠다.
[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:NetworkManager(8)
bond0, ens33, ens34 파일 생성 / 내용 변경
cd /etc/sysconfig/networkscripts/ 로 이동 후 ls 명령어를 쳐보니
ifcfg-ens33 만 있다.
( NIC를 추가한다고 해서 netowrk-scripts 디렉터리 내에 파일이 자동으로 생성되는 것이 아니다. 고로,
ens34는 따로 만들어줘야 하고 ens33을 vi를 통해서 수정을 하면 된다.
ip주소는 bond0 파일에만 설정해주고 ens33, ens34는 slave 로써 설정해주면 된다 )
[root@localhost network-scripts]# ls
ifcfg-ens33 ifdown-ippp ifdown-tunnel ifup-ippp ifup-routes
ifcfg-lo ifdown-ipv6 ifup ifup-ipv6 ifup-sit
ifdown ifdown-isdn ifup-Team ifup-isdn ifup-tunnel
ifdown-Team ifdown-post ifup-TeamPort ifup-plip ifup-wireless
ifdown-TeamPort ifdown-ppp ifup-aliases ifup-plusb init.ipv6-global
ifdown-bnep ifdown-routes ifup-bnep ifup-post network-functions
ifdown-eth ifdown-sit ifup-eth ifup-ppp network-functions-ipv6
# bond0
vi /etc/sysconfig/network-scripts/bond0
# ens33
vi /etc/sysconfig/network-scripts/ens33
# ens34
vi /etc/sysconfig/network-scripts/ens34
위와 같이 vi를 통해 ens33, ens34, bond0를 설정해주면 된다.
ls를 해보니 생성되었군ㅋ
[root@localhost network-scripts]# ls
ifcfg-bond0 ifdown-eth ifdown-tunnel ifup-ipv6 ifup-tunnel
ifcfg-ens33 ifdown-ippp ifup ifup-isdn ifup-wireless
ifcfg-ens34 ifdown-ipv6 ifup-Team ifup-plip init.ipv6-global
ifcfg-lo ifdown-isdn ifup-TeamPort ifup-plusb network-functions
ifdown ifdown-post ifup-aliases ifup-post network-functions-ipv6
ifdown-Team ifdown-ppp ifup-bnep ifup-ppp
ifdown-TeamPort ifdown-routes ifup-eth ifup-routes
ifdown-bnep ifdown-sit ifup-ippp ifup-sit
network 서비스 재시작 및 Bonding 모듈 동작 확인
systemctl restart network 를 통해 네트워크 서비스를 재시작한다.
@ 만약 오류가 뜰다면 systemctl stop NetworkManager 이나 syetemctl disable NetworkManager 을 통해 네트워크 매니저를 비활성화하거나 중단한 이후 systemctl restart network를 해보자.
lsmod | grep bonding
netstat -nr
ip a or ifconfig -a
[root@localhost modprobe.d]# systemctl restart network
[root@localhost modprobe.d]# ismod | grep bonding
bash: ismod: command not found
[root@localhost modprobe.d]# lsmod | grep bonding
bonding 152979 0
[root@localhost modprobe.d]# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.5.2 0.0.0.0 UG 0 0 0 bond0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 bond0
192.168.5.0 0.0.0.0 255.255.255.0 U 0 0 0 bond0
[root@localhost modprobe.d]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
link/ether 00:0c:29:3f:8c:9f brd ff:ff:ff:ff:ff:ff
3: ens34: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
link/ether 00:0c:29:3f:8c:9f brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:3f:8c:9f brd ff:ff:ff:ff:ff:ff
inet 192.168.5.3/24 brd 192.168.5.255 scope global bond0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe3f:8c9f/64 scope link
valid_lft forever preferred_lft forever
본딩 구성 및 상태 확인하기
cat /proc/net/bonding/bond0
reboot
[root@localhost modprobe.d]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (active-backup) # active-backup 모드 되어있는지 확인
Primary Slave: None # primary Slave 지정 안함
Currently Active Slave: ens33 # 현재 Active Slave는 ens33 이다.
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: ens33
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:3f:8c:9f
Slave queue ID: 0
Slave Interface: ens34
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:3f:8c:a9
Slave queue ID: 0
[root@localhost modprobe.d]# reboot
ping을 통한 네트워크 통신 확인
Gateway로 핑 신호를 보내본다.
ping -c 3 192.168.5.2
잘 된다. 본딩이 잘 완료된 모양이다.
[root@localhost ~]# ping -c 3 192.168.5.2
PING 192.168.5.2 (192.168.5.2) 56(84) bytes of data.
64 bytes from 192.168.5.2: icmp_seq=1 ttl=128 time=0.378 ms
64 bytes from 192.168.5.2: icmp_seq=2 ttl=128 time=0.117 ms
64 bytes from 192.168.5.2: icmp_seq=3 ttl=128 time=0.409 ms
--- 192.168.5.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.117/0.301/0.409/0.131 ms
고의로 NIC 연결을 끊어도 네트워크 통신이 잘 유지되는지 확인
vmware workstation을 통해 고의로 연결을 끊어준다.
cat /proc/net/bonding/bond0와 ip a를 통해 확인해봤을 때
ens33의 state DOWN이라고 떠있다.
ens33은 네트워크가 불량인 상태이지만 ping을 해보니 잘 연결이 된다. -> 본딩이 잘 연결되었단 뜻
[root@localhost ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: ens34
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: ens33
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 1
Permanent HW addr: 00:0c:29:3f:8c:9f
Slave queue ID: 0
Slave Interface: ens34
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:3f:8c:a9
Slave queue ID: 0
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <NO-CARRIER,BROADCAST,MULTICAST,SLAVE,UP> mtu 1500 qdisc pfifo_fast master bond0 state DOWN group default qlen 1000
link/ether 00:0c:29:3f:8c:9f brd ff:ff:ff:ff:ff:ff
3: ens34: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
link/ether 00:0c:29:3f:8c:9f brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:3f:8c:9f brd ff:ff:ff:ff:ff:ff
inet 192.168.5.3/24 brd 192.168.5.255 scope global bond0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe3f:8c9f/64 scope link
valid_lft forever preferred_lft forever
[root@localhost ~]# ping -c 3 192.168.5.2
PING 192.168.5.2 (192.168.5.2) 56(84) bytes of data.
64 bytes from 192.168.5.2: icmp_seq=1 ttl=128 time=0.287 ms
64 bytes from 192.168.5.2: icmp_seq=2 ttl=128 time=0.126 ms
64 bytes from 192.168.5.2: icmp_seq=3 ttl=128 time=0.151 ms
--- 192.168.5.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.126/0.188/0.287/0.070 ms
'OS,Network,Container' 카테고리의 다른 글
CentOS7 RAID 5 구성, parted (9) | 2020.04.16 |
---|---|
리눅스 tar 아카이브란? tar 개념, 실습 (2) | 2020.04.15 |
CentOS7 RAID1 구성, RAID 개념 (0) | 2020.04.15 |
리눅스 방화벽이란? Firewall (1) | 2020.04.15 |
CentOS7 설치 후 네트워크 설정 (1) | 2020.04.14 |