Hai cài đặt static_host_map và advertise_addrs đều đặt một địa chỉ trước một peer, và chúng trả lời những câu hỏi khác nhau. Một là tệp cục bộ liệt kê địa chỉ overlay và điểm cuối underlay để gọi. Cái kia là một máy chủ cho các ngọn hải đăng của nó biết những điểm cuối bổ sung nào có thể tiếp cận nó. Quyền sở hữu là khác biệt thực sự: bản đồ do mọi người cần nó duy trì, còn quảng cáo do chính máy chủ.

Quyết định theo việc ai sở hữu thông tin

SettingWhere it livesBest for
static_host_mapEvery peer that needs the entryBootstrap endpoints, deliberately fixed paths
advertise_addrsThe host's own configEndpoints the host cannot otherwise discover

Mỗi peer thay đổi trong tệp tĩnh của mỗi peer là công việc bảo trì tăng theo bình phương của đội máy. Đó là lý do thực tế để chuyển sang cài đặt kia mỗi khi chính máy chủ biết câu trả lời.

Câu hỏi về quyền sở hữu cũng dự đoán điều gì xảy ra khi một địa chỉ thay đổi. Với bản đồ tĩnh, ai đó phải nhớ mọi peer giữ mục cũ. Với quảng cáo, máy chủ công bố điểm cuối mới và các ngọn hải đăng của nó chuyển tiếp, nên thay đổi vẫn cục bộ trên máy đã di chuyển.

Bootstrap vẫn cần các mục tĩnh

Máy khách phải tiếp cận ít nhất một ngọn hải đăng trước khi có thể hỏi ai đó về các peer khác. Bước nhảy đầu tiên đó không thể đến từ khám phá, nên nó dựa vào một mục tĩnh trong cấu hình của máy khách. Làm đúng mục duy nhất đó và phần còn lại của overlay có thể được học.

Một mục bản đồ ghép một địa chỉ Nebula với một hoặc nhiều điểm cuối IP hoặc DNS có thể tiếp cận và cổng. Giữ các ngọn hải đăng ở đó là bình thường; giữ mọi peer ở đó là kiểu mẫu lão hóa kém, vì mỗi peer mới nghĩa là chỉnh sửa tệp trên những máy bạn có thể không kiểm soát. Giữ danh sách đủ ngắn để một người vẫn có thể xác minh bằng cách đọc nó.

Quảng bá khi máy chủ biết điểm cuối

Một máy chủ sau chuyển tiếp cổng có thể tiếp cận ở một địa chỉ công khai không được gán cho bất kỳ giao diện nào của chính nó. Nó không thể khám phá địa chỉ đó bằng cách nhìn vào chính mình. advertise_addrs cho phép nó công bố điểm cuối qua các ngọn hải đăng để các peer khác học một đường đi thực sự hoạt động. Cài đặt tồn tại chính vì máy chủ là bên duy nhất biết ánh xạ đã được tạo.

Dùng địa chỉ và cổng mà các peer khác thực sự có thể tiếp cận. Lý lẽ tương tự áp dụng cho một máy chủ có nhiều đường mạng, nơi một đường được ưu tiên cho các peer trên một mạng cụ thể. Quảng bá là một tuyên bố về underlay, không phải yêu cầu điều gì. Khi ánh xạ thay đổi, cập nhật quảng cáo tại máy chủ và để khám phá mang nó đi, thay vì chỉnh sửa tệp tĩnh trên toàn đội máy.

Quảng bá không phải là khả năng tiếp cận

Công bố một điểm cuối không tạo ra quy tắc chuyển tiếp của bộ định tuyến, không mở tường lửa thượng nguồn và không làm một tên DNS phân giải. Đó là những phần việc riêng, và một quảng cáo đúng nhưng thiếu chuyển tiếp cổng tạo ra đúng sự cố bạn đang cố sửa. Quảng bá là một khẳng định về khả năng tiếp cận, không phải cơ chế thiết lập nó.

Kiểm tra đường đi từ bên ngoài trước khi đổ lỗi cho khám phá. Một peer học được điểm cuối nhưng không thể hoàn tất handshake có vấn đề định tuyến hoặc lọc trên underlay, và lặp lại cùng địa chỉ trong cả hai cài đặt sẽ không thay đổi điều đó.

Giữ địa chỉ overlay tách biệt khỏi điểm cuối

Chứng chỉ của nút xác định địa chỉ Nebula của nó. Các địa chỉ được quảng bá thuộc về mạng bên dưới, và chúng có thể thay đổi mà không chạm vào chứng chỉ. Cấp chứng chỉ mới với một IP overlay khác là một thao tác khác, với những hậu quả riêng cho mỗi quan hệ tin cậy đã ghim cái cũ. Giữ hai thay đổi tách biệt trong runbook, nếu không một lần di chuyển điểm cuối sẽ được ghi là tái cấp.

Khi phân loại bế tắc, hãy tách hai lớp một cách rõ ràng: khám phá có trả về điểm cuối mong đợi không, và một handshake có tiếp cận nó không? Nếu khám phá đúng và các gói thất bại, vấn đề nằm dưới overlay. Nếu khám phá sai, vấn đề nằm trong bản đồ hoặc quảng cáo, và cách sửa thuộc về đó.

Bài viết liên quan