Làm cách nào để thiết lập STONITH trong cụm máy tạo nhịp tim HA hoạt động / thụ động 2 nút?


12

Tôi đang cố gắng thiết lập một cụm Linux-HA hoạt động / thụ động (2 nút) với corosync và máy tạo nhịp tim để giữ và chạy một cơ sở dữ liệu PostgreQuery. Nó hoạt động thông qua DRBD và một ip dịch vụ. Nếu node1 thất bại, node2 sẽ tiếp quản. Tương tự nếu PG chạy trên nút2 và nó bị lỗi. Tất cả mọi thứ hoạt động tốt, ngoại trừ điều STONITH.

Giữa các nút là một kết nối HA chuyên dụng (10.10.10.X), vì vậy tôi có cấu hình giao diện sau:

eth0            eth1            host
10.10.10.251    172.10.10.1     node1
10.10.10.252    172.10.10.2     node2

Stonith được kích hoạt và tôi đang thử nghiệm với một tác nhân ssh để tiêu diệt các nút.

crm configure property stonith-enabled=true
crm configure property stonith-action=poweroff
crm configure rsc_defaults resource-stickiness=100
crm configure property no-quorum-policy=ignore

crm configure primitive stonith_postgres stonith:external/ssh \
                params hostlist="node1 node2"
crm configure clone fencing_postgres stonith_postgres

crm_mon -1 trình diễn:

============
Last updated: Mon Mar 19 15:21:11 2012
Stack: openais
Current DC: node2 - partition with quorum
Version: 1.0.9-74392a28b7f31d7ddc86689598bd23114f58978b
2 Nodes configured, 2 expected votes
4 Resources configured.
============

Online: [ node2 node1 ]

Full list of resources:

 Master/Slave Set: ms_drbd_postgres
     Masters: [ node1 ]
     Slaves: [ node2 ]
 Resource Group: postgres
     fs_postgres        (ocf::heartbeat:Filesystem):    Started node1
     virtual_ip_postgres        (ocf::heartbeat:IPaddr2):       Started node1
     postgresql (ocf::heartbeat:pgsql): Started node1
 Clone Set: fencing_postgres
     Started: [ node2 node1 ]

Vấn đề là: khi tôi cắt kết nối giữa các giao diện eth0, nó sẽ giết cả hai nút . Tôi nghĩ đó là một vấn đề với đại biểu, vì chỉ có 2 nút. Nhưng tôi không muốn thêm nút thứ 3 chỉ để tính đại biểu đúng.

Có bất kỳ ý tưởng để giải quyết vấn đề này?


Đầu ra crm_montrông như thế nào khi cụm của bạn ở trạng thái không thành công?
larsks

1
Bây giờ tôi đang sử dụng một thiết bị ném đá không chạy trên cùng một nút như postgres. Công việc này đúng như mong đợi!
MMore

Câu trả lời:


21

Đây là một câu hỏi cũ hơn một chút nhưng vấn đề được trình bày ở đây dựa trên một quan niệm sai lầm về cách thức và thời điểm chuyển đổi dự phòng trong các cụm, đặc biệt là cụm hai nút, hoạt động.

Ý chính là: Bạn không thể thực hiện kiểm tra chuyển đổi dự phòng bằng cách vô hiệu hóa giao tiếp giữa hai nút. Làm như vậy sẽ dẫn đến chính xác những gì bạn đang thấy, một kịch bản chia não với STONITH bổ sung lẫn nhau. Nếu bạn muốn kiểm tra khả năng đấu kiếm, một killall -9 corosyncnút đơn giản trên nút hoạt động sẽ làm. Những cách khác là crm node fencehoặc stonith_admin -F.

Từ mô tả chưa hoàn chỉnh về cụm của bạn (đầu ra của crm configure showvà ở cat /etc/corosync/corosync.confđâu?), Có vẻ như bạn đang sử dụng các địa chỉ 10.10.10.xx để nhắn tin, tức là giao tiếp Corosync / cluster. Các địa chỉ 172.10.10.xx là địa chỉ mạng dịch vụ / thông thường của bạn và bạn sẽ truy cập vào một nút đã cho, ví dụ như sử dụng SSH, bằng địa chỉ 172.10.10.xx của nó. DNS dường như cũng giải quyết một tên máy chủ nút như node1là 172.10.10.1.

Bạn đã cấu hình STONITH để sử dụng SSH, bản thân nó không phải là một ý tưởng hay, nhưng có lẽ bạn chỉ đang thử nghiệm. Tôi đã không sử dụng nó cho mình nhưng tôi giả sử tác nhân SSH STONITH đăng nhập vào nút khác và đưa ra lệnh tắt máy, giống như ssh root@node2 "shutdown -h now"hoặc một cái gì đó tương đương.

Bây giờ, điều gì xảy ra khi bạn cắt liên lạc cụm giữa các nút? Các nút không còn thấy mỗi nút là sống và tốt, bởi vì không có nhiều giao tiếp giữa chúng. Do đó, mỗi nút giả định rằng nó là người duy nhất sống sót sau một số sự kiện không may và cố gắng trở thành (hoặc duy trì) nút hoạt động hoặc nút chính. Đây là kịch bản chia não kinh điển và đáng sợ .

Một phần của điều này là để đảm bảo rằng nút kia, rõ ràng và có lẽ đã thất bại, đó là lúc STONITH xuất hiện. Hãy nhớ rằng cả hai nút hiện đang chơi cùng một trò chơi: cố gắng trở thành (hoặc ở lại) hoạt động và thực hiện trên tất cả các tài nguyên cụm, cũng như bắn nút khác trong đầu.

Bạn có thể đoán những gì xảy ra bây giờ. node1làm ssh root@node2 "shutdown -h now"node2làm ssh root@node1 "shutdown -h now". Điều này không sử dụng mạng truyền thông cụm 10.10.10.xx mà là mạng dịch vụ 172.10.10.xx. Vì cả hai nút trên thực tế vẫn còn sống và tốt, chúng không gặp vấn đề gì khi ban hành lệnh hoặc nhận kết nối SSH, vì vậy cả hai nút bắn nhau cùng một lúc. Điều này giết chết cả hai nút.

Nếu bạn không sử dụng STONITH thì một bộ não phân tách thậm chí có thể gây ra hậu quả tồi tệ hơn, đặc biệt là trong trường hợp DRBD, nơi bạn có thể kết thúc bằng việc cả hai nút trở thành Chính. Tham nhũng dữ liệu có khả năng xảy ra và bộ não phải được giải quyết bằng tay.

Tôi khuyên bạn nên đọc tài liệu trên http://www.hastexo.com/resource/hints-and-kinks được viết và duy trì bởi những người đã đóng góp (và vẫn đóng góp) một phần lớn của cái mà ngày nay chúng ta gọi là "Linux HA cây rơm".

TL; DR : Nếu bạn đang cắt liên lạc cụm giữa các nút của mình để kiểm tra thiết lập hàng rào, bạn đã làm sai . Sử dụng killall -9 corosync, crm node fencehoặc stonith_admin -Fthay vào đó. Cắt truyền thông cụm sẽ chỉ dẫn đến một kịch bản chia não, có thể và sẽ dẫn đến tham nhũng dữ liệu.


2

Bạn có thể thử thêm auto_tie_breaker: 1vào phần đại biểu của /etc/corosync/corosync.conf

Khi ATB được kích hoạt, cụm có thể chịu tới 50% các nút bị hỏng cùng một lúc, theo kiểu xác định. Phân vùng cụm hoặc tập hợp các nút vẫn tiếp xúc với nút có nútid thấp nhất sẽ vẫn còn nguyên trạng. Các nút khác sẽ được hỏi.


0

Hãy thử đọc chương đại biểu và cụm hai nút của tài liệu Pacemaker.


Hãy nghĩ rằng bạn có nghĩa là điều 'không-đại biểu-chính sách = bỏ qua'. Tôi đã thiết lập nó (chỉnh sửa bài viết đầu tiên của tôi). Không giúp tôi ở đây. Bạn có thể đặt một điểm tốt hơn cho nó, xin vui lòng?
MMore

Vâng, tài liệu cho thấy rằng máy điều hòa nhịp tim sẽ ghi lại một số thông điệp cụ thể nếu có vấn đề đại biểu với cụm. Bạn có thấy điều đó trong nhật ký của bạn không? Không crm_monthể hiện điều gì?
larsks

Tôi không thể tìm thấy sth. thú vị trong nhật ký. Tôi chỉnh sửa bài viết đầu tiên của tôi với thông tin của crm_mon -1.
MMore

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.