Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Hiểu thống kê HAProxy cho MySQL &PostgreSQL

Có Bộ cân bằng tải luôn là một lựa chọn tốt để cải thiện môi trường cơ sở dữ liệu của bạn. Nó có thể giúp bạn chuyển hướng các ứng dụng đến các nút cơ sở dữ liệu có sẵn, phân phối lưu lượng trên nhiều máy chủ để cải thiện hiệu suất hoặc thậm chí chuyển đổi dự phòng khi được yêu cầu. Để biết điều gì đang xảy ra với lưu lượng truy cập / hệ thống của bạn, bạn cần có một hệ thống giám sát tốt để giám sát không chỉ các nút cơ sở dữ liệu mà còn cả các Bộ cân bằng tải của bạn, để thực hiện các hành động chủ động hoặc phản ứng nhằm giảm thiểu bất kỳ vấn đề hiện tại hoặc tương lai nào. Để có thể tìm ra vấn đề, bạn cần hiểu ý nghĩa của từng giá trị mà bạn đang thấy.

Trong blog này, chúng tôi sẽ giải thích ý nghĩa của thống kê HAProxy và cách theo dõi nó một cách thân thiện bằng cách sử dụng đồ thị và ClusterControl.

HAProxy là gì?

HAProxy là một proxy nguồn mở có thể được sử dụng để triển khai tính khả dụng cao, cân bằng tải và ủy quyền cho các ứng dụng dựa trên TCP và HTTP.

Là một bộ cân bằng tải, HAProxy phân phối lưu lượng truy cập từ một điểm gốc đến một hoặc nhiều điểm đến và có thể xác định các quy tắc và / hoặc giao thức cụ thể cho tác vụ này. Nếu bất kỳ điểm đến nào ngừng phản hồi, nó được đánh dấu là ngoại tuyến và lưu lượng truy cập được gửi đến phần còn lại của các điểm đến khả dụng.

Các loại nút HAProxy

Khi bạn định cấu hình Bộ cân bằng tải HAProxy, có các loại nút khác nhau để định cấu hình tùy thuộc vào chức năng bạn muốn. Các tùy chọn là Frontend, Backend và Listen.

Nút giao diện người dùng

Khi bạn đặt HAProxy làm proxy ngược trước máy chủ phụ trợ của mình, phần giao diện người dùng trong tệp cấu hình xác định địa chỉ IP và cổng mà máy khách có thể kết nối. Các yêu cầu đi vào bộ cân bằng tải và các phản hồi được trả lại cho máy khách. Chúng đi qua giao diện người dùng.

frontend site1.com

     bind 10.10.10.150:80

     use_backend api_servers if { path_beg /api/ }

     default_backend web_servers

Nút phụ

Nó xác định một nhóm máy chủ sẽ được cân bằng tải và được chỉ định để xử lý các yêu cầu, tùy thuộc vào chính sách được chọn. HAProxy gửi yêu cầu đến một chương trình phụ trợ và sau đó nhận được phản hồi từ một trong các máy chủ đang hoạt động.

backend web_servers

     balance roundrobin

     cookie SERVERUSED insert indirect nocache

     option httpchk HEAD /

     default-server check maxconn 20

     server server1 10.10.10.151:80 cookie server1

     server server2 10.10.10.152:80 cookie server2

Nút Nghe

Nó kết hợp hai loại nút HAProxy mà chúng tôi đã đề cập ở trên. Bạn có thể thích khả năng đọc đạt được bằng cách có các phần giao diện người dùng và phần phụ trợ riêng biệt hoặc có thể bạn muốn có cấu hình ngắn gọn hơn bằng cách sử dụng phương pháp lắng nghe.

listen  haproxy_10.10.10.143_3307_rw

        bind *:3307

        mode tcp

        tcp-check connect port 9200

        timeout client  10800s

        timeout server  10800s

        balance leastconn

        option httpchk

        default-server port 9200 inter 2s downinter 5s rise 3 fall 2 slowstart 60s maxconn 64 maxqueue 128 weight 100

        server 10.10.10.139 10.10.10.139:3306 check

        server 10.10.10.140 10.10.10.140:3306 check backup

        server 10.10.10.141 10.10.10.141:3306 check backup

Trang Thống kê HAProxy

HAProxy cho phép bạn kích hoạt trang thống kê với thông tin thời gian thực để xem điều gì đang xảy ra trong Load Balancer của bạn. Để bật trang thống kê, bạn chỉ cần sử dụng chỉ thị “bật số liệu thống kê” trong tệp cấu hình HAProxy của mình (/etc/haproxy/haproxy.cfg). Hãy xem một ví dụ:

userlist STATSUSERS

        group admin users admin

        user admin insecure-password admin

        user stats insecure-password admin



listen admin_page

        bind *:9600

        mode http

        stats enable

        stats refresh 60s

        stats uri /

        acl AuthOkay_ReadOnly http_auth(STATSUSERS)

        acl AuthOkay_Admin http_auth_group(STATSUSERS) admin

        stats http-request auth realm admin_page unless AuthOkay_ReadOnly

Dòng liên kết đặt địa chỉ IP và cổng mà bạn sẽ sử dụng để truy cập trang thống kê. Bạn cũng có thể định cấu hình xác thực và khoảng thời gian làm mới. Nếu bạn truy cập vào nút HAProxy của mình bằng cách sử dụng cổng được chỉ định (9600 trong ví dụ), thông tin đăng nhập quản trị viên / quản trị viên, bạn sẽ thấy một cái gì đó như sau:

Tại đây, bạn sẽ tìm thấy các số liệu hữu ích khác nhau để theo dõi nút HAProxy của mình.

Thống kê HAProxy

Bây giờ, hãy xem những số liệu này là gì. Vì ý nghĩa phụ thuộc vào ngữ cảnh, chúng tôi sẽ chia nó thành Frontend và Backend.

Hàng đợi

Phần phụ

Phần này chỉ áp dụng cho phần phụ trợ và hiển thị thời gian khách hàng chờ đợi máy chủ khả dụng. HAProxy có thể xếp hàng đợi các kết nối khi bạn sử dụng cài đặt maxconn.

Cột "Cur" hiển thị số lượng kết nối máy khách hiện đang được xếp hàng đợi và chưa được gán cho máy chủ. Cột "Tối đa" hiển thị hầu hết các kết nối đã từng được xếp hàng cùng một lúc. Cột "Giới hạn" hiển thị số lượng kết nối tối đa được phép xếp hàng đợi, như được xác định bởi cài đặt hàng đợi tối đa trên mỗi dòng máy chủ trong tệp cấu hình.

Tỷ lệ Phiên

Giao diện người dùng

Mô tả tốc độ mà máy khách đang kết nối với HAProxy.

Cột "Cur" hiển thị tốc độ hiện tại mà các phiên máy khách hoặc kết nối được thiết lập đầy đủ giữa máy khách và máy chủ đang được tạo. Nếu bạn di chuột qua trường này, trang sẽ hiển thị các số liệu sau:

  • Tốc độ kết nối hiện tại:Tốc độ mà máy khách đang kết nối với HAProxy.
  • Tốc độ phiên hiện tại:Tốc độ các phiên, là các thực thể giữ trạng thái của kết nối end-to-end, đang được tạo.
  • Tốc độ yêu cầu hiện tại:Tốc độ nhận các yêu cầu HTTP qua các kết nối đã thiết lập.

Cột "Tối đa" hiển thị hầu hết các phiên đã từng được sử dụng đồng thời. Nếu bạn di chuột qua trường này, trang sẽ hiển thị các số liệu sau:

  • Tốc độ kết nối tối đa:Tốc độ cao nhất mà ứng dụng khách đã kết nối với HAProxy.
  • Tỷ lệ phiên tối đa:Tỷ lệ cao nhất mà khách hàng đã thiết lập phiên, là các thực thể giữ trạng thái của kết nối end-to-end.
  • Tỷ lệ yêu cầu tối đa:Tỷ lệ cao nhất mà tại đó các yêu cầu HTTP đã được nhận qua các kết nối đã thiết lập.

Cột "Giới hạn" hiển thị số phiên tối đa mỗi giây mà giao diện người dùng sẽ chấp nhận, như được thiết lập bởi cài đặt giới hạn tỷ lệ phiên. Nếu vượt quá giới hạn này, các kết nối bổ sung sẽ được giữ lại trong hồ sơ tồn đọng của ổ cắm.

Phần phụ

Những thống kê này cho biết tốc độ mà các kết nối đang được thực hiện với máy chủ.

Cột "Cur" hiển thị tốc độ hiện tại, trên giây, tại đó các kết nối đang được thiết lập với máy chủ. Cột "Tối đa" hiển thị tỷ lệ cao nhất mà các kết nối đã từng được thiết lập với máy chủ nhất định. Cột "Giới hạn" không được sử dụng ở đây.

Phiên

Giao diện người dùng

Phần này đếm số phiên hoặc toàn bộ kết nối từ máy khách đến máy chủ, được sử dụng trên bộ cân bằng tải.

Cột "Cur" hiển thị số phiên đã thiết lập hiện tại. Cột "Tối đa" hiển thị hầu hết các phiên đã từng được thiết lập đồng thời. Cột "Giới hạn" hiển thị các phiên đồng thời nhất được phép, như được xác định bởi cài đặt maxconn trong giao diện người dùng. Giao diện người dùng cụ thể đó sẽ ngừng chấp nhận các kết nối mới khi đạt đến giới hạn này. Nếu maxconn không được đặt, thì “Giới hạn” giống với giá trị maxconn trong phần chung của cấu hình của bạn. Nếu điều đó không được đặt, giá trị sẽ dựa trên hệ thống của bạn. Khi bạn di chuột qua cột "Tổng", trang sẽ hiển thị các số liệu sau:

  • Cum. kết nối:Số lượng kết nối tích lũy được thiết lập kể từ khi HAProxy được tải lại lần cuối.
  • Cum. phiên:Số phiên tích lũy (kết nối end-to-end) được thiết lập kể từ lần tải lại cuối cùng.
  • Cum. Yêu cầu HTTP:Số lượng yêu cầu HTTP tích lũy kể từ lần tải lại cuối cùng.
  • Phản hồi HTTP xxx:Tổng số yêu cầu HTTP đã nhận được phản hồi xxx.
  • 2xx được nén:Tổng số phản hồi 2xx đã được nén, nếu tính năng nén đã được bật. Nó cũng hiển thị phần trăm yêu cầu đã được nén.
  • Các phản hồi khác:Tổng số yêu cầu HTTP đã nhận được phản hồi không nằm trong các chỉ số khác.
  • Yêu cầu bị chặn:Tổng số yêu cầu bị chặn và chuyển hướng đến trang Thống kê HAProxy.

Cột “LbTot” và “Cuối cùng” không được sử dụng trong phần này.

Phần phụ

Phần này hiển thị số lượng kết nối hiện tại tới bất kỳ máy chủ nào đang hoạt động.

Cột "Cur" liệt kê số lượng kết nối đang hoạt động với máy chủ. Cột "Tối đa" hiển thị hầu hết các kết nối đã từng được thiết lập đồng thời với máy chủ nhất định. Cột "Giới hạn" hiển thị số lượng kết nối tối đa được phép cho một máy chủ, như được đặt bởi thông số maxconn trên một dòng máy chủ.

Hàng phụ trợ hiển thị giá trị của fullconn cho "Giới hạn" hoặc, nếu không được đặt, nó sử dụng công thức sau:Tổng các giá trị Giới hạn phiên cho giao diện người dùng định tuyến đến phụ trợ này, chia cho 10. Cột "Tổng số" hiển thị số lượng kết nối tích lũy đã sử dụng máy chủ nhất định. Khi bạn di chuột qua trường này, trang sẽ hiển thị các số liệu sau:

  • Cum. phiên:Số lượng kết nối tích lũy được thiết lập với máy chủ này.
  • Cum. Phản hồi HTTP:Số lượng tích lũy phản hồi HTTP nhận được từ máy chủ này.
  • Phản hồi HTTP xxx:Tổng số phản hồi HTTP xxx từ máy chủ này.
  • Các phản hồi khác:Tổng số phản hồi HTTP không nằm trong các chỉ số khác.
  • Thời gian hàng đợi:Khoảng thời gian tính bằng mili giây mà một kết nối vẫn được xếp hàng đợi trong khi chờ một vị trí kết nối với máy chủ, được tính trung bình trong 1024 kết nối thành công gần đây nhất.
  • Thời gian kết nối:Lượng thời gian tính bằng mili giây để kết nối thành công với máy chủ, được tính trung bình trong 1024 kết nối thành công gần đây nhất.
  • Thời gian phản hồi:Thời gian phản hồi của máy chủ tính bằng mili giây, được tính trung bình trong 1024 kết nối thành công gần đây nhất.
  • Tổng thời gian:Tổng thời gian phiên tính bằng mili giây, được tính trung bình trong 1024 kết nối thành công gần đây nhất.

Cột "LbTot" hiển thị tổng số lần máy chủ nhất định được chọn để phục vụ một yêu cầu. Điều này có thể là do cân bằng tải bình thường hoặc do lỗi bán lại từ một máy chủ bị lỗi. Cột “Cuối cùng” hiển thị thời gian kể từ khi nhận được kết nối cuối cùng.

Byte

Giao diện người dùng

Phần này hiển thị lượng dữ liệu tích lũy được gửi và nhận giữa HAProxy và máy khách. Cột “Vào” hiển thị tổng số byte đã nhận và cột “Ra” hiển thị tổng số byte đã gửi.

Phần phụ

Phần này hiển thị lượng dữ liệu được gửi và nhận giữa HAProxy và máy chủ. Cột “Trong” hiển thị số byte được gửi đến máy chủ. Cột "Ra" hiển thị số byte nhận lại.

Bị từ chối

Nó hiển thị số lượng yêu cầu và phản hồi đã bị từ chối vì lo ngại về bảo mật trong cả phần Giao diện người dùng và Phần phụ trợ.

Giao diện người dùng

Cột "Yêu cầu" hiển thị số lượng yêu cầu đã bị từ chối do chỉ thị cấu hình (http-request từ chối, http-request từ chối, v.v.) được đặt trong phần Giao diện người dùng hoặc Nghe.

Cột "Phản hồi" hiển thị số câu trả lời đã bị từ chối bởi chỉ thị từ chối phản hồi http đã được đặt trong giao diện người dùng hoặc lắng nghe.

Phần phụ

Cột "Yêu cầu" chỉ áp dụng cho toàn bộ phần phụ trợ. Nó hiển thị số lượng yêu cầu đã bị từ chối bởi chỉ thị cấu hình (http-request từ chối, http-request từ chối, v.v.) trong một chương trình phụ trợ.

Cột "Phản hồi" hiển thị số lượng phản hồi đã bị từ chối cho bất kỳ máy chủ cụ thể nào do chỉ thị cấu hình từ chối nội dung phản hồi http-response hoặc tcp-response trong chương trình phụ trợ.

Lỗi

Giao diện người dùng

Chỉ có cột "Yêu cầu" được sử dụng ở đây. Nó hiển thị số lượng yêu cầu gặp lỗi.

Nguyên nhân có thể bao gồm:

  • Chấm dứt sớm với khách hàng
  • Lỗi đọc từ máy khách
  • Khách hàng đã hết thời gian chờ đợi
  • Khách hàng đã đóng kết nối
  • Khách hàng đã gửi một yêu cầu không đúng định dạng
  • Yêu cầu đã được duyệt qua

Phần phụ

Nó hiển thị số lỗi liên quan đến giao tiếp với máy chủ phụ trợ.

Cột "Yêu cầu" không được sử dụng. Cột "Conn" hiển thị số lượng yêu cầu gặp lỗi khi cố gắng kết nối với máy chủ. Cột "Phản hồi" hiển thị các lỗi gặp phải khi nhận phản hồi.

Cảnh báo

Phần phụ

Chỉ dành cho phụ trợ. Phần này hiển thị số lần thử lại và số lần bán lại. Nếu bạn đã thêm chỉ thị thử lại vào chương trình phụ trợ của mình, thì cột "Thử lại" hiển thị tổng số lần kết nối được thử lại. Cột “Redis” hiển thị số lần HAProxy không thiết lập được kết nối với máy chủ và kết nối lại nó với máy chủ khác. Điều này yêu cầu bạn phải thêm chỉ thị tùy chọn bán lại.

Máy chủ

Giao diện người dùng

Trường duy nhất từ ​​phần này áp dụng cho giao diện người dùng là trường Trạng thái. Khi Trạng thái MỞ, giao diện người dùng đang hoạt động bình thường và sẵn sàng nhận lưu lượng truy cập.

Phần phụ

Phần này hiển thị chi tiết về trạng thái, sức khỏe và trọng lượng của từng máy chủ. Cột "Trạng thái" hiển thị nếu máy chủ hiện đang hoạt động và trong bao lâu. Nó có thể hiển thị bất kỳ trạng thái nào sau đây:

  • LÊN:Máy chủ đang báo cáo là tốt.
  • DOWN:Máy chủ đang báo cáo là không khỏe và không thể nhận yêu cầu.
  • NOLB:Bạn đã thêm http-check disable-on-404 vào phần phụ trợ và URL được kiểm tra tình trạng đã trả lại phản hồi HTTP 404.
  • CHÍNH:Máy chủ đã bị vô hiệu hóa hoặc được đưa vào chế độ bảo trì.
  • DRAIN:Máy chủ đã được đặt ở chế độ thoát.
  • không kiểm tra:Kiểm tra tình trạng không được bật cho máy chủ này.

Cột "LastChk" hiển thị một giá trị như L7OK / 200 tính bằng Xms. Giá trị đó có nghĩa là kiểm tra sức khỏe Lớp 7 đã được thực hiện; nó trả về phản hồi HTTP 200 OK và nó đã làm như vậy trong vòng X mili giây.

Cột "Wght" hiển thị tỷ lệ lưu lượng mà nó sẽ chấp nhận, như được đặt bởi tham số trọng số trên dòng máy chủ. Cột “Hành động” cho biết máy chủ đang hoạt động (được đánh dấu bằng chữ Y) hay bản sao lưu (được đánh dấu bằng dấu -). Cột "Bck" cho biết máy chủ là một bản sao lưu (được đánh dấu bằng chữ Y) hay đang hoạt động (được đánh dấu bằng dấu -).

Cột "Chk" hiển thị số lần kiểm tra sức khỏe không thành công. Cột "Dwn" hiển thị số lần chuyển đổi từ LÊN sang XUỐNG. Cột “Dwntme” hiển thị thời gian máy chủ ngừng hoạt động.

Nếu bạn đã thêm thông số khởi động chậm vào dòng máy chủ, thì khi bạn tắt và sau đó bật máy chủ đó, cột "Thrtle" hiển thị phần trăm lưu lượng truy cập mà máy chủ sẽ chấp nhận. Phần trăm sẽ dần dần tăng lên 100% trong khoảng thời gian bạn đã đặt.

Thông tin này dựa trên một bài đăng trên blog HAProxy mà bạn có thể tham khảo để biết thêm thông tin chi tiết.

HAProxy trên ClusterControl

Ngoài triển khai và quản lý, ClusterControl còn cung cấp thông tin chi tiết về thống kê HAProxy và Trang tổng quan thời gian thực từ giao diện người dùng. Từ ClusterControl, bạn có thể truy cập trang thống kê tại ClusterControl -> Chọn Cluster -> Nodes -> chọn nút HAProxy tương tự như ảnh chụp màn hình bên dưới:

Bạn có thể bật / tắt máy chủ từ cân bằng tải bằng cách đánh dấu chọn / unticking nút hộp kiểm trong cột “Đã bật”. Điều này rất hữu ích khi bạn muốn ứng dụng của mình cố tình bỏ qua kết nối với máy chủ, ví dụ:để bảo trì hoặc để kiểm tra và xác thực các thông số cấu hình mới hoặc các truy vấn được tối ưu hóa.

Bạn cũng có thể giám sát các máy chủ HAProxy của mình từ ClusterControl bằng cách kiểm tra phần Trang tổng quan.

Để kích hoạt nó, bạn chỉ cần vào ClusterControl -> Chọn Cluster -> Trang tổng quan -> Bật Giám sát Dựa trên Tác nhân. Điều này sẽ triển khai một tác nhân trên mỗi nút để lấy tất cả thông tin nhằm tạo ra các biểu đồ tương ứng.

Tại đây, bạn sẽ không chỉ thấy tất cả các chỉ số cần thiết để theo dõi nút HAProxy mà còn để theo dõi tất cả môi trường bằng cách sử dụng các Trang tổng quan khác nhau.

Kết luận

HAProxy là một công cụ tốt và mạnh mẽ để cải thiện hiệu suất cơ sở dữ liệu và ứng dụng của bạn. Nó cũng hữu ích để thêm Tính sẵn sàng cao và Chuyển đổi dự phòng vào môi trường của bạn. Để biết điều gì đang xảy ra trong nút HAProxy của bạn, bạn cần hiểu các chỉ số đang được theo dõi trong trang thống kê hoặc thậm chí cải thiện việc giám sát này bằng cách thêm trang tổng quan để làm cho nó thân thiện hơn.

Trong blog này, chúng tôi đã giải thích từng số liệu được đề cập trong trang thống kê HAProxy và chúng tôi cũng cho thấy nó trông như thế nào trên ClusterControl, nơi bạn có thể truy cập cả thống kê và bảng điều khiển các phần HAProxy từ cùng một hệ thống.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách triển khai cơ sở dữ liệu Chamilo MySQL để có tính khả dụng cao

  2. MySQL DROP INDEX

  3. Mô phỏng ORDER BY FIELD () của MySQL trong Postgresql

  4. Pymysql Cursor.fetchall () / Fetchone () Trả về Không có

  5. Ví dụ về TIMESTAMPDIFF () - MySQL