HƯỚNG DẪN Configure failover and high availability network bonding on Linux

Thảo luận trong 'KIẾN THỨC VPS/SERVER' bắt đầu bởi quyet1990, 17/11/16.

  1. quyet1990

    quyet1990 New Member

    Tham gia ngày:
    22/10/16
    Bài viết:
    220
    Đã được thích:
    0
    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.
     

Chia sẻ trang này

Đang tải...