Để giữ cho dịch vụ ít nhất chạy bạn có thể sắp xếp cho Manager của Windows Service để tự động khởi động lại dịch vụ nếu nó bị treo (xem tab phục hồi trên các thuộc tính dịch vụ.) Thông tin chi tiết có sẵn ở đây, trong đó có một kịch bản hàng loạt để thiết lập những đặc tính này - Restart a windows service if it crashes
Tính khả dụng cao hơn nhiều so với việc duy trì dịch vụ từ bên ngoài - bản thân dịch vụ cần được xây dựng với tính sẵn sàng cao (tức là sử dụng thực hành lập trình tốt trong suốt, cơ sở dữ liệu thích hợp, tài nguyên cặp đôi và phát hành), và toàn bộ stress-thử nghiệm để đảm bảo rằng nó sẽ ở lại theo tải dự kiến.
Đối với các lệnh không tải trọng, dung sai các lỗi không liên tục (như tài nguyên bị khóa) có thể đạt được bằng cách gọi lại lệnh một số lần nhất định. Điều này cho phép dịch vụ bảo vệ máy khách khỏi lỗi (đến một điểm.) Máy khách cũng phải được mã hóa để dự đoán lỗi. Máy khách có thể xử lý lỗi dịch vụ theo nhiều cách - ghi nhật ký, nhắc người dùng, thử lại X lần, ghi lại lỗi nghiêm trọng và thoát là tất cả các trình xử lý có thể có - điều nào phù hợp với bạn tùy thuộc vào yêu cầu của bạn. Nếu dịch vụ có "trạng thái trò chuyện", khi dịch vụ không thành công (nghĩa là quá trình được khởi động lại), khách hàng phải biết và xử lý tình huống này, vì điều đó thường có nghĩa là trạng thái cuộc trò chuyện hiện tại đã bị mất.
Một máy đơn sẽ dễ bị lỗi phần cứng, vì vậy nếu bạn định sử dụng một máy đơn lẻ, hãy đảm bảo nó có các thành phần dự phòng. Ổ cứng đặc biệt dễ bị hỏng, vì vậy có ít nhất ổ đĩa được nhân đôi hoặc một mảng RAID. PSU là điểm yếu tiếp theo, do đó PSU dư thừa cũng đáng giá như UPS.
Để phân cụm, Windows hỗ trợ phân cụm dịch vụ và quản lý dịch vụ bằng Tên mạng, thay vì tên máy tính riêng lẻ. Điều này cho phép khách hàng của bạn kết nối với bất kỳ máy nào đang chạy dịch vụ và không phải là một tên mã hóa cứng. Nhưng trừ khi bạn thực hiện các biện pháp bổ sung, đây là chuyển đổi tài nguyên - chuyển yêu cầu từ một trường hợp dịch vụ sang một dịch vụ khác. Trạng thái Converstaion thường bị mất. Nếu các dịch vụ của bạn đang ghi vào cơ sở dữ liệu, thì nó cũng phải được nhóm lại để đảm bảo độ tin cậy và đảm bảo các thay đổi có sẵn cho toàn bộ cụm, và không chỉ là nút cục bộ.
Đây thực sự chỉ là đỉnh của tảng băng trôi, nhưng tôi hy vọng nó sẽ cho bạn những ý tưởng để bắt đầu nghiên cứu sâu hơn.
Microsoft Clustering Service (MSCS)
Bạn có thể chia sẻ thêm một chút thông tin về những gì dịch vụ của bạn đang làm không? Các chiến lược HA có thể khác nhau tùy thuộc vào những gì bạn đang cố gắng làm. –
Justin, tôi quan tâm đến các dịch vụ cửa sổ rất tầm thường như người nghe ổ cắm hoặc bỏ phiếu/ghi dữ liệu vào một số datbases/tập tin phẳng, vv, – asyncwait