Spinner Health Check#

Spinner Health Check là tính năng cho phép kiểm tra độ sẵn sàng của ứng dụng, để từ đó các dịch vụ khác sẽ không truy cập hoặc không gửi yêu cầu đến ứng dụng cho đến khi sẵn sàng, đồng thời hệ thống cũng dựa vào đó để có các cơ chế cố gắng đưa ứng dụng của bạn hoạt động trở lại.

Spinner hỗ trợ 3 loại healthcheck là Liveness, ReadinessStartup Probes.

Liveness#

Chức năng này cho biết khi nào thì nên khởi động lại container trong pod (nếu chưa hiểu pod là gì, có thể tham khảo ở đây). Chức năng này sẽ hữu ích khi bạn muốn chắc chắn ứng dụng của mình không gặp tình trạng deadlocked hoặc không phản hồi.

Readiness:#

Việc thăm dò này sẽ xác định khi nào một container trong pod sẵn sàng nhận lưu lượng truy cập. Một pod được xem là sẵn sàng nếu tất cả các container trong pod đó đã sẵn sàng. Một khi pod không sẵn sàng thì nó sẽ bị loại bỏ khỏi service load balancers. Cụ thể có có 2 pod chạy ứng dụng và chỉ có 1 pod được kiểm tra là đã sẵn sàng thì lưu lượng truy cập sẽ được gửi toàn bộ đến pod này.

Startup Probes:#

Được dùng để kiểm tra khi nào một container đã bắt đầu chạy ứng dụng. Tính năng health check liveness và readiness sẽ không bắt đầu thực hiện cho đến khi quá trình startup probes thành công để đảm bảo các health check còn lại không can thiệp vào quá trình khởi động ứng dụng. Tính năng này thường áp dụng để kiểm tra các container chạy ứng dụng mà có thời gian khởi động lâu.

Picture
Picture
Picture

Các phương thức healthcheck:#

  • HTTP GET: hệ thống kiểm tra tính sẵn sàng container đang chạy ứng dụng bằng cách ping tới một đường dẫn với Path và Port được thiết lập trong quá trình cài đặt spinner heatlh check. Nếu dữ liệu trả về với trạng thái lơn hơn hoặc bằng 200 và nhỏ hơn 400 thì container được xác định là đã sẵn sàng.

  • Container Command: hệ thống kiểm tra tính sẵn sàng container đang ứng dụng bằng cách chạy một command bên trong container. Nếu command được thực hiện thành công và kết quả trả về bằng 0 thì container được xác định là đã sẵn sàng.

  • TCP Socket: hệ thống kiểm tra tính sẵn sàng container đang chạy ứng dụng bằng cách thiết lập một kết nối TCP trên Port được thiết lập trong quá trình cài đặt spinner health check. Nếu thiết lập được kết nối thì container được xác định là đã sẵn sàng.

Các thông số cài đặt đi kèm:#

  • Path: là đường dẫn được thiết lập để hệ thống kiểm tra tính sẵn sàng container đang chạy ứng dụng. Giá trị mặc định là “/”. Được thiết lập cho options HTTP GET.

  • Port: là cổng được thiết lập để hệ thống kiểm tra tính sẵn sàng container đang chạy ứng dụng. Giá trị của Port phải nằm trong khoảng từ 1 đến 65535. Được thiết lập cho options HTTP GET, TCP Socket.

  • Use HTTPS: là thông số để thiết lập phương thức kết nối cho options HTTP GET theo cơ chế HTTPS. Phương thức kết nối mặc định là HTTP.

  • Header: thiết lập các dữ liệu muốn thêm là header.

  • Arguments: là các câu lệnh dùng để kiểm tra tính sẵn sàng container đang chạy ứng dụng. Được thiết lập cho options Container Command.

  • Failure threshold: là số lần liên tiếp hệ thông thực hiện health check không thành công. Cụ thê với trường hợp liveness khi kiểm tra tính sẵn sàng của container, nếu số lần kiểm tra trả về không sẵn sàng vượt quá sô lần được thiết lập trong Failure threshold thì hệ thống sẽ cố gắng khởi động lại container. Trong hợp readiness thì container sẽ được xác đinh là không sẵn sàng dẫn đến pod sẽ không nhận lưu lượng truy cập. Với Startup Probes thì container sẽ được xác định là bắt đầu không thành công, hệ thống sẽ cố gắng khởi động lại container. Giá trị mặc định là 3 và giá trị tối thiểu là 1.

  • Success threshold: là số lần liên tiếp container thự hiện health check thành công sau khi health check thất bại. Nếu container đạt được tham số này thì nó được xác định là đã sẵn sàng. Giá trị mặc định là 1, giá trị tối thiểu là 1 và giá trị phải là 1 đối với trường hợp liveness.

  • Initial Delay: là độ trễ ban đầu tính bằng giây sau khi container bắt đầu chạy ứng dụng thì các hành động health check mới được thực hiện. Thống số này cực kì quan trọng vì nó đảm bảo pod đã hoàn toàn khởi động xong mới thực hiện health check.

Note

Nếu thiết lập thêm thông số Min Ready Seconds trong cài đặt Advance Options thì cần lưu ý giá trị của Initial Delay phải nhỏ hơn Min Ready Seconds

  • Period: là tần suất tính bằng giây thực hiện health check. Giá trị mặc định là 10. Giá trị tối thiểu là 1.

  • Timeout: là khoảng thời gian tính bằng giây khi thực hiện health check mà không có kết quả trả về. Giá trị mặc định là 1. Giá trị tối thiểu là 1.