Hướng dẫn này giải thích làm thế nào để cấu hình liên kết mạng trên máy chủ Linux. Trước khi tôi bắt đầu, hãy để tôi giải thích liên kết mạng là gì và những gì nó làm. Trong môi trường Windows, liên kết mạng được gọi là mạng lưới hợp tác, đây là một tính năng giúp bất kỳ kiến trúc máy chủ cung cấp tính sẵn sàng cao và chuyển đổi dự phòng trong các trường hợp ví dụ như một trong những cáp ethernet chính trục trặc hay cấu hình sai. Có một số chế độ liên kết mà bạn có thể được thực hiện trong môi trường máy chủ của bạn. Dưới đây là một danh sách các chế độ có sẵn và những gì chúng làm: Balance-rr Chế độ này cung cấp các tính năng cân bằng tải và khả năng chịu lỗi (failover) thông qua chính sách round-robin. Có nghĩa là nó truyền tải các gói dữ liệu theo thứ tự tuần tự từ slave đầu tiên có sẵn đến slave cuối cùng. Active-Backup Chế độ này cung cấp tính năng chống lỗi thông qua chính sách hoạt động sao lưu. Nó có nghĩa rằng một khi boding ethernet là được mở, chỉ có 1 trong những slave ethernet đang hoạt động. Các slave ethernet khác sẽ chỉ được kích hoạt khi và chỉ khi slave hoạt động hiện tại không thể mở lên. Balance-xor Chế độ này cung cấp cân bằng tải và chịu lỗi. Nó truyền dựa trên các chính sách selected transmit hash. Chính sách thay thế có thể được lựa chọn thông qua tùy chọn xmit_hash_policy. Broadcast Chế độ này chỉ cung cấp khả năng chịu lỗi. Nó truyền tất cả mọi thứ trên tất cả các giao diện slave ethernet. 802.3ad Chế độ này cung cấp cân bằng tải và chịu lỗi. Nó tạo ra một nhóm tập hợp mà chia sẻ các thiết lập tốc độ và duplex giống nhau. Nó sử dụng tất cả các giao diện slave ethernet ở trình tập hợp hoạt động, nó được dựa trên các đặc điểm kỹ thuật 802.3ad. Balance-TLB Chế độ này cung cấp khả năng cân bằng tải, từ TLB đại diện cho cân bằng tải truyền dẫn. Đối với chế độ này, nếu cấu hình tlb_dynamic_lb = 1, sau đó lưu lượng gửi đi được phân phối theo tải trọng hiện tại trên mỗi slave. Nếu cấu hình tlb_dynamic_lb = 0 thì cân bằng tải bị vô hiệu hóa, tải trọng được phân phối duy nhất bằng cách sử dụng phân phối hasd. Đối với chế độ này, các ethtool phải hỗ trợ các trình điều khiển cơ sở để lấy tốc độ của mỗi slave. Balance-ALB Chế độ này cung cấp khả năng cân bằng tải, từ ALB đại diện cho cân bằng tải thích ứng. Tương tự như balance-TLB, ngoại trừ việc gửi và nhận lưu lượng được liên kết. Nó nhận cân bằng tải bằng cách đạt được đàm phán ARP. Các trình điều khiển liên kết chặn ARP Repiles gửi qua hệ thống cục bộ trên đường ra và ghi đè địa chỉ phần cứng nguồn với địa chỉ phần cứng duy nhất của một trong những người slave trong liên kết. Đối với chế độ này, các ethtool phải hỗ trợ các trình điều khiển cơ sở để lấy tốc độ của mỗi slave. Hướng dẫn cấu hình Trước khi chúng ta bắt đầu cấu hình, đầu tiên chúng ta cần phải đảm bảo chúng ta có ít nhất 2 interface Ethernet được cấu hình trong máy chủ của chúng tôi. Để kiểm tra điều này, hãy vào thư mục cấu hình mạng và liệt kê các interface Ethernet có sẵn. Dưới đây là các bước: Mã: cd /etc/sysconfig/network-scripts/ ls *ifcfg*eth* Kết quả là: Mã: ifcfg-eth0 ifcfg-eth1 Chú ý rằng chúng tôi hiện có 2 interface Ethernet của thiết lập trong máy chủ của chúng tôi đó là eth0 và eth1. Bây giờ chúng ta cần cấu hình một interface liên kết gọi là BOND0. Interface này sẽ có một interface Ethernet ảo chứa các interface Ethernet vật lý của eth0 và eth1. Dưới đây là các bước: Mã: vi ifcfg-bond0 Mã: DEVICE=bond0 ONBOOT=yes MASTER=yes IPADDR=172.20.43.110 NETMASK=255.255.255.0 GATEWAY=172.20.43.1 BONDING_OPTS="mode=1 miimon=100" TYPE=Ethernet Sau đó chạy lênh: Mã: ls *ifcfg*bon* Kết quả là: Mã: ifcfg-bond0 Xin lưu ý rằng bên trong interface BOND0, tôi đã bao gồm một địa chỉ IP. Địa chỉ IP này sẽ là địa chỉ IP duy nhất kết nối với máy chủ của chúng tôi. Để tiến hành quá trình này, chúng ta cần phải sửa đổi các interface Ethernet vật lý liên quan đến interface BOND0. Dưới đây là các bước: Mã: vi ifcfg-eth0 Mã: DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no MASTER=bond0 SLAVE=yes Mã: vi ifcfg-eth1 Mã: DEVICE=eth1 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no MASTER=bond0 SLAVE=yes Để tiến hành cấu hình. Hãy tạo ra một tập tin cấu hình liên kết có tên bonding.conf trong thư mục /etc/modprobe.d. Dưới đây là các bước: Mã: vi /etc/modprobe.d/bonding.conf Mã: alias bond0 bonding options bond0 mode=1 miimon=100 Mã: modprobe bonding Dựa trên cấu hình trên, chúng ta đã cấu hình một module liên kết sử dụng interface BOND0. Chúng tôi cũng chỉ định cấu hình liên kết để sử dụng chế độ = 1 đó là chính sách hoạt động sao lưu. Các tùy chọn miimon = 100 đại diện cho tần suất giám sát cho máy chủ liên kết của chúng tôi để theo dõi tình trạng interface trong milli seconds. Theo mô tả ở trên, chế độ này sẽ cung cấp tính năng chịu lỗi trong cấu hình mạng máy chủ. Sau đó, hãy khởi động lại các dịch vụ mạng để áp dụng cấu hình mới. Mã: service network restart Mã: Shutting down interface eth0: [ OK ] Shutting down interface eth1: [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface bond0: [ OK ] Tuyệt vời, bây giờ chúng tôi đã nạp cấu hình mới mà chúng tôi đã thực hiện ở trên. Bạn sẽ nhận thấy rằng interface mới gọi là BOND0 sẽ được hiển thị trên danh sách mạng. Bạn cũng sẽ nhận thấy rằng không có địa chỉ IP được gán cho interface eth0 và interface eth1, chỉ có giao diện BOND0 cho thấy IP. Mã: ifconfig Mã: bond0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88 inet addr:172.20.43.110 Bcast:172.20.43.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe61:e488/64 Scope:Link UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:1723 errors:0 dropped:0 overruns:0 frame:0 TX packets:1110 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:147913 (144.4 KiB) TX bytes:108429 (105.8 KiB) eth0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:1092 errors:0 dropped:0 overruns:0 frame:0 TX packets:1083 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:103486 (101.0 KiB) TX bytes:105439 (102.9 KiB) eth1 Link encap:Ethernet HWaddr 08:00:27:61:E4:88 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:632 errors:0 dropped:0 overruns:0 frame:0 TX packets:28 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:44487 (43.4 KiB) TX bytes:3288 (3.2 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:208 errors:0 dropped:0 overruns:0 frame:0 TX packets:208 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:18080 (17.6 KiB) TX bytes:18080 (17.6 KiB) Bạn cũng có thể kiểm tra tình trạng liên kết thông qua lệnh này: Mã: cat /proc/net/bonding/bond0 Mã: Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: eth0 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eth0 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 08:00:27:61:e4:88 Slave queue ID: 0 Slave Interface: eth1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 08:00:27:c8:46:40 Slave queue ID: 0 Thử nghiệm giai đoạn Bây giờ là tất cả mọi thứ được cấu hình như mong đợi. Hãy thực hiện một thử nghiệm đơn giản để đảm bảo cấu hình chúng tôi làm là đúng. Đối với thử nghiệm này, chúng tôi sẽ đăng nhập vào một máy chủ mới (hoặc Linux desktop) và bắt đầu ping máy chủ liên kết của chúng tôi. Dưới đây là các bước: Mã: login as: root root@172.20.43.120's password: Last login: Wed Sep 14 12:50:15 2016 from 172.20.43.80 Mã: ping 172.20.43.110 Mã: PING 172.20.43.110 (172.20.43.110) 56(84) bytes of data. 64 bytes from 172.20.43.110: icmp_seq=1 ttl=64 time=0.408 ms 64 bytes from 172.20.43.110: icmp_seq=2 ttl=64 time=0.424 ms 64 bytes from 172.20.43.110: icmp_seq=3 ttl=64 time=0.415 ms 64 bytes from 172.20.43.110: icmp_seq=4 ttl=64 time=0.427 ms 64 bytes from 172.20.43.110: icmp_seq=5 ttl=64 time=0.554 ms 64 bytes from 172.20.43.110: icmp_seq=6 ttl=64 time=0.443 ms 64 bytes from 172.20.43.110: icmp_seq=7 ttl=64 time=0.663 ms 64 bytes from 172.20.43.110: icmp_seq=8 ttl=64 time=0.961 ms 64 bytes from 172.20.43.110: icmp_seq=9 ttl=64 time=0.461 ms Trong thời gian này, chúng ta hãy quay trở lại máy chủ liên kết của chúng tôi và tắt giao diện ethernet eth0. Dưới đây là các bước: Mã: ifconfig eth0 Mã: eth0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:1092 errors:0 dropped:0 overruns:0 frame:0 TX packets:1083 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:103486 (201.0 KiB) TX bytes:105439 (122.9 KiB) Mã: ifdown eth0 Bây giờ chúng tôi đã tắt các dịch vụ cho giao diện ethernet eth0. Hãy kiểm tra tình trạng liên kết. Dưới đây là các bước: Mã: cat /proc/net/bonding/bond0 Mã: Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: eth1 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eth1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 08:00:27:c8:46:40 Slave queue ID: 0 Bạn sẽ nhận thấy, rằng bây giờ interface eth0 không tồn tại trong tình trạng liên kết nữa. Trong thời gian này, chúng ta hãy quay trở lại máy chủ thử nghiệm trước đó và kiểm tra ping liên tục đến máy chủ liên kết của chúng tôi. Mã: 64 bytes from 172.20.43.110: icmp_seq=22 ttl=64 time=0.408 ms 64 bytes from 172.20.43.110: icmp_seq=23 ttl=64 time=0.402 ms 64 bytes from 172.20.43.110: icmp_seq=24 ttl=64 time=0.437 ms 64 bytes from 172.20.43.110: icmp_seq=25 ttl=64 time=0.504 ms 64 bytes from 172.20.43.110: icmp_seq=26 ttl=64 time=0.401 ms 64 bytes from 172.20.43.110: icmp_seq=27 ttl=64 time=0.454 ms 64 bytes from 172.20.43.110: icmp_seq=28 ttl=64 time=0.432 ms 64 bytes from 172.20.43.110: icmp_seq=29 ttl=64 time=0.434 ms 64 bytes from 172.20.43.110: icmp_seq=30 ttl=64 time=0.411 ms Bây giờ bạn sẽ thấy rằng mặc dù chúng ta có tắt interface eth0, chúng tôi vẫn có thể ping và truy cập vào máy chủ liên kết của chúng tôi. Bây giờ chúng ta hãy làm mở lại eth0 và tắt interface eth1. Mã: ifup eth0 cat /proc/net/bonding/bond0 Mã: Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: eth1 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eth1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 08:00:27:c8:46:40 Slave queue ID: 0 Slave Interface: eth0 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 08:00:27:61:e4:88 Slave queue ID: 0 Khi interface eth0 là đã được mở, chúng ta hãy tắt interface eth1. Mã: ifdown eth1 cat /proc/net/bonding/bond0 Mã: Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: eth0 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eth0 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 08:00:27:61:e4:88 Slave queue ID: 0 Bây giờ chúng ta hãy quay trở lại máy chủ thử nghiệm và kiểm tra những gì xảy ra khi thực hiện ping tới máy chủ liên kết của chúng tôi Mã: 64 bytes from 172.20.43.110: icmp_seq=84 ttl=64 time=0.437 ms 64 bytes from 172.20.43.110: icmp_seq=85 ttl=64 time=0.504 ms 64 bytes from 172.20.43.110: icmp_seq=86 ttl=64 time=0.401 ms 64 bytes from 172.20.43.110: icmp_seq=87 ttl=64 time=0.454 ms 64 bytes from 172.20.43.110: icmp_seq=88 ttl=64 time=0.432 ms 64 bytes from 172.20.43.110: icmp_seq=89 ttl=64 time=0.434 ms 64 bytes from 172.20.43.110: icmp_seq=90 ttl=64 time=0.411 ms 64 bytes from 172.20.43.110: icmp_seq=91 ttl=64 time=0.420 ms 64 bytes from 172.20.43.110: icmp_seq=92 ttl=64 time=0.487 ms Chúng tôi đã cấu hình thành công và đã được chứng minh máy chủ liên kết của chúng tôi đã sẵn sàng.