Khi triển khai một cụm cơ sở dữ liệu trong các máy chủ khác nhau, bạn sẽ đạt được lợi thế nhân rộng là cải thiện tính khả dụng của dữ liệu. Tuy nhiên, cần phải theo dõi các quá trình và xem liệu chúng có đang chạy hay không. Một trong những chương trình được sử dụng trong quá trình này là Heartbeat có khả năng kiểm tra và xác minh sự hiện diện của tài nguyên trên một hoặc nhiều hệ thống trong một cụm nhất định. Bên cạnh PostgreSQL và các hệ thống tệp mà dữ liệu PostgreSQL được lưu trữ, DRBD là một trong những tài nguyên mà chúng ta sẽ thảo luận trong bài viết này về cách có thể sử dụng chương trình Heartbeat.
Nhịp tim HA
Như đã thảo luận trước đó trong blog DRBD, có được tính khả dụng cao của dữ liệu thông qua việc chạy các phiên bản khác nhau của máy chủ nhưng cung cấp cùng một dữ liệu. Các phiên bản máy chủ đang chạy này có thể được định nghĩa là một cụm liên quan đến Nhịp tim. Về cơ bản, mỗi phiên bản máy chủ về mặt vật lý có khả năng cung cấp dịch vụ giống như các phiên bản khác trong cụm đó. Tuy nhiên, tại một thời điểm chỉ có thể tích cực cung cấp dịch vụ nhằm mục đích đảm bảo dữ liệu có tính khả dụng cao. Do đó, chúng tôi có thể định nghĩa các trường hợp khác là 'phụ tùng nóng' có thể được đưa vào sử dụng trong trường hợp bản chính bị lỗi. Gói Heartbeat có thể được tải xuống từ liên kết này. Sau khi cài đặt gói này, bạn có thể cấu hình nó để hoạt động với hệ thống của bạn theo quy trình bên dưới. Cấu trúc đơn giản của cấu hình Heartbeat là:
Cấu hình của Heartbeat
Nhìn vào thư mục /etc/ha.d này, bạn sẽ tìm thấy một số tệp được sử dụng trong quá trình cấu hình. Tệp ha.cf tạo thành cấu hình nhịp tim chính. Nó bao gồm danh sách tất cả các nút và thời gian để xác định lỗi bên cạnh việc định hướng nhịp tim về loại đường dẫn phương tiện nào sẽ sử dụng và cách định cấu hình chúng. Thông tin bảo mật cho cụm được ghi lại trong tệp authkeys. Thông tin được ghi lại trong các tệp này phải giống nhau đối với tất cả các máy chủ trong cụm và điều này có thể dễ dàng đạt được thông qua đồng bộ hóa trên tất cả các máy chủ. Điều này có nghĩa là mọi thay đổi thông tin trong một máy chủ phải được sao chép sang tất cả các máy khác.
Tệp ha.cf
Đường nét cơ bản của tệp ha.cf là
logfacility local0
keepalive 3
Deadtime 7
warntime 3
initdead 30
mcast eth0 225.0.0.1 694 2 0
mcast eth1 225.0.0.2 694 1 0
auto_failback off
node drbd1
node drbd2
node drbd3
-
Logfacility:cái này được sử dụng để định hướng Heartbeat mà nó sẽ sử dụng phương tiện ghi nhật ký hệ thống để ghi tin nhắn. Giá trị thường được sử dụng nhất là auth, authpriv, user, local0, syslog và daemon. Bạn cũng có thể quyết định không có bất kỳ nhật ký nào để có thể đặt giá trị thành không có .i.e
logfacility none
- Keepalive:đây là thời gian giữa các nhịp tim, tần số mà tín hiệu nhịp tim được gửi đến các máy chủ khác. Trong mã mẫu ở trên, nó được đặt thành 3 giây.
- Thời gian chết:là độ trễ tính bằng giây mà sau đó một nút được thông báo là đã bị lỗi.
- Warntime:là độ trễ tính bằng giây sau đó cảnh báo được ghi vào nhật ký cho biết rằng nút không thể liên lạc được nữa.
- Initdead:đây là thời gian tính bằng giây trong khi khởi động hệ thống trước khi máy chủ khác được coi là ngừng hoạt động.
- Mcast:nó là một thủ tục phương pháp xác định để gửi tín hiệu nhịp tim. Đối với mã mẫu ở trên, địa chỉ mạng đa hướng đang được sử dụng trên một thiết bị mạng có giới hạn. Đối với nhiều cụm, địa chỉ multicast phải là duy nhất cho mỗi cụm. Bạn cũng có thể chọn kết nối nối tiếp qua đa tuyến hoặc nếu bạn thiết lập theo cách có nhiều giao diện mạng, hãy sử dụng cả hai cho kết nối nhịp tim như ví dụ. Lợi ích của việc sử dụng cả hai là khắc phục được khả năng hỏng hóc tạm thời, do đó có thể gây ra sự kiện hỏng hóc không hợp lệ.
- Auto_failback:điều này kết nối lại máy chủ đã bị lỗi quay lại cụm nếu nó khả dụng. Tuy nhiên, nó có thể gây ra nhầm lẫn nếu máy chủ được bật và sau đó trực tuyến vào một thời điểm khác. Liên quan đến DRBD, nếu nó không được cấu hình tốt, bạn có thể kết thúc với nhiều hơn một tập dữ liệu trong cùng một máy chủ. Do đó, bạn nên luôn đặt nó ở chế độ tắt.
- Nút:phác thảo nút trong nhóm cụm Nhịp tim. Bạn nên có ít nhất 1 nút cho mỗi nút.
Cấu hình bổ sung
Bạn cũng có thể đặt thông tin cấu hình bổ sung như:
ping 10.0.0.1
respawn hacluster /usr/lib64/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
deadping 5
- Ping:điều này rất quan trọng trong việc đảm bảo bạn có kết nối trên giao diện công cộng cho các máy chủ và kết nối với một máy chủ khác. Điều quan trọng là phải xem xét địa chỉ IP chứ không phải tên máy chủ của máy đích.
- Respawn:đây là lệnh chạy khi xảy ra lỗi.
- Apiauth:là thẩm quyền về lỗi. Bạn cần định cấu hình ID người dùng và nhóm mà lệnh sẽ được thực thi. Tệp authkeys lưu giữ thông tin ủy quyền cho cụm Nhịp tim và khóa này rất độc đáo để xác minh các máy trong một cụm Nhịp tim nhất định.
- Deadping:xác định thời gian chờ trước khi lỗi không phản hồi gây ra lỗi.
Tích hợp Heartbeat với Postgres và DRBD
Như đã đề cập trước đây, khi một máy chủ chính bị lỗi, một máy chủ khác với một cụm nhất định sẽ hoạt động để cung cấp cùng một dịch vụ. Heartbeat giúp cấu hình tài nguyên nâng cao khả năng lựa chọn máy chủ trong trường hợp bị lỗi. Ví dụ, nó xác định những máy chủ riêng lẻ nào sẽ được đưa lên hoặc bị loại bỏ khi bị lỗi. Kiểm tra tệp haresources trong thư mục /etc/ha.d, chúng tôi nhận được một bản phác thảo về các tài nguyên có thể được quản lý. Đường dẫn tệp tài nguyên là /etc/ha.d/resource.d và định nghĩa tài nguyên nằm trong một dòng:
drbd1 drbddisk Filesystem::/dev/drbd0::/drbd::ext3 postgres 10.0.0.1
(lưu ý các khoảng trắng).
- Drbd1:đề cập đến tên của máy chủ lưu trữ ưu tiên để bảo mật hơn máy chủ thường được sử dụng làm máy chủ mặc định để xử lý dịch vụ. Như đã đề cập trong blog DRBD, chúng tôi cần tài nguyên cho máy chủ của mình và những tài nguyên này được định nghĩa trong dòng là drbddisk, filesystem và postgres. Trường cuối cùng là địa chỉ IP ảo sẽ được sử dụng để chia sẻ dịch vụ, tức là kết nối với máy chủ Postgres. Theo mặc định, nó sẽ được cấp phát cho máy chủ đang hoạt động khi Heartbeat bắt đầu. Khi xảy ra lỗi, các tài nguyên này sẽ được khởi động trên máy chủ dự phòng theo thứ tự sắp xếp khi tập lệnh tương ứng được gọi. Trong cài đặt này, tập lệnh sẽ chuyển đĩa DRBD trên máy chủ phụ sang chế độ chính, giúp thiết bị đọc / ghi.
- Hệ thống tệp:hệ thống này sẽ quản lý tài nguyên hệ thống tệp và trong trường hợp này, DRBD đã được chọn nên nó sẽ được gắn trong quá trình gọi tập lệnh tài nguyên.
- Postgres:điều này sẽ khởi động hoặc quản lý máy chủ Postgres
Đôi khi bạn muốn nhận thông báo qua email. Để làm như vậy, hãy thêm dòng này vào tệp tài nguyên cùng với email của bạn để nhận văn bản cảnh báo:
MailTo:: [email protected]::DRBDFailure
Để bắt đầu nhịp tim, bạn có thể chạy lệnh
/etc/ha.d/heartbeat start
hoặc khởi động lại cả máy chủ chính và máy chủ phụ. Bây giờ nếu bạn chạy lệnh
$ /usr/lib64/heartbeat/hb_standby
Nút hiện tại sẽ được kích hoạt để chuyển sạch tài nguyên của nó cho nút khác.
Tải xuống Báo cáo chính thức hôm nay Quản lý &Tự động hóa PostgreSQL với ClusterControlTìm hiểu về những điều bạn cần biết để triển khai, giám sát, quản lý và mở rộng PostgreSQLTải xuống Báo cáo chính thứcXử lý lỗi cấp hệ thống
Đôi khi hạt nhân máy chủ có thể bị hỏng do đó cho thấy có sự cố với máy chủ của bạn. Bạn sẽ cần phải định cấu hình máy chủ để tự loại bỏ khỏi cụm trong trường hợp có sự cố. Sự cố này thường được gọi là sự hoảng loạn hạt nhân và do đó nó gây ra khởi động lại khó trên máy của bạn. Bạn có thể buộc khởi động lại bằng cách đặt kernel.panic và kernel.panic_on_oop của tệp điều khiển nhân /etc/sysctl.conf. Tức là
kernel.panic_on_oops = 1
kernel.panic = 1
Một tùy chọn khác là thực hiện điều đó từ dòng lệnh bằng lệnh sysctl, tức là:
$ sysctl -w kernel.panic=1
Bạn cũng có thể chỉnh sửa tệp sysctl.conf và tải lại thông tin cấu hình bằng lệnh này.
sysctl -p
Giá trị cho biết số giây phải chờ trước khi khởi động lại. Sau đó, nút nhịp tim thứ hai sẽ phát hiện ra rằng máy chủ bị lỗi và sau đó chuyển qua máy chủ chuyển đổi dự phòng.
Kết luận
Heartbeat là một hệ thống con cho phép lựa chọn máy chủ phụ thành hệ thống chính và hệ thống dự phòng khi máy chủ hoạt động bị lỗi. Nó cũng xác định xem tất cả các máy chủ khác còn sống hay không. Nó cũng đảm bảo chuyển tài nguyên đến nút chính mới