Cách cấu hình liên kết mạng dự phòng và khả dụng cao trên Linux

theanh

Administrator
Nhân viên
Bài hướng dẫn này giải thích cách cấu hình liên kết mạng trên máy chủ Linux. Trước khi bắt đầu, hãy để tôi giải thích liên kết mạng là gì và nó hoạt động như thế nào. Trong môi trường Windows, liên kết mạng được gọi là nhóm mạng, đây là tính năng giúp mọi kiến trúc máy chủ cung cấp tính khả dụng cao và chuyển đổi dự phòng trong các tình huống mà một trong những cáp Ethernet chính bị trục trặc hoặc bị cấu hình sai.

Thông thường, đây là phương pháp hay nhất và là tính năng bắt buộc phải triển khai khi bạn thiết lập máy chủ cho mục đích sản xuất. Mặc dù tính năng này có thể được thực hiện trong cấu hình môi trường Linux, nhưng trước tiên bạn phải xác nhận với quản trị viên mạng của mình để đảm bảo các thiết bị chuyển mạch được liên kết với máy chủ của bạn có hỗ trợ liên kết mạng. Có một số chế độ liên kết mà bạn có thể triển khai trong môi trường máy chủ của mình. Dưới đây là danh sách các chế độ khả dụng và chức năng của chúng:
  • 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 (chuyển đổi dự phòng) thông qua chính sách luân phiên. Có nghĩa là nó truyền các gói tin theo thứ tự tuần tự từ slave đầu tiên khả dụng đến slave cuối cùng.
  • Active-Backup
    Chế độ này cung cấp các tính năng chịu lỗi thông qua chính sách active-backup. Điều này có nghĩa là sau khi ethernet liên kết hoạt động, chỉ có 1 trong số các slave ethernet hoạt động. Slave ethernet khác sẽ chỉ hoạt động nếu và chỉ khi slave đang hoạt động hiện tại không hoạt động. Nếu bạn chọn chế độ này, bạn sẽ nhận thấy rằng địa chỉ MAC liên kết chỉ hiển thị bên ngoài trên một bộ điều hợp mạng. Điều này nhằm tránh gây nhầm lẫn cho bộ chuyển mạch.
  • Balance-xor
    Chế độ này cung cấp khả năng cân bằng tải và chịu lỗi. Nó truyền dựa trên chính sách băm truyền đã chọn. Các chính sách truyền thay thế có thể được chọn thông qua tùy chọn xmit_hash_policy.
  • Phát sóng
    Chế độ này chỉ cung cấp khả năng chịu lỗi. Nó truyền mọi thứ trên tất cả các giao diện ethernet slave.
  • 802.3ad
    Chế độ này cung cấp khả năng cân bằng tải và chịu lỗi. Nó tạo ra một nhóm tổng hợp chia sẻ cùng một cài đặt tốc độ và song công. Nó sử dụng tất cả các giao diện ethernet slave trong bộ tổng hợp hoạt động, nó dựa trên thông số kỹ thuật 802.3ad. Để triển khai chế độ này, ethtool phải hỗ trợ trình điều khiển cơ sở để truy xuất tốc độ và chế độ song công của mỗi slave. Bộ chuyển mạch cũng phải hỗ trợ tổng hợp liên kết động. Thông thường, điều này yêu cầu sự can thiệp của Kỹ sư mạng để cấu hình chi tiết.
  • Balance-TLB
    Chế độ này cung cấp khả năng cân bằng tải vì tên TLB biểu thị cân bằng tải truyền. Đối với chế độ này, nếu cấu hình tlb_dynamic_lb = 1, thì lưu lượng đi được phân phối theo tải 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, nhưng tải chỉ được phân phối bằng cách sử dụng phân phối hasd. Đối với chế độ này, ethtool phải hỗ trợ trình điều khiển cơ sở để truy xuất tốc độ của từng slave.
  • Balance-ALB
    Chế độ này cung cấp khả năng cân bằng tải vì tên TLB biểu thị cân bằng tải thích ứng. Tương tự như balance-tlb, ngoại trừ cả lưu lượng gửi và nhận đều được liên kết. Nó nhận được cân bằng tải bằng cách đạt được đàm phán ARP. Trình điều khiển liên kết chặn các Phản hồi ARP do hệ thống cục bộ gửi trên đường đi và ghi đè địa chỉ phần cứng nguồn bằng địa chỉ phần cứng duy nhất của một trong các slave trong liên kết. Đối với chế độ này, ethtool phải hỗ trợ trình điều khiển cơ sở để truy xuất tốc độ của từng slave.


1. Lưu ý sơ bộ​

Đối với hướng dẫn này, tôi đang sử dụng Oracle Linux 6.4 ở phiên bản 32 bit. Xin lưu ý rằng mặc dù cấu hình được thực hiện trên Oracle Linux, các bước cũng áp dụng cho bản phân phối CentOS và Red Hat OS cũng như các hệ thống 64Bit. Kết quả cuối cùng của thiết lập ví dụ của chúng tôi sẽ cho thấy kết nối được thực hiện với máy chủ liên kết của chúng tôi sẽ vẫn được kết nối ngay cả khi tôi đã tắt 1 trong các mạng ethernet. Trong ví dụ này, tôi sẽ chỉ cách áp dụng liên kết mạng bằng chế độ 1 là chính sách sao lưu chủ động.


2. Giai đoạn cài đặt​

Đối với quy trình này, không cần cài đặt. Cài đặt Linux mặc định của máy chủ bao gồm tất cả các gói cần thiết cho cấu hình liên kết mạng.


3. Giai đoạn cấu hình​

Trước khi bắt đầu cấu hình, trước tiên chúng ta cần đảm bảo có ít nhất 2 giao diện ethernet được cấu hình trong máy chủ của mình. Để 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 giao diện ethernet khả dụng. 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
Lưu ý rằng hiện tại chúng ta có 2 giao diện ethernet được thiết lập trong máy chủ của mình là ETH0 và ETH1.

Bây giờ hãy cấu hình một giao diện liên kết có tên là BOND0. Giao diện này sẽ là một giao diện ethernet ảo chứa giao diện ethernet vật lý của ETH0 và ETH1. Sau đây là các bước thực hiện:
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:
Mã:
ls *ifcfg*bon*
Kết quả là:
Mã:
ifcfg-bond0

Vậy là xong. Xin lưu ý rằng bên trong giao diện BOND0, tôi đã bao gồm một địa chỉ IP. Địa chỉ IP này sẽ là địa chỉ IP duy nhất được kết nối với máy chủ của chúng tôi. Để tiếp tục quá trình, chúng tôi cần sửa đổi giao diện ethernet vật lý liên quan đến giao diện 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
Xong. Chúng tôi đã thực hiện sửa đổi giao diện ETH0 và ETH1. Lưu ý rằng chúng tôi đã xóa địa chỉ IP bên trong cả hai giao diện và thêm MASTER = bond0. Điều này là cần thiết để xác thực rằng cả hai giao diện sẽ là giao diện ảo dành riêng cho giao diện ethernet BOND0.

Để tiến hành cấu hình. Hãy tạo một tệp cấu hình liên kết có tên là bonding.conf trong /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 tôi đã cấu hình một mô-đun liên kết bằng giao diện BOND0. Chúng tôi cũng chỉ định cấu hình liên kết để sử dụng mode = 1 là chính sách sao lưu chủ động. Optionmiimon = 100 biểu thị tần suất giám sát cho máy chủ liên kết của chúng tôi để giám sát trạng thái giao diện tính bằng mili giây. Theo mô tả ở trên, chế độ này sẽ cung cấp các tính năng chịu lỗi trong cấu hình mạng máy chủ.

Khi mọi thứ đã được thiết lập, hãy khởi động lại dịch vụ mạng để tải cấu hình mới. Dưới đây là các bước:
Mã:
service network restart
Mã:
Tắt giao diện eth0: [ OK ]
Tắt giao diện eth1: [ OK ]
Tắt giao diện vòng lặp: [ OK ]
Mở giao diện vòng lặp: [ OK ]
Mở giao diện bond0: [ OK ]

Tuyệt vời, giờ chúng ta đã tải xong cấu hình mới mà chúng ta đã tạo ở trên. Bạn sẽ thấy rằng giao diện mới có tên 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 nào được gán cho giao diện ETH0 và ETH1, chỉ có giao diện BOND0 hiển thị IP.
Mã:
ifconfig
Mã:
bond0 Liên kết 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 Phạm vi:Liên kết
ĐANG CHẠY PHÁT SÓNG CHÍNH MULTICAST MTU:1500 Số liệu:1
Gói RX:1723 lỗi:0 bị loại bỏ:0 tràn:0 khung:0
Gói TX:1110 lỗi:0 bị loại bỏ:0 tràn:0 sóng mang:0
va chạm:0 txqueuelen:0
RX byte:147913 (144,4 KiB) TX byte:108429 (105,8 KiB)
Mã:
eth0 Liên kết encap:Ethernet HWaddr 08:00:27:61:E4:88
LÊN PHÁT SÓNG CHẠY SLAVE MULTICAST MTU:1500 Số liệu:1
Gói RX:1092 lỗi:0 bị loại bỏ:0 tràn:0 khung:0
Gói TX:1083 lỗi:0 bị loại bỏ:0 tràn:0 sóng mang:0
va chạm:0 txqueuelen:1000
RX byte:103486 (101,0 KiB) TX byte:105439 (102,9 KiB)
Mã:
eth1 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
ĐANG CHẠY PHÁT SÓNG ĐA PHÁT SLAVE MTU:1500 Metric:1
Gói RX:632 lỗi:0 bị loại bỏ:0 tràn:0 khung:0
Gói TX:28 lỗi:0 bị loại bỏ:0 tràn:0 sóng mang:0
va chạm:0 txqueuelen:1000
Byte RX:44487 (43,4 KiB) Byte TX:3288 (3,2 KiB)
Mã:
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 trạng thái liên kết thông qua lệnh này:
Mã:
cat /proc/net/bonding/bond0
Mã:
Trình điều khiển liên kết kênh Ethernet: v3.6.0 (26 tháng 9 năm 2009)
Mã:
Chế độ liên kết: chịu lỗi (active-backup)
Slave chính: Không có
Slave đang hoạt động: eth0
Trạng thái MII: đang hoạt động
Khoảng thời gian thăm dò MII (ms): 100
Độ trễ khi hoạt động (ms): 0
Độ trễ khi hoạt động (ms): 0
Mã:
Giao diện Slave: eth0
Trạng thái MII: đang hoạt động
Tốc độ: 1000 Mbps
Song công: đầy đủ
Số lần liên kết lỗi: 0
Địa chỉ phần cứng cố định: 08:00:27:61:e4:88
ID hàng đợi Slave: 0
Mã:
Giao diện Slave: eth1
Trạng thái MII: đang hoạt động
Tốc độ: 1000 Mbps
Duplex: đầy đủ
Số lần lỗi liên kết: 0
Địa chỉ HW cố định: 08:00:27:c8:46:40
ID hàng đợi Slave: 0
Lưu ý ở trên rằng chúng ta đã chuyển đổi thành công các giao diện ETH0 và ETH1 thành cấu hình liên kết bằng chế độ sao lưu chủ động. Cũng nêu rõ rằng bây giờ máy chủ đang sử dụng giao diện ETH0, ETH1 sẽ là giao diện sao lưu.


4. Giai đoạn kiểm tra​

Bây giờ 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 ta đã thực hiện là chính xác. Đố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 máy tính để bàn Linux) và bắt đầu ping máy chủ liên kết để xem có xảy ra kết nối gián đoạn trong quá trình thử nghiệm hay không. Dưới đây là các bước:
Mã:
đăng nhập với tư cách: root
Mật khẩu của [emailprotected]:
Lần đăng nhập cuối: Thứ 4, ngày 14 tháng 9 năm 2016 lúc 12:50:15 từ 172.20.43.80
Mã:
ping 172.20.43.110
Mã:
PING 172.20.43.110 (172.20.43.110) 56(84) byte dữ liệu.
64 byte từ 172.20.43.110: icmp_seq=1 ttl=64 time=0.408 ms
64 byte từ 172.20.43.110: icmp_seq=2 ttl=64 thời gian=0,424 ms
64 byte từ 172.20.43.110: icmp_seq=3 ttl=64 thời gian=0,415 ms
64 byte từ 172.20.43.110: icmp_seq=4 ttl=64 thời gian=0,427 ms
64 byte từ 172.20.43.110: icmp_seq=5 ttl=64 thời gian=0,554 ms
64 byte từ 172.20.43.110: icmp_seq=6 ttl=64 thời gian=0,443 ms
64 byte từ 172.20.43.110: icmp_seq=7 ttl=64 thời gian=0,663 ms
64 byte từ 172.20.43.110: icmp_seq=8 ttl=64 time=0.961 ms
64 byte từ 172.20.43.110: icmp_seq=9 ttl=64 time=0.461 ms
64 byte từ 172.20.43.110: icmp_seq=10 ttl=64 time=0.544 ms
64 byte từ 172.20.43.110: icmp_seq=11 ttl=64 time=0.412 ms
64 byte từ 172.20.43.110: icmp_seq=12 ttl=64 time=0.464 ms
64 byte từ 172.20.43.110: icmp_seq=13 ttl=64 time=0.432 ms
Trong thời gian này, hãy quay lại máy chủ liên kết và tắt giao diện ethernet ETH0. Dưới đây là các bước:
Mã:
ifconfig eth0
Mã:
eth0 Liên kết encap:Ethernet HWaddr 08:00:27:61:E4:88
LÊN PHÁT SÓNG CHẠY SLAVE ĐA PHÁT MTU:1500 Số liệu:1
Gói RX:1092 lỗi:0 bị loại bỏ:0 tràn:0 khung:0
Gói TX:1083 lỗi:0 bị loại bỏ:0 tràn:0 sóng mang:0
va chạm:0 txqueuelen:1000
RX byte:103486 (201,0 KiB) TX byte:105439 (122,9 KiB)
Mã:
ifdown eth0
Bây giờ chúng ta đã tắt các dịch vụ cho giao diện mạng ETH0. Hãy kiểm tra trạng thái liên kết. Sau đây là các bước:
Mã:
cat /proc/net/bonding/bond0
Mã:
Trình điều khiển liên kết kênh Ethernet: v3.6.0 (ngày 26 tháng 9 năm 2009)
Mã:
Chế độ liên kết: chịu lỗi (active-backup)
Slave chính: Không có
Slave hiện đang hoạt động: eth1
Trạng thái MII: hoạt động
Khoảng thời gian thăm dò MII (ms): 100
Độ trễ khi hoạt động (ms): 0
Độ trễ khi hoạt động (ms): 0
Mã:
Giao diện Slave: eth1
Trạng thái MII: hoạt động
Tốc độ: 1000 Mbps
Song công: đầy đủ
Số lần lỗi liên kết: 0
Địa chỉ HW cố định: 08:00:27:c8:46:40
ID hàng đợi Slave: 0
Bạn sẽ nhận thấy rằng hiện tại giao diện ETH0 không còn tồn tại trong trạng thái liên kết nữa. Trong thời gian này, hãy quay 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 byte từ 172.20.43.110: icmp_seq=22 ttl=64 time=0.408 ms
64 byte từ 172.20.43.110: icmp_seq=23 ttl=64 time=0.402 ms
64 byte từ 172.20.43.110: icmp_seq=24 ttl=64 time=0.437 ms
64 byte từ 172.20.43.110: icmp_seq=25 ttl=64 time=0.504 ms
64 byte từ 172.20.43.110: icmp_seq=26 ttl=64 time=0.401 ms
64 byte từ 172.20.43.110: icmp_seq=27 ttl=64 time=0.454 ms
64 byte từ 172.20.43.110: icmp_seq=28 ttl=64 time=0.432 ms
64 byte từ 172.20.43.110: icmp_seq=29 ttl=64 time=0.434 ms
64 byte từ 172.20.43.110: icmp_seq=30 ttl=64 time=0.411 ms
64 byte từ 172.20.43.110: icmp_seq=31 ttl=64 time=0.554 ms
64 byte từ 172.20.43.110: icmp_seq=32 ttl=64 time=0.452 ms
64 byte từ 172.20.43.110: icmp_seq=33 ttl=64 time=0.408 ms
64 byte từ 172.20.43.110: icmp_seq=34 ttl=64 time=0.491 ms


Tuyệt, giờ bạn sẽ thấy rằng mặc dù chúng ta đã tắt giao diện ETH0, chúng ta vẫn có thể ping và truy cập máy chủ liên kết của mình. Bây giờ hãy thực hiện thêm 1 bài kiểm tra nữa. Bật lại giao diện ETH0 và tắt giao diện ETH1.
Mã:
ifup eth0
cat /proc/net/bonding/bond0
Mã:
Trình điều khiển liên kết kênh Ethernet: v3.6.0 (ngày 26 tháng 9 năm 2009)
Mã:
Chế độ liên kết: chịu lỗi (active-backup)
Slave chính: Không có
Slave đang hoạt động: eth1
Trạng thái MII: đang hoạt động
Khoảng thời gian thăm dò MII (ms): 100
Độ trễ khi hoạt động (ms): 0
Độ trễ khi hoạt động (ms): 0
Mã:
Giao diện Slave: eth1
Trạng thái MII: đang hoạt động
Tốc độ: 1000 Mbps
Song công: đầy đủ
Số lần liên kết lỗi: 0
Địa chỉ HW cố định: 08:00:27:c8:46:40
ID hàng đợi Slave: 0
Mã:
Giao diện Slave: eth0
Trạng thái MII: đang hoạt động
Tốc độ: 1000 Mbps
Duplex: đầy
Số lần liên kết bị lỗi: 0
Địa chỉ HW cố định: 08:00:27:61:e4:88
ID hàng đợi Slave: 0
Vì giao diện ETH0 đã hoạt động, hãy tắt giao diện ETH1.
Mã:
ifdown eth1
Mã:
cat /proc/net/bonding/bond0
Mã:
Trình điều khiển liên kết kênh Ethernet: v3.6.0 (ngày 26 tháng 9 năm 2009)
Mã:
Chế độ liên kết: chịu lỗi (active-backup)
Slave chính: Không có
Slave đang hoạt động: eth0
Trạng thái MII: đang hoạt động
Khoảng thời gian thăm dò MII (ms): 100
Độ trễ khi hoạt động (ms): 0
Độ trễ khi hoạt động (ms): 0
Mã:
Giao diện Slave: eth0
Trạng thái MII: đang hoạt động
Tốc độ: 1000 Mbps
Duplex: đầy đủ
Số lần lỗi liên kết: 0
Địa chỉ HW cố định: 08:00:27:61:e4:88
ID hàng đợi Slave: 0

Bây giờ chúng ta hãy quay lại máy chủ thử nghiệm và kiểm tra những gì xảy ra trên ping liên tục được thực hiện tới máy chủ liên kết của chúng tôi
Mã:
64 byte từ 172.20.43.110: icmp_seq=84 ttl=64 time=0.437 ms
64 byte từ 172.20.43.110: icmp_seq=85 ttl=64 time=0.504 ms
64 byte từ 172.20.43.110: icmp_seq=86 ttl=64 time=0.401 ms
64 byte từ 172.20.43.110: icmp_seq=87 ttl=64 time=0.454 ms
64 byte từ 172.20.43.110: icmp_seq=88 ttl=64 time=0.432 ms
64 byte từ 172.20.43.110: icmp_seq=89 ttl=64 time=0.434 ms
64 byte từ 172.20.43.110: icmp_seq=90 ttl=64 time=0.411 ms
64 byte từ 172.20.43.110: icmp_seq=91 ttl=64 time=0.420 ms
64 byte từ 172.20.43.110: icmp_seq=92 ttl=64 time=0.487 ms
64 byte từ 172.20.43.110: icmp_seq=93 ttl=64 time=0.551 ms
64 byte từ 172.20.43.110: icmp_seq=94 ttl=64 time=0.523 ms
64 byte từ 172.20.43.110: icmp_seq=95 ttl=64 time=0.479 ms

Thích quá! Chúng tôi đã cấu hình thành công và chứng minh máy chủ liên kết của chúng tôi có thể đáp ứng được tình huống khôi phục sau thảm họa trên điều kiện lỗi mạng.
 
Back
Bên trên