Header Ads Widget

Ticker

6/recent/ticker-posts

Xây dựng hệ thống LoadBalancing Web Server cho hệ thống Web bằng Haproxy trên Ubuntu

Keyword: Install and Configure Haproxy LoadBalancing Web Server on Ubuntu
Nếu như các bạn đã từng nghe đến từ LoadBalancing thì chắc đã không còn xa lạ gì với việc xây dựng hệ thống cân bằng tải của Windows rồi đúng không, vâng nhưng hiện tại thì không thế bởi lẻ mình sẻ hướng dẫn các bạn xây dựng hệ thống LoadBalancing trên hệ thống Linux, thì sẵn đây mình cũng xin giới thiệu thêm một chút có lẽ nhiều bạn sẻ nghe từ Nginx nhiều hơn là Haproxy, cả 2 đều là hệ thống LoadBalancing mã nguồn mở của Linux khá phổ biến và mạnh mẽ
Nhưng tại sao người ta không sử dụng Nginx mà lại chọn nhiều về Haproxy với các công ty vừa và nhỏ, đó chính là nằm ở chi phí và sự hỗ trợ Free của nó, với Free của Haproxy bạn sẻ có được các chức năng khá tốt và gần như tiện lợi gần bằng các Soft trả phí đắt tiền ngoài kia, còn nginx thì lại bị hạn hẹp một vài thứ và muốn có thể xài đầy đủ tốt hơn thì phải mua bản Nginx Plus, chính đều này nhiều công ty lớn nhưng muốn tiết kiệm cũng sử dụng Haproxy như VNG chẳng hạn, nếu bạn muốn biết rõ hơn về 2 Services này thì có thể đọc bài so sánh trên google nhé, bây giờ chúng ta sẻ bắt đầu chuẩn bị một vài thứ như hình trên:
  1. 2 máy web server ở đây mình dùng Ubuntu Server cho 2 máy này cả
  2. 1 máy Haproxy cũng là Ubuntu Server
  3. Đám mây nghĩa là người dùng truy cập vào địa chỉ IP của máy Haproxy
Bước 1: Mình sẻ bắt đầu cấu hình như sau, trên máy Web Server 1 nghĩa là máy (pubuntuserver2) của mình tiến hành install Apache2 để thực hiện tạo Web Server đơn giản bằng các câu lệnh sau:
sudo apt-get update -y && apt-get upgrade -y     (cập nhật hệ thống)
sudo apt-get install apache2 (tiến hành cài đặt Apache Web Server)
cd /var/www/html/
sudo cp index.html index.html.bak (Backup lại trang index mặt định và tiến hành chỉnh sửa lại trang index)
sudo vi index.html
Bước 2: Web Server 2 nghĩa là (pubuntuserver2) của mình cũng làm tương tự
sudo apt-get update -y && apt-get upgrade -y     (cập nhật hệ thống)
sudo apt-get install apache2 (tiến hành cài đặt Apache Web Server)
cd /var/www/html/
sudo cp index.html index.html.bak (Backup lại trang index mặt định và tiến hành chỉnh sửa lại trang index)
sudo vi index.html
Bước 3: Bắt đầu cấu hình Haproxy thôi nào
sudo apt-get update -y && apt-get upgrade -y     (cập nhật hệ thống)
sudo apt-get install haproxy
Ta thực hiện check bằng lệnh haproxy -v để xem haproxy đã cài đặt thành công hay chưa nhé
Bước 4: Sau khi đã hiển thị như trên nghĩa là Haproxy đã cài đặt thành công rồi đó giờ thì đến lượt cấu hình file haproxy.cfg thôi nào chúng ta thực hiện truy cập chỉnh sửa file trong đường dẫn /etc/haproxy/haproxy.cfg nhưng làm gì làm thì chúng ta cũng nên backup file cấu hình lại trước nhé !
cd /etc/haproxy   (truy cập vào thư mục haproxy)
sudo cp haproxy.cfg haproxy.cfg.bak (thực hiện backup file config)
sudo vi haproxy.cfg
Truy cập vào cấu hình file haproxy.cfg thêm các cấu hình sao vào trong file config như hình nhé
frontend haproxynode
        bind *:80
        mode http
        default_backend backendnodes

backend backendnodes
        balance roundrobin     (Lệnh để thực hiện loadbalancing cho Web) 
        option forwardfor
        http-request set-header X-Forwarded-Port %[dst_port]
        http-request add-header X-Forwarded-Proto https if { ssl_fc }
        option httpchk HEAD / HTTP/1.1\r\nHost:localhost
        server web1 10.0.1.174:80 check (Web Server 1 của mình)
        server web2 10.0.1.179:80 check (Web Server 2 của mình

listen stats
        bind :32700
        stats enable
        stats uri /
        stats hide-version

Sau khi save lại chúng ta thực hiện chạy lệnh sau để kiểm tra cấu hình xem đúng không nha
haproxy -c -f /etc/haproxy/haproxy.cfg
nếu nó thông báo như thế này nghĩa là bạn đã cấu hình thành công không bị lỗi gì rồi ak
Sau đó restart lại service và tận hưởng thôi nào
sudo service haproxy restart
Các bạn nên chú ý nếu nó hiện ra bảng thông báo lỗi như sau
Job for haproxy.service failed because the control process exited with error code. See "systemctl status haproxy.service" and "journalctl -xe" for details.
nhưng rõ ràng mình check config thì lại báo ổn và không bị lỗi thì chứng tỏ bạn đang kẹt port trong file config hoặc vướng port mặc định 80 ở đây mình bị lỗi này là do bản thân máy Haproxy của mình trước đây có cài Apache nên vì thế mình cẩn phải gỡ Apache ra để không bị vướng Port và thực hiện Restart lại service, sau khi hoàn thành mình truy cập thử địa chỉ IP của máy Haproxy và sẻ thấy Web của mình đã Load lên
Thực hiện bấm "F5" một lần nữa thì sẻ thấy kết quả khác
Tuyệt vời ông mặt trời rồi đấy, chúc các bạn thành công, các bạn có thể ngâm cứu file config để thêm vào các chức năng khác nữa cho nó nhé !
Nguồn: itblognote.com

Post a Comment

0 Comments