Engineering · 1 min read
Kafka 的兩個埠:9092(明文)與 9093(加密)
Kafka broker 一個埠固定綁一種協定:9092 明文、9093 加密。沒有就地升級這回事,你連上哪個埠就決定用哪種協定,連錯門就失敗。
先鋪個底:Kafka 是一套讓服務之間互傳事件的系統,它的一個伺服器節點叫 broker;**埠(port)**則是伺服器上一個編號的連線通道。一個 broker 可以同時在好幾個埠上等連線,而每個埠都固定綁一種協定(例如 9092 走明文、9093 走加密)。
讓我意外的是:你連上哪個埠,就決定了用哪種協定。 這裡沒有「同一條連線就地升級」那回事,不像網址可以在同一條連線上從 HTTP 升到 HTTPS。明文和加密就是兩扇不同的門。
- 內部、不需要加密的客戶端,連
9092、講明文。 - 需要加密的客戶端,連
9093、講加密(帶客戶端憑證的雙向 TLS)。 - 連錯門就是連線失敗。 把加密設定丟到
9092這扇明文門,會在連線當下就壞掉,而不是你早該在讀設定時就攔下來的那種友善錯誤。
一旦上了加密那扇門,Kafka 伺服器還能依客戶端憑證上的名字管權限:送資料的一方,只能寫進它憑證被列進去的那些主題。
這次遷移裡: 整件事就是「把客戶端從 9092 指到 9093、並叫它講加密」,趕在平台團隊正式關掉舊的 9092 門之前完成。
Kafka 的埠不是一扇可以就地升級的門,門本身就是協定。一開始就挑對。
參考來源
- https://kafka.apache.org/41/security/listener-configuration/
- https://developer.confluent.io/courses/security/authentication-ssl-and-sasl-ssl/
延伸閱讀: 那扇加密的門就是雙向 TLS,而打開它只需要客戶端 SSL 設定裡的一個 if。回到總覽:一張遷移單背後的兩個 SSL。