Load Balancing – Failover (cân bằng tải và dự phòng) với Pfsense2

Thảo luận trong 'Hệ điều hành Linux' bắt đầu bởi sunboy, 16 Tháng chín 2011.

  1. Offline

    sunboy

    • Thành viên sáng lập

    • No thing
    Số bài viết:
    1.616
    Đã được thích:
    1.340
    Điểm thành tích:
    1.000
    [SIZE=+2]Load Balancing – Failover với Pfsense2[/SIZE]

    [SIZE=+1]1. Giới thiệu[/SIZE]
    Bài viết này sẽ hướng dẫn cài đặt, cấu hình pfSense2 giúp Load Balancing (cân bằng tải) giữa các kết nối WAN, đồng thời kết hợp với Failover (dự phòng) trong trường hợp các kết nối WAN bị down.

    [SIZE=+1]2. Mô hình[/SIZE]

    Cụ thể trong mô hình này, server pfSense sẽ có 2 đường kết nối WAN và một đường đi vào LAN. Vì vậy, khi thực hiện bài lab này, chúng ta phải có ít nhất 2 kết nối wan để cung cấp 2 đường internet từ hai 2 ISP khác nhau. Nhưng khi thực hiện, tôi chỉ có một đường kết nối ra internet (con nhà nghèo.. đang thất nghiệp) và không có server. Vì vậy, với bài lab tôi đã thực hiện trên WMWare, sử dụng máy ảo Windows Server 2003 để chia một đường kết nối thành 2 đường (qua tính năng Routing and Remote Access), server pfSense cũng thực hiện trên VMware.

    a. Mô hình thực tế


    [IMG]


    b. Mô hình lab


    [IMG]


    Mô hình trên được thực hiện bằng trình máy ảo VMWare Workstation, cụ thể:

    Máy ảo windows server 2003
    - Có 3 network interface:
    o Interface đầu tiên ( interface mặc định) sẽ được bridge ra ngoài để kết nối Internet. IP là 192.168.1.111/24, gateway là 192.168.1.1
    o Interface thứ hai là Adapter2 sẽ được nối với VMnet2: IP là 192.168.2.1/24
    o Interface thứ ba Adapter3 sẽ được nối với VMnet3. IP là 192.168.3.1/24

    Máy ảo pfSense

    - Có 3 network interface, 2 interface nối với 2 interface của windows server 2003 để có 2 đường ra internet, 1 Interface nối vào LAN
    o Interface đầu tiên ( interface mặc định) sẽ nối vào VMnet2 với ip 192.168.2.2/24 (gateway 192.168.2.1)
    o Interface thứ hai là Adapter2 sẽ nối vào VMnet3 với IP là 192.168.3.2/24(gateway 192.168.3.1)
    o Interface thứ ba là Adapter3 sẽ nối vào VMnet4 (interface LAN) với IP là 192.168.10.1/24

    3. Cấu hình Routing and Remote Access trên windows server 2003 [SIZE=+1]
    [/SIZE]


    Lưu ý: Mục đích làm bước này để giả lập 2 kết nối internet (WAN). Nếu các bạn có 2 đường kết nối internet rồi thì không cần thực hiện bước này mà kết nối thẳng hai đường vào 2 interface của máy pfSense.
    Sau khi đã thêm 2 interface vào và cấu hình IP. Chúng ta bắc đầu cấu hình Routing and Remote Access. VàoAdministrator tool =>Routing and Remote Access. ChọnConfigure and Enable… để bật chức năng Routing and Remote Access.


    [IMG]


    Tiếp theo chọn Custom configuration


    [IMG]


    Chọn NAT and basic firewall


    [IMG]


    Khi thực hiện xong, tiến hành R-click vào NAT/Bassic firewall chọn New interface để thêm interface.


    [IMG]


    Chọn interface (interface brigde ra internet) làm public interface (nhớ check vàoEnable NAT on this interface để bật tính năng NAT trên inerface này)


    [IMG]


    Hai interface còn lại chọn làm Private


    [IMG]


    Kết quả sau khi cấu hình xong


    [IMG]


    [SIZE=+1]4. Cài đặt pfSense và thiết lập cơ bản[/SIZE]

    Cài đặt pfSense một cách bình thường. Lưu lý đến bước chọn chế độ, nhớ ấn I để vào chế độ cài đặt.


    [IMG]


    Chọn n (no) khi setup VLANs


    [IMG]


    Bước tiếp theo, tiến hành gán các interface vào interface LAN, WAN, OPT1 (OPT1 là interface tùy chọn ngoài thêm, ở đây nó có nhiệm vụ làm interface WAN thứ 2). Trong trường hợp này, em0 là interface WAN (ứng với cad VMnet2), em1 là interface OPT1(ứng với VMnet3) và em2 là interface LAN (ứng với VMnet4). Nếu cài đặt pfSense trên máy ảo, chúng ta có thể xem địa chỉ MAC của các interface này và đối chiếu với địa chỉ MAC của các interface khi cài đặt pfSense bằng cách vào file có đuôi *.vmx trong thư mục cài đặt máy ảo pfSense để xem.

    Ví dụ:

    [IMG]


    Sau khi đã khai báo LAN interface. Tiến hành gán IP cho card LAN bằng cách chọn số trên màn hình console, sau khi gán IP LAN xong, chúng ta có thể truy cập vào webConfiguration của pfSense bằng cách vào trình duyệt web gõ https://$địa_chỉ_interface_LAN(ở đây là https://192.168.10.1), đăng nhập bằng trài khoản mặc định(admin/pfsense).

    Lưu ý: Ở đây tôi dùng một máy ảo XP, Gán interface vào VMnet4 để làm máy client trong LAN. Mọi thao tác cấu hình cũng như test kết nối sau này đều được thực hiện trên máy này.

    Bây giờ, chúng ta sẽ dùng webConfiguration để khai báo IP tĩnh (static), Gateway.. cho interface WAN và OPT1 (menuInterface=>$Tên interface) và cấp phát DHCP cho các máy tính trong LAN qua interface LAN (Services=>DHCP server, chọn tab LAN).


    [IMG]



    [IMG]



    [IMG]



    [IMG]


    Kiểm tra trạng thái của gateway bằng cách vào Status=>Gateways. Nếu trạng thái của 2 gateway này Online nghĩa là bình thường. Nếu có gateway Offline, nghĩa là pfSense ping các Monitor IP (mặc định cũng chính là địa chỉ gateway của mỗi interface) không thành công. Vì vậy, chúng ta phải xem lại cấu hình các thông số IP.


    [IMG]


    Khai báo DNS cho pfSense bằng cách vàoSystem => General Setup


    [IMG]


    [SIZE=+1]5. Cấu hình Load Balancing – Failover[/SIZE]

    Gồm 3 bước thực hiện chính:
    - Kiểm tra, chỉnh sửa Gateway
    - Thêm Gateway Group (System=>Routing, chọn tab Group)
    - Sử dụng Gateway Group trong rules firewall của interface LAN

    a. Kiểm tra, chỉnh sửa gateway:

    Phải chắc chắn rằng các gateway và Monitor IP của mỗi interface đã được khai báo ở trong System=>Routing, tab Gateway. Thật ra, trong phiên bản pfSense2, các thông số này được tự động tạo ra khi chúng ta khai báo IP và gateway trong Interface =>$Tên interface. Chúng ta có thể để mặc định hoặc sửa Monitor IP của từng gateway cho phù hợp.


    [IMG]


    - Monitor IP

    PfSense mặc định sẽ lấy gateway của interface làm monitor IP của interface đó. Vì vậy pfSense sẽ ping gateway của mỗi interface (các interface WAN) để xác định chất lượng mạng. Trong một số trường hợp, việc xác định chất lượng mạng bằng cách trên không chính xác.

    Ví dụ: Nếu gateway của interface WAN thuộc phía người dùng đầu cuối, không phải thuộc bên kia mạng của ISP. Khi kết nối này bị down ở phía nhà cung cấp dịch vụ (ISP), lúc này pfSense sẽ ping gateway thành công. Vì vậy, pfSense sẽ không phát hiện kết nối wan này bị down.

    Chúng ta có thể tùy chỉnh Monitor IP để việc xác định chất lượng mạng WAN được tốt hơn. Có thể sử dụng IP một web server công cộng, DNS của google hoặc IP bất kỳ nào trên mạng Internet để pfSense ping (chú ý rằng IP này không bao giờ được down, nếu Monitor IP bị down, trong khi đó liên kết WAN vẫn hoạt động bình thường thì pfSense sẽ cho rằng liên kế WAN này bị down..)

    - Weight

    Bởi mặc định, tất cả các WAN trên cùng một tier(cụ thể tier là gì sẽ được trình bày ở mục tiếp theo) được coi là có độ ưu tiên bằng nhau khi thực hiện load balancing. Nếu các liên kết WAN có tốc độ khác nhau, khai báo tham số weight cho mỗi liên kết sẽ cho phép pfSense xác định các liên kết có tốc độ lớn hơn để tính toán ưu tiên cho các liên kết này khi load balancing.

    Ví dụ: Nếu chúng ta có một kết nối WAN 50Mbit và một kết nối 10Mbit, nếu không khai báo weight thì liên kết 50Mbit sẽ không bao giờ sử dụng hết và liên kết 10Mbit sẽ đi đến quá tải. Trong trường hợp này chúng ta có thể khai báo weight cho liên kết 50Mbit là 5 và liên kết 10Mbit là 1 (để tỉ lệ là 5:1 ~ 50:10 Mbit).

    - Loss/Latency Thresholds
    Với các liên kết WAN khác nhau, có thể độ mất mát gói tin (loss) hoặc độ trể (latency) khác nhau. Vì vậy chúng ta cũng có thể quy định các thông số này để pfSense thực hiện Load balancing được tốt hơn.

    b. Thêm Gateway Group

    Gateway Group (vào System=>Routing, tab Group) chỉ việc nhóm các gateway lại để hoạt động một cách phối hợp. Có thể sử dụng để Load balancing (cân bằng tải) hoặc Failover (dự phòng).

    Cụ thể ở bài viết này, cần thiết lập Gateway Group cho hai WAN (interface WAN và OPT1) cho một cấu hình multi-wan bao gồm một Gateway Group cho Load balancing, và hai gateway group cho Failover. Chúng ta phải cấu hình nhiều Gateway Group hơn khi số lượng liên kết WAN nhiều hơn.

    - Tiers

    Trong một Gateway Group, chúng ta cần gán mỗi gateway cho mỗi tier. Các gateway có tier thấp hơn sẽ được ưu tiên hơn. Nếu có hai gateway được gán cùng một tier trong cùng một Gateway Group, pfSense sẽ thực Load Balancing trên hai gateway này. Nếu hai gateway được gán tier khác nhau, pfSense sẽ thực hiện Failover cho gateway có tier thấp hơn. Nếu tier được thiết lập là Never, gateway được gán sẽ coi như không thuộc Gateway Group đó.

    - Trigger Level

    o Member Down: Kích hoạt chỉ khi các liên kế của interface thành viên bị down
    o Packet Loss: Kích hoạt chỉ khi các gói tin đến gateway bị mất cao hơn ngưỡng xác định
    o Packet Loss or High Latency: Kết hợp cả hai trường hợp trên, tùy chọn này được hay dùng nhất.

    - Thực hiện Load Balancing:

    Khi hai gateway có cùng một tier, chúng sẽ được load balancing. Có nghĩa là trên một kết nối, các lưu lượng ra ngoài mạng sẽ được định tuyến qua các WAN theo kiểu round-robin. Nếu một gateway trong số các gateway giống tier (trong cùng một gateway group) bị down, nó sẽ không được sử dụng và các gateway khác cùng tier sẽ vẫn hoạt động bình thường.

    Tiến hành tạo 1 Gateway Group với tên Loadbalace, thiết lập cùng tier1 cho hai gateway để load balancing


    [IMG]


    - Thực hiện Failover

    Khi hai gateway khác tier, gateway có tier thấp hơn sẽ được ưu tiên. Nếu gateway có tier thấp này bị down, gateway có tier lớn hơn sẽ được sử dụng.
    Tiến hành tạo 2 Gateway group, trong các gateway group này, chú ý thiết lập khác tier nhau cho mỗi gateway, cụ thể:


    [IMG]



    [IMG]


    - Kết hợp cả hai

    Nếu có nhiều hơn 2 WAN. Chúng ta có thể thực hiện load balancing và failover trên cùng một Gateway Group. Chẳng hạn chúng ta cho WAN1 và WAN2 cùng tier để load balancing, WAN3 có tier lớn hơn để phòng khi 2 WAN kia bị down thì WAN3 sẽ thực hiện failover… Trong bài viết này không thực hiện việc kết hợp theo kiểu này.

    c. Filewall Rule

    Xác định các Gateway Group chỉ là một phần của bài viết này. Chúng ta phải chỉnh định lưu lượng truy cập đến các gateway bằng cách thiết lập các rule trong firewall bằng cách vào Firewall=>Rules, chọn tab LAN.
    Mặc định ở pfSense2 có 2 rule được tạo sẵn, 1 rule có Description là Anti-Lockout Rule để quy định cho phép các port được kết nối từ ngoài internet vào trong LAN (cho phép 20,80,443). Và rule có Decription là Default allow LAN to any rule, rule này để cho phép các máy trong LAN truy cập ra ngoài.

    Tiến hành thêm 3 Rule sử dụng tương ứng 3 Gateway Group đã tạo khi trước.

    Rule cho load balancing:


    [IMG]


    Tương tự thêm 2 rule còn lại. Khi thêm xong được kết quả như sau:


    [IMG]


    Các rule trên chỉ là các rule được khai báo đơn giản. Chúng ta có thể thêm các rule mới cho các lưu lượng truy cập tùy chọn khác nhau bằng cách thiết lập Protocol (giao thức) hoặc thiết lập trong Advanced features của mỗi rule. Lưu lý rằng các rule được xử lý từ trên xuống, và một khi rule được khớp (matched), nó sẽ đươc xử lý theo rule đó và bỏ qua các rule sau.

    d. Vấn đề DNS

    Nếu các máy client trong LAN sử dụng địa chỉ DNS server là địa chỉ gateway của LAN (trường hợp này là 192.168.10.1) thì chúng ta phải chắc chắn rằng đã khai báo DNS server cho pfSense (ở System =>General Setup), nếu không các máy client sẽ không phân giải tên miền được khi truy cập internet.


    [IMG]


    [SIZE=+1]6. Test cấu hình Load balancing và Failover[/SIZE]

    Để xem việc chúng ta đã thực từ đầu đến giờ có được trả lương hay không… Chúng ta phải thực hiện test thử. Bạn có thể nghĩ ra nhiều cách test thử khác, nhưng riêng tôi, mỗi trường hợp tôi thực hiện test thử như sau:

    a. Test Load balancing

    Ở máy client trong LAN, dùng phần mềm download nhanh IDM để download một file nào đó từ trang http://mediafire.com , miễn sao dung lượng đủ lớn để có thời gian chúng ta quan sát. Khi thực hiện download, ta thấy IDM mở các line (ví dụ ở đây là 8 line).


    [IMG]


    Tiến hành disable 1 interface bên Windows Server 2003 (hoặc rút nguồn của 1 modem/router nếu bạn có 2 WAN thật). Chúng ta quan sát sẽ thấy một số line sẽ bị đứng lại, không download dược. Điều này có thể chứng tỏ các line không download được này có lưu lượng đi theo hướng interface WAN mà chúng ta vừa disable.


    [IMG]


    Nếu để khoảng 5 giây sau, các line này sẽ tự động download lại, chứng tỏ pfSense đã phát hiện 1 liên kết WAN bị down và chuyển hướng lưu lượng sang WAN kia.

    b. Test Failover


    Việc test failover rất đơn giản, chỉ cần disable 1 interface bên Windows Server 2003 (hoặc rút nguồn của 1 modem/router nếu bạn có 2 WAN thật) rồi từ client thử truy cập 1 website nào đó (http://2mit.org chẳng hạn). Rồi tiến hành enable lại interface, disable interface bên kia và thử truy cập website lại. Nếu cả hai trường hợp trên đều truy cập được website nghĩa là cấu hình failover đã thành công. Nếu 1 hoặc cả 2 trường hợp kia truy cập website không thành công, nghĩa là chúng ta đã cấu hình failover sai (hoặc 2mit lại bị Ddos [IMG] ).

    [SIZE=+1]7. Tóm lại[/SIZE]

    Qua bài viết này, chúng ta đã thực hiện cài đặt và cấu hình cơ bản pfSense2 để thực hiện nhiệm vụ Load Balancing và Failover. Ngoài ra còn cấu hình DHCP server trên pfSense để cấp phát ip cho các máy trong LAN và một chút cấu hình Routing and Remove Access với Windows Server 2003.

    Cảm ơn đã quan tâm theo dõi.. xin kính chào tạm biệt và hẹn gặp lại [IMG]

    SUN - tv12
    peutshf thích bài này.

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí