Kafka qua proxy: bootstrap hoạt động, nhưng kết nối broker thất bại
Giải thích vì sao một kết nối bootstrap Kafka thành công không bảo đảm proxy tiếp cận được mọi broker đã phát hiện.
Kết nối bootstrap có thể thành công trong khi ứng dụng khách Kafka vẫn chưa thể sản xuất hay tiêu thụ. Các máy chủ bootstrap giúp ứng dụng khách khám phá cụm; chúng không nhất thiết là những điểm cuối duy nhất mà nó sẽ kết nối.
Siêu dữ liệu của broker chứa các địa chỉ được dùng cho các kết nối sau. Nếu những tên hoặc cổng đó không thể truy cập qua tuyến proxy dự định, kết nối thành công đầu tiên không giải quyết phần còn lại của công việc.
Đọc các điểm cuối được quảng bá
So sánh địa chỉ bootstrap với các địa chỉ broker mà ứng dụng khách thực sự nhận được. Một bí danh bootstrap công khai có thể dẫn đến các tên được quảng bá riêng tư, và việc chuyển tiếp một cổng cục bộ không tự động viết lại mọi địa chỉ trong siêu dữ liệu.
Cũng hãy xác định tuyến proxy mà cách triển khai ứng dụng khách hỗ trợ. Thuộc tính SOCKS của hệ thống Java không bảo đảm rằng truyền tải dựa trên NIO của thư viện sử dụng cơ chế proxy Socket của JDK. Hãy kiểm tra ứng dụng khách Kafka thực tế và tích hợp mạng thay vì giả định mọi socket Java tuân theo cùng một cài đặt.
Ứng dụng khách nhận biết proxy cần một tuyến được phép đến các điểm cuối broker liên quan. Một bố trí ở mức mạng cần khả năng tiếp cận và phân giải tên tương ứng. Đây là những thiết kế khác nhau, và không cái nào được cung cấp chỉ bằng cách liệt kê một proxy làm máy chủ bootstrap.
Giữ riêng cài đặt giao thức bảo mật và xác thực. Proxy có thể thiết lập tuyến TCP trong khi danh tính TLS, xác thực SASL hoặc ủy quyền broker vẫn thất bại.
Để chẩn đoán, hãy ghi lại điểm cuối nào đã thất bại và liệu nó đến từ cấu hình tĩnh hay siêu dữ liệu được trả về. Sự phân biệt đó thu hẹp vấn đề hơn nhiều so với việc thay đổi lặp đi lặp lại một điểm cuối vốn đã truy cập được.