Tránh hết thời gian chờ DNS khi máy chủ dns bị lỗi


17

Chúng tôi có một trung tâm dữ liệu nhỏ với khoảng một trăm máy chủ trỏ đến 3 máy chủ dns nội bộ (liên kết 9). Vấn đề của chúng tôi xảy ra khi một trong các máy chủ dns nội bộ không khả dụng. Tại thời điểm đó, tất cả các máy khách trỏ đến máy chủ đó bắt đầu hoạt động rất chậm.

Vấn đề dường như là trình phân giải linux stock không thực sự có khái niệm "thất bại" đối với một máy chủ dns khác. Bạn có thể điều chỉnh thời gian chờ và số lần thử lại mà nó sử dụng, (và đặt xoay để nó hoạt động thông qua danh sách), nhưng bất kể cài đặt nào người ta sử dụng dịch vụ của chúng tôi sẽ hoạt động chậm hơn nhiều nếu máy chủ dns chính không khả dụng. Tại thời điểm này, đây là một trong những nguồn gây gián đoạn dịch vụ lớn nhất đối với chúng tôi.

Câu trả lời lý tưởng của tôi sẽ là một cái gì đó như "RTFM: chỉnh /etc/resolv.conf như thế này ...", nhưng nếu đó là một lựa chọn thì tôi chưa thấy nó.

Tôi đã tự hỏi làm thế nào những người khác xử lý vấn đề này?

Tôi có thể thấy 3 loại giải pháp có thể:

  • Sử dụng linux-ha / Pacemaker và failover ips (vì vậy các VIP IP của dns luôn "có sẵn". Than ôi, chúng tôi không có cơ sở hạ tầng đấu kiếm tốt, và nếu không đấu kiếm thì máy tạo nhịp tim không hoạt động tốt (theo kinh nghiệm của tôi Máy tạo nhịp làm giảm tính khả dụng mà không cần đấu kiếm).

  • Chạy một máy chủ dns cục bộ trên mỗi nút và có điểm decv.conf đến localhost. Điều này sẽ làm việc, nhưng nó sẽ cung cấp cho chúng tôi nhiều dịch vụ hơn để giám sát và quản lý.

  • Chạy một bộ đệm cục bộ trên mỗi nút. Mọi người dường như coi nscd là "hỏng", nhưng dnrd dường như có bộ tính năng phù hợp: nó đánh dấu các máy chủ dns là lên hoặc xuống và sẽ không sử dụng máy chủ 'xuống' dns.

Bất kỳ truyền nào dường như chỉ hoạt động ở cấp định tuyến ip và phụ thuộc vào cập nhật tuyến cho lỗi máy chủ. Đa truyền có vẻ như đó là một câu trả lời hoàn hảo, nhưng liên kết không hỗ trợ truyền phát hoặc đa truyền, và các tài liệu tôi có thể tìm thấy dường như cho rằng dns đa hướng nhằm mục đích khám phá dịch vụ và cấu hình tự động hơn là giải quyết dns thông thường .

Tôi có thiếu một giải pháp rõ ràng không?


2
Tôi đề nghị rằng ngoài việc tìm giải pháp mà bạn yêu cầu (mà tôi không thể giúp bạn), bạn nên giải quyết vấn đề gốc thực sự và khắc phục các sự cố về độ tin cậy với máy chủ DNS.
John Gardeniers

Vấn đề gốc là: tại sao các máy chủ DNS này thường xuyên bị hỏng khiến bạn bận tâm về vấn đề này? Xem xét sao chép DNS của bạn với các dịch vụ chuyên biệt như BuddyNS . Độ trễ của bạn sẽ giảm đáng kể và thời gian hoạt động sẽ không khiến bạn bận tâm về các chỉnh sửa /etc/resolv.conf nữa.
michele

Câu trả lời:


15

Một vài lựa chọn. Cả hai sẽ phân phối tải DNS trên các máy chủ DNS của bạn.

  • Hãy thử sử dụng options rotatetrong độ phân giải. Điều này sẽ giảm thiểu tác động của máy chủ chính. Nếu một trong các máy chủ khác ngừng hoạt động, nó sẽ làm chậm các hành động.
  • Sử dụng một thứ tự máy chủ tên khác nhau trên các khách hàng khác nhau. Điều này sẽ cho phép một số khách hàng chạy bình thường nếu máy chủ DNS chính bị hỏng. Điều này lan truyền tác động của một máy chủ DNS ngoài dịch vụ xung quanh.

Các tùy chọn này có thể được kết hợp với options timeout:1 attempts:5. Tăng các nỗ lực nếu bạn giảm thời gian chờ để bạn có thể xử lý các máy chủ bên ngoài chậm.

Tùy thuộc vào cấu hình bộ định tuyến của bạn, bạn có thể định cấu hình máy chủ DNS của mình để chiếm địa chỉ IP của máy chủ DNS chính khi nó bị hỏng. Điều này có thể được kết hợp với các kỹ thuật trên.

LƯU Ý: Tôi chạy nhiều năm mà không bị mất DNS đột xuất. Như những người khác đã lưu ý, tôi sẽ làm việc để giải quyết các vấn đề khiến máy chủ DNS bị lỗi. Các bước trên, cũng giúp với các máy chủ DNS được định cấu hình sai với việc chỉ định các máy chủ tên không thể truy cập.


4

Kiểm tra "người đàn ông giải quyết". Bạn có thể thêm tùy chọn thời gian chờ vào độ phân giải. Mặc định là 5, nhưng việc thêm các mục sau vào độ phân giải sẽ giảm xuống còn 1 giây:

thời gian chờ tùy chọn: 1


Sau khi đọc lại đoạn thứ hai của bạn, tôi đã thử cách trên trên VPS Centos và Debian. Sau khi đưa xuống các dns chính, bộ giải quyết thực hiện chính xác như mong đợi. Chạy một tcpdump, tôi thậm chí có thể thấy trình giải quyết đang thử máy chủ đầu tiên, và sau đó thử tiếp theo. Những hành vi bạn đang nhìn thấy?
Niall Donegan

1
Có hai trường hợp sử dụng lớn để giải quyết: các quy trình có thời gian tồn tại ngắn (như các công cụ dòng lệnh) và các quy trình tồn tại lâu và cùng một cấu hình trình phân giải phải hoạt động cho cả hai. Đối với cuộc sống ngắn (tra cứu đơn), thiết lập thời gian chờ ngắn sẽ thất bại nhanh chóng. Nhưng nếu bạn đang tìm kiếm một địa chỉ bên ngoài không giải quyết được trong thời gian đó: bạn sẽ không tìm thấy tên, vì trình phân giải sẽ từ bỏ truy vấn đó nếu nó không quay lại sau một giây. (ra khỏi phòng; nhiều hơn trong bình luận tiếp theo)
Neil Katin

Các quy trình dài hạn sẽ thử lại từng tra cứu, hết thời gian và sau đó chuyển sang máy chủ tiếp theo. Nhưng nó dường như không lưu trữ "cái chết" của máy chủ.
Neil Katin

3

Phần mềm phân cụm như heartbeat hoặc pacemaker / corosync là người bạn của bạn ở đây. Là một ví dụ, chúng tôi đã thiết lập máy điều hòa nhịp tim / corosync như sau:

  • Ghép nối mọi máy chủ với một máy chủ khác
  • Mỗi cặp có 2 dns vips, thường là một trên mỗi
  • Nếu liên kết hoặc máy chủ bị lỗi, vip di chuyển đến máy chủ khác trong một phần nghìn giây

Giờ sản xuất là 24x7, nhưng chúng tôi tin tưởng mạnh mẽ rằng mọi máy chủ đều có thể bị lỗi mà không ảnh hưởng đến khách hàng. xoay tùy chọn chỉ là một cách giải quyết, tôi sẽ không làm điều đó.


3

Chạy một máy chủ dns cục bộ trên mỗi nút và có điểm decv.conf đến localhost. Điều này sẽ làm việc, nhưng nó sẽ cung cấp cho chúng tôi nhiều dịch vụ hơn để giám sát và quản lý.

FWIW, đây là giải pháp khả thi duy nhất mà tôi đã tìm thấy cho vấn đề này. Bạn cần hạn chế máy chủ chỉ nghe trên localhost, nhưng nó đã loại bỏ hoàn toàn người dùng nhận thấy sự cố mất DNS trong môi trường của chúng tôi.

Một tác dụng phụ thú vị là nếu máy chủ localhost ngừng hoạt động vì một số lý do, các thư viện trình phân giải tiêu chuẩn dường như xử lý chuyển đổi dự phòng sang máy chủ tiếp theo nhanh hơn nhiều so với trường hợp tiêu chuẩn.

Chúng tôi đã làm điều này khoảng 3 năm nay và tôi chưa thấy một vấn đề nào có thể liên quan đến sự cố / ngừng hoạt động của một máy chủ dns chạy trên localhost.


2

Nếu một máy chủ tên sẽ ngừng bảo trì, thì đó là quy trình bình thường để giảm thời gian chờ trong SOA cho miền đó trước thời hạn, để khi bảo trì xảy ra, sẽ thay đổi (như xóa các bản ghi NS trước khi bảo trì và đưa chúng trở lại sau khi bảo trì ) tuyên truyền nhanh chóng. Lưu ý rằng đây là cách tiếp cận phía máy chủ - thay đổi bộ giải quyết là cách tiếp cận phía máy khách và ... trừ khi bạn có thể nói chuyện với từng khách hàng của mình và khiến họ thực hiện điều chỉnh này trên máy của họ ... có thể không cách tiếp cận đúng. Chà, tôi đoán bạn đã nói chỉ một trăm khách hàng trong một trung tâm dữ liệu sử dụng máy chủ DNS nội bộ, nhưng bạn có thực sự muốn thay đổi cấu hình trên một trăm khách hàng khi bạn chỉ có thể thay đổi vùng không?

Tôi sẽ cho bạn biết những giá trị nào trong SOA cần điều chỉnh, nhưng tôi đang lướt web để tìm hiểu thông tin chính xác đó khi tôi chạy qua câu hỏi này.


3
Câu trả lời này chỉ liên quan đến DNS có thẩm quyền. Câu hỏi liên quan đến tra cứu DNS đệ quy được thực hiện bởi phần mềm máy khách.
Andrew B

1

Có lẽ bạn có thể đặt máy chủ DNS của mình phía sau bộ cân bằng tải? Rõ ràng LVS có thể cân bằng UDP. Rõ ràng làm cho LB của bạn khả dụng cao để nó không phải là một điểm thất bại duy nhất.


0

Tôi biết điều này nghe có vẻ nghiêm trọng, nhưng làm thế nào về việc xây dựng cơ sở hạ tầng DNS ổn định hơn, ổn định hơn như một giải pháp lâu dài cho vấn đề.


Chúng tôi có một cơ sở hạ tầng dns khá kiên cường. Nhưng 2 hoặc 3 lần một năm chúng tôi bị cúp vì máy chủ dns bị hỏng (hoặc được khởi động lại hoặc nâng cấp hệ điều hành, hoặc bất cứ điều gì).
Neil Katin

1
Chà ... khởi động lại và nâng cấp nên được lên kế hoạch cho giờ không sản xuất. Đối với phần còn lại, có vẻ như bạn đang thực hiện một thỏa thuận khá lớn từ những điều xảy ra một vài lần trong năm. Là cơ sở hạ tầng bổ sung, thời gian, tiền bạc và chi phí quản lý có đáng cho một vấn đề xảy ra dường như không thường xuyên không?
joeqwerty

8
Điều gì xảy ra khi giờ sản xuất của bạn là 24x7? DNS sẽ không thành công với máy chủ thứ hai / thứ ba / x và lưu trữ lỗi của máy chủ khác trong một khoảng thời gian. Thời gian chờ 5 giây mặc định là đủ để đưa dịch vụ xuống tùy thuộc vào tải.
Ryaner

0

Một giải pháp tập trung hơn vào mạng sẽ được sử dụng hai máy chủ DNS có cùng định tuyến IP và Anycast . (Tôi chưa nhận thấy câu trả lời này trong chủ đề này cho đến nay, nhưng đó là những gì được sử dụng ở đây.)

Miễn là cả hai đều lên, máy chủ gần nhất được sử dụng. Nếu một người đi xuống, lưu lượng truy cập cho IP đó sẽ được chuyển đến nút khác cho đến khi nó xuất hiện trở lại. Điều này đặc biệt có ý nghĩa nếu bạn có hai hoặc nhiều vị trí hoặc trung tâm dữ liệu.

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.