Bài đăng nổi bật

Hướng dẫn thay đổi thư mục root mặc định của Docker trên Linux

Hoàn cảnh: người viết gặp một trường hợp như này Được team hạ tầng cấp cho một máy chủ gồm 2 phân vùng lưu trữ, 1 phân vùng 20GB được gắn và...

14 tháng 8, 2014

HA (High Avaibility) trong Linux với Heartbeat

Bài viết này tôi chỉ tập trung vào giải thích nguyên tắc hoạt động của Heartbeat khi được sử dụng để xây dựng giải pháp HA trên môi trường Linux.
Trước khi đi vào bài viết, có lẽ bạn nên xem qua bài viết IP ảo trong môi trường Linux để biết thêm một số khái niệm.
Về cơ bản, nguyên tắc hoạt động của Heartbeat là:

  • Theo dõi trạng thái của các máy chủ thành phần.
  • Xác định một máy chủ thành phần gặp sự cố thông qua cơ chế tương tự như "ping" - ping không thấy thì coi như chết.
  • Nếu máy chủ chính gặp sự cố, Heartbeat sẽ tiến hành gọi dịch vụ thay thế trên máy chủ dự phòng.
Phần dưới đây tôi đi sâu vào chi tiết một số vấn đề kỹ thuật của hệ thống, bạn nào muốn biết cách cài đặt và sử dụng Heartbeat thì xem thêm tại bài viết http://www.linuxnix.com/2010/01/heartbeat-clustering.html
Giả sử ta có 2 máy chủ thành phần là A và B.
A có 2 card mạng:
eth0 - 10.0.0.10
eth1 - 192.168.1.2
B có 2 card mạng:
eth0 - 10.0.0.11
eth1 - 192.168.1.3
Ta cho hai card mạng eth1 của A và B thông với nhau để thực hiện nhiệm vụ đồng bộ dữ liệu (do DRBD thực hiện) đồng thời đây cũng là card mạng mà Heartbeat sử dụng để kiểm tra dịch vụ.
Hai card mạng eth0 kết nối ra internet.
Người dùng bên ngoài sẽ sử dụng dịch vụ tại địa chỉ IP 10.0.0.12 ( Bạn lưu ý thông số này và thông số của 2 card eth0 của 2 máy nhé )
Khi chạy Heartbeat, hệ thống sẽ tiến hành tạo ra một địa chỉ IP ảo là 10.0.0.12 cho hệ thống. Giả sử ta thiết lập cho nó hoạt động với card mạng eth0. Khi đó nếu ta gõ lệnh ifconfig eth0 thì sẽ thấy như sau:
Eth0:0 Link encap:Ethernet HWaddr 00:02:A5:4C:AF:8E
inet addr:10.0.0.12 Bcast:10.77.231.255 Mask:255.255.248.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Base address:0×5000 Memory:f7fe0000-f8000000

Như vậy, tại một thời điểm, Heartbeat sẽ chỉ gán địa chỉ IP này cho một máy trong cụm máy chủ HA, nếu máy chủ chính gặp lỗi nó sẽ chuyển địa chỉ này sang máy chủ dự phòng. ( Có một điểm tôi thắc mắc nhưng chưa xác nhận qua thực tế là liệu Heartbeat có thể hoạt động với các máy chủ có một card mạng hay không? - Bạn đọc nào có thời gian thử xác nhận lại giúp tôi xem.)