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.
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.)
Không có nhận xét nào:
Đăng nhận xét