Máy chủ DNS đã sử dụng anycast. Việc thêm nhiều IP sẽ tăng cường khả năng mở rộng?


9

RFC 1034 yêu cầu chúng tôi chỉ định ít nhất hai địa chỉ IP cho máy chủ DNS. Tuy nhiên, có thể đạt được sự dự phòng bằng một địa chỉ IP duy nhất nếu chúng ta sử dụng địa chỉ anycast. BGP anycast dường như có quy mô tốt vào hàng trăm hoặc thậm chí hàng ngàn máy chủ.

Nếu vậy, tại sao chúng ta vẫn cần nhiều địa chỉ IP cho máy chủ DNS? Liệu nó thực sự tăng cường sự dư thừa (đóng góp vào tính khả dụng) nếu chúng ta đã có bất kỳ chương trình truyền hình nào, hoặc đó chỉ là một huyền thoại?

Những vấn đề và lỗi nào chúng ta có thể gặp phải nếu chúng ta chỉ sử dụng một địa chỉ IP duy nhất?

Do đó, tôi có nghĩa là hoàn toàn bỏ qua các địa chỉ DNS thứ cấp hoặc sử dụng IP không có thật (ví dụ 1.2.3.4) cho địa chỉ thứ hai khi một số thiết lập yêu cầu ít nhất hai.

Câu trả lời:


16

Một địa chỉ IP anycast duy nhất không cung cấp cho bạn sự dư thừa giống như hai địa chỉ IP unicast trong các tiền tố IP riêng biệt.

Thông thường, vấn đề khó khăn nhất đối với sự dư thừa không phải là khi một cái gì đó thất bại hoàn toàn, mà là khi nó hoạt động sai chỉ đủ để vẫn vượt qua kiểm tra sức khỏe, nhưng không thực sự có chức năng.

Tôi đã thấy một thiết lập DNS anycast nơi máy chủ DNS bị hỏng, nhưng các gói vẫn sẽ được chuyển đến máy chủ DNS đó. Bất cứ điều gì quan tâm đến quảng cáo, tiền tố có thể đơn giản là không biết, máy chủ DNS đã bị hỏng.

Nó thậm chí còn trở nên khó khăn hơn nếu máy chủ DNS được đề cập không phải là máy chủ DNS có thẩm quyền, mà là một bộ giải quyết đệ quy.

Bộ giải quyết đệ quy như vậy sẽ cần có cả địa chỉ anycast để nhận truy vấn từ máy khách và địa chỉ unicast để truy vấn máy chủ DNS có thẩm quyền. Nhưng nếu các địa chỉ unicast bị hỏng, nó có thể dễ dàng trông đủ khỏe để nó vẫn được truy vấn.

Anycast là một công cụ tuyệt vời cho khả năng mở rộng và giảm độ trễ. Nhưng để dự phòng thì không nên đứng một mình.

Tuy nhiên, nhiều nhóm anycast dư thừa là một giải pháp tốt cho tính khả dụng. Một ví dụ nổi tiếng là 8.8.8.8 và 8.8.4.4. Cả hai đều là địa chỉ anycast, nhưng chúng không bao giờ được chuyển đến cùng một máy chủ DNS vật lý (giả sử Google đã làm tốt công việc của mình).

Nếu bạn có 10 máy chủ DNS vật lý, bạn có thể định cấu hình chúng thành 2 nhóm với 5 máy chủ trong mỗi nhóm hoặc 5 nhóm với 2 trong mỗi nhóm. Bạn muốn tránh việc có một máy chủ DNS vật lý đồng thời ở nhiều nhóm.

Vậy bạn nên phân bổ bao nhiêu IP? Bạn cần phải có các IP có thể được cấu hình là anycast độc lập với nhau. Điều đó thường có nghĩa là bạn sẽ cần phân bổ toàn bộ / 24 không gian địa chỉ IPv4 hoặc / 48 không gian địa chỉ IPv6 cho mỗi nhóm. Điều này rất có thể hạn chế số lượng hồ bạn có thể có.

Ngoài ra, nếu chúng ta đang nói các máy chủ có thẩm quyền, DNS trả lời với tất cả các bản ghi NS của bạn và keo A và AAAA sẽ phù hợp với một gói 512 byte duy nhất. Đối với các máy chủ gốc, việc này có tới 13 địa chỉ. Nhưng điều đó không bao gồm keo và IPv6, vì vậy số lượng bạn đạt được sẽ thấp hơn.

Mỗi hồ bơi nên được phân phối theo địa lý càng tốt. Nếu bạn có 5 máy chủ ở Châu Âu và 5 ở Noth America và 2 IP anycast, bạn không tạo một nhóm trải dài trên mỗi lục địa. Bạn đặt 2 từ châu Âu vào một hồ bơi với 3 từ Bắc Mỹ và 5 từ còn lại ở bể kia.

Nếu bạn có nhiều hơn 2 pool anycast, bạn có thể để máy chủ vật lý tạm thời ở nhiều hơn một pool. Nhưng bạn không bao giờ nên cho phép một máy chủ vật lý ở trong tất cả các nhóm cùng một lúc.

Kết hợp anycast và unicast là có thể, nhưng phải cẩn thận. Nếu bạn có IP cho hai nhóm, tôi sẽ không kết hợp. Nhưng nếu bạn chỉ có một IP anycast duy nhất để làm việc, thì cũng có thể bao gồm các IP unicast. Vấn đề là bao gồm các IP unicast sẽ không cung cấp cho bạn độ trễ tốt và cân bằng tải.

Nếu một máy chủ vật lý được cung cấp bởi cả unicast và anycast, bạn có thể gặp rủi ro khi người dùng truy cập cùng một máy chủ là chính và phụ và mất quyền truy cập nếu nó bị hỏng. Điều này có thể tránh được bằng cách chỉ sử dụng các địa chỉ unicast của các máy chủ không nằm trong nhóm anycast hoặc luôn luôn cung cấp cho người dùng hai địa chỉ unicast.

Càng nhiều địa chỉ unicast bạn đưa vào hỗn hợp, càng ít truy vấn sẽ được gửi đến địa chỉ anycast và bạn sẽ nhận được càng ít lợi ích từ anycast về độ trễ và khả năng mở rộng.


Bạn có nghĩa là cách tốt nhất để đạt được khả năng mở rộng là sử dụng nhiều địa chỉ unicast thứ cấp (hay còn gọi là cách cũ để đặt ns1.domain, ns2.d, ns3.d ... ns300.d) thay vì sử dụng anycast?
Pacerier

@Pacerier Không, đó không phải là ý tôi. Tôi sẽ làm rõ điều đó trong câu trả lời của tôi.
kasperd

+1. Một lỗi định tuyến thậm chí có thể dẫn unicast của bạn vào địa ngục (ngõ cụt). Có một địa chỉ riêng thứ hai có nghĩa là bạn có nhiều hơn một "vé" cho điều đó;)
TomTom

2
+1 Tôi muốn thêm rằng việc thêm một ip không có thật làm địa chỉ thứ hai nghe có vẻ là một ý tưởng khủng khiếp
Reaces

1
@Pacerier bạn có được cân bằng tải từ việc sử dụng nhiều địa chỉ unicast. Vấn đề là độ trễ, khách hàng chỉ đơn giản là không biết IP nào ở gần và ở xa. Nó cũng không thể mở rộng quy mô. Bạn chỉ có thể sử dụng khoảng 5 máy chủ, nếu bạn muốn bản ghi keo A và AAAA vừa với 512 byte. Kết hợp một anycast và nhiều unicast là vấn đề đối với cân bằng tải, vì bạn có thể nhận được nhiều tải hơn trên các địa chỉ unicast so với địa chỉ anycast.
kasperd

4

Thực hành tốt nhất là sử dụng ít nhất hai địa chỉ từ các tiền tố khác nhau và đặt cho chúng một tên theo hai TLD khác nhau. Cả hai địa chỉ có thể là anycast nếu bạn muốn. Chỉ có một địa chỉ IP sẽ cung cấp cho bạn một điểm thất bại duy nhất. Nếu định tuyến đến địa chỉ đó không hoạt động (lỗi cấu hình, một trường hợp anycast không hoạt động chính xác, tiền tố bị tấn công, v.v.) thì toàn bộ miền của bạn sẽ không thể truy cập được.

Mỗi địa chỉ anycast sẽ yêu cầu ít nhất một tiền tố /24IPv4 hoặc /48IPv6 để có thể định tuyến trong BGP. Tiền tố nhỏ hơn (dài hơn) thường sẽ không được chấp nhận trong bảng định tuyến toàn cầu ở nhiều nơi.

Không bao giờ đặt địa chỉ IP không có thật làm máy chủ DNS. Nó sẽ gây ra sự chậm trễ nghiêm trọng cho người giải quyết.


Tệ hơn nữa, địa chỉ IP "không có thật" đó là địa chỉ của người khác. Họ sẽ nhận được các truy vấn. Nếu họ cảm thấy khó chịu với tất cả lưu lượng truy cập đó, họ có thể gửi trả lời với chỉ số TTL cao để khiến nó biến mất trong một thời gian.
kasperd

@kasperd, Điều gì về địa chỉ IP dành riêng đặc biệt không thuộc về ai?
Pacerier

1
@Pacerier Sử dụng không gian địa chỉ RFC 1918, 4193 hoặc 6598 sẽ hạn chế tác hại. Nhưng nó vẫn sẽ khiến độ phân giải bị chậm lại hoặc thậm chí thất bại.
kasperd

3

RFC 1034 chỉ nói rằng bạn yêu cầu hai máy chủ DNS. Đây không phải là một yêu cầu bắt buộc, nhưng là một khuyến nghị, vì vậy hãy làm với nó những gì bạn sẽ làm. Bất kể, nếu bạn muốn HA, 2 máy chủ DNS của bạn có thể được gán cùng một IP bằng cách sử dụng anycast và điều duy nhất người dùng cuối của bạn sẽ nhận thấy khi một máy chủ DNS bị lỗi, là do thiếu kết nối trong giây lát khi mạng kết nối lại.

Vì vậy, tóm lại, có sử dụng anycast là đủ để tuân thủ RFC 1034.


Hmm, nếu một địa chỉ IP duy nhất là tất cả những gì cần thiết, tại sao Google cung cấp hai địa chỉ ( 8.8.8.88.8.4.4) cho các máy chủ DNS của họ? Họ đã có bất kỳ chương trình truyền hình nào, vậy tại sao không chỉ cung cấp một địa chỉ 8.8.8.8?
Pacerier

1
Theo phỏng đoán tôi sẽ nói không làm gián đoạn kết nối trong quá trình hội tụ mạng? Bởi vì họ là một người chơi toàn cầu và muốn đảm bảo rằng họ có phạm vi rộng nhất có thể để loại bỏ bất kỳ điểm thất bại nào có thể xảy ra? Tôi không hoàn toàn chắc chắn, nhưng tôi biết tất cả chúng ta không thể là google :)
Trả lời
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.