背景
istio的ambient mesh下,流量路徑經(jīng)由節(jié)點(diǎn)級的ztunnel
如果ztunnel優(yōu)雅更新處理不當(dāng)會(huì)導(dǎo)致業(yè)務(wù)流量有損
原理
流程
新ztunnel啟動(dòng)設(shè)置SO_REUSEPORT
新ztunnel就緒后,開始停止舊ztunnel
舊ztunnel等待請求處理結(jié)束,期間新舊ztunnel都會(huì)會(huì)共存
舊ztunnel請求處理結(jié)束或者超時(shí),停止
至此只有新ztunnel服務(wù)請求,更新結(jié)束
ztunnel啟動(dòng)時(shí)候會(huì)設(shè)置SO_REUSEPORT
linux socket的一個(gè)選項(xiàng),控制tcp端口可以被多個(gè)進(jìn)程綁定,開啟后多個(gè)進(jìn)程都會(huì)收到新連接
相關(guān)配置
默認(rèn)5s
通過設(shè)置環(huán)境變量CONNECTION_TERMINATION_DEADLINE(優(yōu)先)或者TERMINATION_GRACE_PERIOD_SECONDS調(diào)整