2009-11-18 25 views
7

Có ai biết về bất kỳ thực tiễn tốt nhất đã được thiết lập nào để chạy các dịch vụ Windows (trong trường hợp của tôi, được phát triển trong .NET) hay không (tự động) không đúng trên máy chủ khác. mục đích? Các cách chính tôi có thể thấy việc này được thực hiện hoặc là khởi động máy chủ thứ cấp khi cần (trong trường hợp đó cần phải giám sát một máy chủ khác) hoặc có cả hai dịch vụ đang chạy cùng nhau (trong trường hợp này, chúng cần đồng bộ hóa công việc của họ để họ không cố gắng làm những điều tương tự).Những thách thức và thực tiễn tốt nhất cho việc không hoạt động qua các dịch vụ

Có mẫu hoặc mô hình cho loại sự cố này không? Tôi biết tình hình chính xác sẽ tạo ra sự khác biệt lớn, nhưng nó có vẻ như là một vấn đề khá phổ biến.

Cảm ơn

John

+0

Cảm ơn câu trả lời của bạn. Rất tiếc, tôi nên chỉ ra rằng dịch vụ tôi đang đề cập đến là dịch vụ xử lý nền nhiều hơn - nó không xử lý các kết nối mạng đến. Tôi đánh giá cao tất cả những lời khuyên! – John

Trả lời

3

Đây là những gì đã làm việc cho tôi.

Từ điểm cơ sở hạ tầng, bạn sẽ cần có 2 máy chủ Windows được nhóm lại. (2 hộp Windows Server chuẩn sẽ thực hiện, phần Clustering có thể được cài đặt và cấu hình, hầu hết quản trị viên của sys nên biết cách thực hiện điều này.) Tiếp theo, cài đặt dịch vụ của bạn trên cả hai nút của cluster và cả hai đều OFF và đặt thành MANUAL khởi động. Tiếp theo, thêm một tài nguyên cụm vào Windows Cluster Administrator cho dịch vụ của bạn mà sẽ quản lý bật và tắt dịch vụ của bạn trên nút nào đang hoạt động. Hãy để cụm Windows quản lý khi dịch vụ của bạn đang chạy và trên nút nào. Đây là phần dễ dàng trong việc phân cụm dịch vụ của bạn.

Từ điểm dịch vụ, bạn sẽ muốn thiết kế dịch vụ của mình để dịch vụ có thể trở thành trạng thái vô hiệu nhất có thể. Đây là loại lời khuyên lame nhưng nó thực sự phụ thuộc vào những gì dịch vụ của bạn đang làm. Trong thiết kế, chỉ cần giả định rằng tại một nơi nào đó trong suốt thời gian của mã, nó sẽ dừng lại ở thời điểm tồi tệ nhất có thể. Làm thế nào các dịch vụ trên node2 biết nơi để đón nơi node1 trái? Đó là phần khó khăn mà bạn cần thiết kế. Tùy thuộc vào những gì dịch vụ của bạn đang làm, bạn có thể để tác vụ đã hoàn thành cuối cùng trong bảng db hoặc tệp dữ liệu được chia sẻ. Bạn cũng có thể bắt đầu từ đầu và kiểm tra lại xem công việc đó đã hoàn thành hay chưa trước khi hành động.

Một lần nữa, nó thực sự sẽ phụ thuộc vào những gì dịch vụ cần thực hiện. Hi vọng điêu nay co ich.

+0

Có cụm chuyển đổi dự phòng là cách tiếp cận chính xác. Bạn có thể viết kịch bản này ra để cấu hình các nhóm cụm, tài nguyên và các phụ thuộc trong quá trình triển khai. Điều này đòi hỏi phiên bản Windows Server Enterprise mặc dù không phải là phiên bản tiêu chuẩn. – softveda

0

Có cả chạy tất cả các thời gian có lẽ là giải pháp đơn giản nhất, nhưng bạn cần phải đảm bảo rằng bạn không bao giờ đi trên 50% tải, nếu không khi một thất bại, người kia sẽ trở nên quá tải và có lẽ cũng thất bại.

Để đồng bộ hóa, hãy sử dụng cơ sở dữ liệu giao dịch. Cố gắng để viết đồng bộ hóa của riêng bạn thường sẽ dẫn đến lỗi.

0

Nếu bạn có thể có cả hai dịch vụ hoạt động - điều đó tốt hơn. bạn cần đảm bảo rằng chúng không có trạng thái hoặc biết cách xử lý vấn đề trạng thái và Databse sẽ đồng bộ hóa giữa chúng. Trong một điểm không duy nhất của sự thất bại - bạn sẽ đẩy vấn đề cho DB, và ở đó bạn có thể có một nút hoạt động 2 nút hoạt động, và để cho sản xuất DB xử lý các vấn đề đồng bộ.

0

Tôi tin rằng cách tốt nhất để giải quyết chuyển đổi dự phòng là ở cấp độ mạng bất cứ khi nào có thể. Các môi trường IP ảo được cân bằng tải hoặc các môi trường chính/chuyển đổi dự phòng là cách tốt để tránh phải viết mã cho các tình huống chuyển đổi dự phòng.

Trong trường hợp bạn phải xử lý failover trong mã:

  1. gọi Test connection/dịch vụ
  2. Nếu thử nghiệm thất bại, gửi cảnh báo
  3. Fail trên để "đăng ký" điểm cuối dịch vụ tiếp theo
+0

Mạng có liên quan đến dịch vụ windows. Có thể có một dịch vụ nền đang chạy và thực hiện công việc của mình mà không nhất thiết phải kết nối với bất kỳ khách hàng nào. Cách chính xác os để làm failover clustering. – softveda

0

Có hai cách tiếp cận cơ bản.

  1. khách hàng nhận thức được địa chỉ điểm cuối khác nhau và chuyển khi cần hoặc theo chỉ dẫn của một cơ chế dịch vụ hoặc cấu hình khác. (ví dụ: stocktrader demo application thực hiện điều này.)

  2. Khách hàng không biết và bạn sử dụng phương pháp cân bằng tải mạng chuẩn cũng có thể cung cấp chuyển đổi dự phòng. F5 là một sản phẩm. Có nhiều người khác. Về cơ bản nó giống như một NAT cho các dịch vụ tất cả các yêu cầu đi qua NLB của bạn và nó gửi chúng đến một máy chủ, và chuyển tiếp phản hồi lại cho người gọi. Các sản phẩm này theo dõi các dịch vụ và chỉ sử dụng các dịch vụ đang hoạt động. Ngoài ra, bạn thường có thể tùy chỉnh nó với các quy tắc để có nó gán các yêu cầu mới cho các máy chủ dựa trên khối lượng công việc của máy chủ. Windows server has this chức năng được tích hợp ở một mức độ nào đó.

Dù bằng cách nào bạn làm điều đó, sẽ dễ dàng hơn nhiều nếu cuộc gọi dịch vụ của bạn là "không quốc tịch".

Các vấn đề liên quan