Hướng dẫn cài đặt HAProxy trên Ubuntu 18.04

0
cài đặt haproxy

HAProxy Đây là một trong những giải pháp cân bằng tải đáng tin cậy nhất với tốc độ xử lý rất nhanh – phù hợp với các ứng dụng đòi hỏi khắt khe. tính khả dụng cao cao dựa trên TCP và HTTP. Ngày nay, việc tối đa hóa thời gian xử lý ứng dụng của website, cụ thể hơn là tăng tốc độ website cho những website có lượng truy cập cao là vấn đề cực kỳ quan trọng. Sau đó, chúng tôi sẽ cần thiết lập một môi trường sử dụng nhiều máy chủ để tăng tính khả dụng (tính khả dụng cao) cho trang web – có thể dễ dàng quản lý trong trường hợp máy chủ bị lỗi.

Mô hình triển khai HAProxy làm Cân bằng tải

Trong bài viết này, mình sẽ hướng dẫn các bạn cách cài đặt Load Balancing HAProxy chạy trên môi trường Ubuntu, Debian. HAProxy sẽ giúp cân bằng tải và chuyển tiếp các yêu cầu đến các máy chủ khác nhau dựa trên địa chỉ IP và cổng.

Hướng dẫn cài đặt HAProxy

Trong bài viết này, tôi giả sử mình có tổng cộng 4 máy chủ, trong đó 1 máy chủ dùng để cài đặt HAProxy và 3 máy chủ còn lại dùng để chạy các ứng dụng web.

Thông tin web server

Server 1:    web1.example.com     192.168.1.1
Server 2:    web2.example.com     192.168.1.2
Server 3:    web3.example.com     192.168.1.3

HAProxy Server: 

HAProxy:     haproxy              192.168.1.10

Bước 1. Cài đặt HAProxy

Trước tiên, bạn cần đăng nhập vào máy chủ dự định cài đặt HAProxy, có địa chỉ IP 192.168.1.10, sau đó chạy các lệnh sau:

Để cài đặt phiên bản mới nhất của HAProxy, hãy sử dụng lệnh sau:

sudo apt-get update
sudo apt-get install haproxy

Để cài đặt phiên bản cố định của HAProxy, bạn cần thêm kho lưu trữ của phiên bản đó. Trong ví dụ này, tôi sẽ cài đặt HAProxy phiên bản 1.8

sudo add-apt-repository ppa:vbernat/haproxy-1.8
sudo apt-get update
sudo apt-get install haproxy

Bước 2. Định cấu hình Cân bằng tải HAProxy

Bây giờ hãy chỉnh sửa File cấu hình HAProxy mặc định với đường dẫn /etc/haproxy/haproxy.cfg

sudo vi /etc/haproxy/haproxy.cfg

Thông tin cấu hình mặc định

Trong File cấu hình này, bạn sẽ thấy có thông tin cấu hình HAProxy mặc định tương tự như đoạn mã bên dưới.

global
	log /dev/log	local0
	log /dev/log	local1 notice
	chroot /var/lib/haproxy
	stats socket /run/haproxy/admin.sock mode 660 level admin
	stats timeout 30s
	user haproxy
	group haproxy
	daemon

	# Default SSL material locations
	ca-base /etc/ssl/certs
	crt-base /etc/ssl/private

	# Default ciphers to use on SSL-enabled listening sockets.
	# For more information, see ciphers(1SSL). This list is from:
	#  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
	ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256::RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
	ssl-default-bind-options no-sslv3

defaults
	log	global
	mode	http
	option	httplog
	option	dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
	errorfile 400 /etc/haproxy/errors/400.http
	errorfile 403 /etc/haproxy/errors/403.http
	errorfile 408 /etc/haproxy/errors/408.http
	errorfile 500 /etc/haproxy/errors/500.http
	errorfile 502 /etc/haproxy/errors/502.http
	errorfile 503 /etc/haproxy/errors/503.http
	errorfile 504 /etc/haproxy/errors/504.http

Tạo HAProxy Listener

Bây giờ, bạn cần cho HAProxy biết nơi nó sẽ lắng nghe các kết nối đến. Trong ví dụ này, tôi sẽ khai báo rằng HAProxy sẽ lắng nghe trên cổng 80 của máy chủ HAProxy này.

frontend Local_Server
    bind 192.168.1.10:80
    mode http
    default_backend My_Web_Servers

Tạo máy chủ Web phụ trợ

Cấu hình HAProxy ở trên sẽ lắng nghe trên cổng 80. Bây giờ tôi sẽ xác định phần phụ trợ của máy chủ web – nơi HAProxy sẽ gửi yêu cầu đến.

backend nodes
    mode http
    balance roundrobin
    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.1rnHost:localhost
    server web1.example.com  192.168.1.1:80
    server web2.example.com  192.168.1.2:80
    server web3.example.com  192.168.1.3:80

Kích hoạt số liệu thống kê (tùy chọn)

Nếu bạn muốn định cấu hình giám sát thống kê, bạn có thể thêm thông tin cấu hình sau vào File cấu hình HAProxy.

listen stats *:9200
    stats enable
    stats hide-version
    stats refresh 30s
    stats show-node
    stats auth username:password
    stats uri  /stats

Bước 3. File cấu hình HAProxy đã hoàn tất

File cấu hình HAProxy, sau khi tạo và sửa đổi, sẽ có dạng như sau:

global
	log /dev/log	local0
	log /dev/log	local1 notice
	chroot /var/lib/haproxy
	stats socket /run/haproxy/admin.sock mode 660 level admin
	stats timeout 30s
	user haproxy
	group haproxy
	daemon

	# Default SSL material locations
	ca-base /etc/ssl/certs
	crt-base /etc/ssl/private

	# Default ciphers to use on SSL-enabled listening sockets.
	# For more information, see ciphers(1SSL). This list is from:
	#  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
	ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256::RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
	ssl-default-bind-options no-sslv3

defaults
	log	global
	mode	http
	option	httplog
	option	dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
	errorfile 400 /etc/haproxy/errors/400.http
	errorfile 403 /etc/haproxy/errors/403.http
	errorfile 408 /etc/haproxy/errors/408.http
	errorfile 500 /etc/haproxy/errors/500.http
	errorfile 502 /etc/haproxy/errors/502.http
	errorfile 503 /etc/haproxy/errors/503.http
	errorfile 504 /etc/haproxy/errors/504.http

frontend Local_Server
    bind 192.168.1.10:80
    mode http
    default_backend My_Web_Servers

backend My_Web_Servers
    mode http
    balance roundrobin
    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.1rnHost:localhost
    server web1.example.com  192.168.1.1:80
    server web2.example.com  192.168.1.2:80
    server web3.example.com  192.168.1.3:80

listen stats *:9200
    stats enable
    stats hide-version
    stats refresh 30s
    stats show-node
    stats auth username:password
    stats uri  /stats 

Bước 4. Khởi động lại máy chủ

Bây giờ bạn đã cập nhật và thay đổi thông tin cấu hình HAProxy cần thiết. Tại thời điểm này, bạn cần xác minh rằng thông tin cấu hình là chính xác trước khi khởi động lại máy chủ bằng lệnh sau:

haproxy -c -f /etc/haproxy/haproxy.cfg

Nếu thông tin lệnh trên hiển thị thông tin hợp lệ, có nghĩa là File cấu hình của bạn không có vấn đề gì. Bây giờ bạn chỉ cần khởi động lại máy chủ.

sudo service haproxy restart

Bước 5. Xác nhận thông tin cấu hình HAProxy

Lúc này, bạn có thể truy cập vào trang thống kê với địa chỉ 192.168.1.10:9200 mà mình đã khai báo Stats trong file config ở trên. Nếu thông tin trên cả 3 máy chủ có màu xanh có nghĩa là cả 3 máy chủ đều ổn, phần còn lại màu đỏ có nghĩa là máy chủ kiểm tra bị lỗi.

>>> Xem thêm:  Crontab là gì? Lập lịch công việc trên Linux

Ví dụ: trang thông tin thống kê sẽ trông như thế này:

Bảng thông tin với thống kê máy chủ cân bằng tải trong HAProxy

Kết luận

Qua bài viết này, bạn có thể cài đặt thành công Load Balancing HAProxy trên máy chủ Ubuntu của mình. Tuy nhiên, đây chỉ là bản demo, ngoài ra bạn cũng cần biết thêm về các thông số cấu hình HAProxy như kiểm tra sức khỏe, khởi động lại, thời gian chết, thuật toán cân bằng tải, … Đặc biệt hơn, trong trường hợp bạn hoạt động trong lĩnh vực thiết kế website , ngay từ đầu, bạn cần hiểu rõ về sản phẩm mà mình sẽ thiết kế, sản phẩm đó có phù hợp với việc cân bằng tải hay chỉ chạy trên một máy chủ duy nhất. Như vậy, việc sử dụng HAProxy làm công cụ cân bằng tải cho trang web của bạn sẽ trở nên hữu ích và đơn giản hơn rất nhiều.

Xem thêm nhiều bài khác tại : https://excel-cracker.com/he-dieu-hanh

Leave A Reply

Your email address will not be published.