欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

用Rust構(gòu)建云環(huán)境下的分布式災(zāi)備自動恢復(fù)機(jī)制

用Rust構(gòu)建云環(huán)境下的分布式災(zāi)備自動恢復(fù)機(jī)制 我們最近在做一個很有意思的項目用 Rust 實現(xiàn)一套分布式災(zāi)備系統(tǒng)的自動恢復(fù)機(jī)制跑在現(xiàn)代云環(huán)境上。說實話剛接到這個需求的時候我心里第一反應(yīng)是“這不就是故障檢測加自動切換嗎現(xiàn)成方案一抓一大把”。但真正動手之后才發(fā)現(xiàn)災(zāi)備系統(tǒng)的“自動恢復(fù)”四個字水比想象中深得多。尤其在云環(huán)境里網(wǎng)絡(luò)抖動、存儲掛載延遲、跨可用區(qū)復(fù)制狀態(tài)不一致、甚至是云廠商自己的控制臺抽風(fēng)任何一個小問題都可能讓恢復(fù)機(jī)制做出錯誤判斷輕則誤切換重則腦裂雙主。寫這篇文章是想把整個項目從設(shè)計到落地、從踩坑到修復(fù)的過程完整梳理一遍。文章適合三類人看一類是正在設(shè)計或維護(hù)分布式系統(tǒng)、對容災(zāi)恢復(fù)機(jī)制感興趣的開發(fā)者一類是想用 Rust 做基礎(chǔ)架構(gòu)組件、但擔(dān)心生態(tài)不成熟的朋友還有一類是純粹對“故障發(fā)生時系統(tǒng)怎么自救”這個技術(shù)問題好奇的讀者。我會把架構(gòu)思路、核心代碼、參數(shù)計算、調(diào)試排錯全部攤開來講不藏私。1. 項目背景與需求拆解1.1 災(zāi)備系統(tǒng)為什么難在“自動恢復(fù)”先理清一個概念災(zāi)備不是備份。備份是定期把數(shù)據(jù)復(fù)制到另一個地方出事了你手動拉起來災(zāi)備則強調(diào)“備”能隨時接管“主”的工作接管過程越自動越好。但“自動”并不是“寫個腳本檢測到主節(jié)點掛了就切換”這么簡單。傳統(tǒng)主備切換為什么很多人不敢全自動核心原因是誤判成本太高。一次誤切換意味著兩個節(jié)點同時活著業(yè)務(wù)數(shù)據(jù)雙寫等你想切回來的時候兩邊數(shù)據(jù)已經(jīng)分叉了恢復(fù)工作比不切換還痛苦。所以真正的自動恢復(fù)機(jī)制必須包含三個閉環(huán)能力快速發(fā)現(xiàn)故障、安全地達(dá)成共識、有序地執(zhí)行切換。缺一個都不叫自動恢復(fù)最多叫半自動輔助。你還需要想清楚業(yè)務(wù)愿意承受什么代價。有些場景比如邊緣計算節(jié)點斷幾分鐘無所謂自動切換可以做保守一點有些場景比如支付結(jié)算寧可多等幾十秒確認(rèn)故障也不允許腦裂。這個取舍會直接影響檢測超時參數(shù)、仲裁節(jié)點數(shù)量、以及切換前置檢查項的設(shè)置。云環(huán)境給災(zāi)備系統(tǒng)增加了額外的復(fù)雜度。物理機(jī)時代你至少知道網(wǎng)絡(luò)拓?fù)涫欠€(wěn)定的故障類型也比較集中宕機(jī)、斷網(wǎng)、磁盤壞道。上云之后你面對的是虛擬網(wǎng)絡(luò)、共享存儲、負(fù)載均衡、安全組、甚至是云廠商的地域故障。很多故障不是“節(jié)點死了”而是“網(wǎng)絡(luò)通但不穩(wěn)定”“存儲變成了只讀”“云 API 返回了錯誤但節(jié)點其實還活著”。如果自動恢復(fù)機(jī)制只盯著 TCP 連接或進(jìn)程存活根本察覺不到這些隱患。1.2 為什么選 Rust 而不是 Go 或 Java項目選型的時候團(tuán)隊內(nèi)部其實是吵過一輪的。Go 生態(tài)成熟、寫起來快Java 有大量現(xiàn)成的分布式框架但最后我們還是選了 Rust。原因主要有幾點我一個個說。第一是性能確定性。故障檢測和恢復(fù)調(diào)度是控制面的活兒對延遲敏感對抖動更敏感。Rust 沒有 GC不會因為一次內(nèi)存回收導(dǎo)致健康檢查超時誤判加上零成本抽象你寫出來的異步狀態(tài)機(jī)可以被編譯器優(yōu)化得很徹底不像 Java 虛擬機(jī)那樣存在冷啟動和 JIT 預(yù)熱問題。對于控制面組件來說這種“可預(yù)測的延遲”比“更高的吞吐”更重要。第二是內(nèi)存安全帶來的信心。災(zāi)備控制面是典型的并發(fā)程序要同時監(jiān)控幾十個節(jié)點的狀態(tài)、處理網(wǎng)絡(luò)事件、協(xié)調(diào)多個任務(wù)。Rust 的所有權(quán)模型把數(shù)據(jù)競爭問題在編譯期解決了一大半。我們用 tokio 寫異步任務(wù)的時候如果哪個共享狀態(tài)沒加鎖或者生命周期寫錯了編譯器直接攔住基本不太可能出現(xiàn)“線上跑三個月突然崩潰”的詭異問題。第三是部署形態(tài)。Rust 編譯出來就是一個靜態(tài)二進(jìn)制依賴極少往云主機(jī)上一扔就能跑。我們甚至可以在容器里用 scratch 鏡像跑控制面程序鏡像體積才十幾兆。這對云環(huán)境下的快速部署和故障恢復(fù)非常有幫助畢竟災(zāi)備系統(tǒng)自己也得具備高可用。第四是云生態(tài)在快速補位。我們用的云廠商 SDK 已經(jīng)有官方 Rust 版雖然不是所有服務(wù)都覆蓋但核心的 ECS、云盤、負(fù)載均衡、標(biāo)簽服務(wù)都可用。配合 axum 寫控制面 API再通過對象存儲做告警事件流轉(zhuǎn)整個鏈路都能保持在一個語言棧里。對于維護(hù)成本來說這很重要。2. 自動恢復(fù)機(jī)制的整體架構(gòu)設(shè)計2.1 數(shù)據(jù)平面與控制平面分離這是整個架構(gòu)里最基礎(chǔ)、也最容易被忽視的原則。數(shù)據(jù)平面是業(yè)務(wù)真正跑的路徑控制平面是決定“誰在跑”的路徑。兩者必須分開否則控制面掛了業(yè)務(wù)也跟著受影響災(zāi)備就成了笑話。我們設(shè)計的時候控制面是一個獨立的 Rust 進(jìn)程組部署在三個可用區(qū)組成了一個小的 Raft 集群。它不參與業(yè)務(wù)數(shù)據(jù)復(fù)制只負(fù)責(zé)監(jiān)控業(yè)務(wù)節(jié)點的健康狀態(tài)、維護(hù)集群視圖、下發(fā)切換指令。即使業(yè)務(wù)節(jié)點全部宕機(jī)控制面仍然活著還能通過云 API 操作負(fù)載均衡和存儲掛載。數(shù)據(jù)平面則由業(yè)務(wù)節(jié)點組成每個節(jié)點運行一個輕量的 agent由 Rust 寫的負(fù)責(zé)兩件事一是匯報本節(jié)點健康狀態(tài)和控制面心跳二是執(zhí)行控制面下發(fā)的恢復(fù)動作比如掛載共享磁盤、拉起業(yè)務(wù)進(jìn)程、摘流量等。agent 不做獨立決策決策權(quán)全部上收這能有效避免“各節(jié)點自己判斷對方死了”導(dǎo)致的腦裂。這個“決策和執(zhí)行分離”的思路很多人都知道但真正落地的時候容易走樣。最常見的錯誤是 agent 里也寫了一套判斷邏輯覺得“我檢測到主節(jié)點不通那我就自己頂上”。一旦兩個 agent 同時產(chǎn)生這種想法系統(tǒng)就裂了。我們的鐵律是agent 只能上報事實比如“我這個進(jìn)程還活著”“我這塊盤寫不進(jìn)去了”但永遠(yuǎn)不做“我應(yīng)該成為主”的推斷。2.2 核心狀態(tài)機(jī)節(jié)點狀態(tài)與恢復(fù)流程自動恢復(fù)機(jī)制的本質(zhì)是一個狀態(tài)機(jī)。我們把每個業(yè)務(wù)節(jié)點抽象成三種狀態(tài)健康、可疑、故障??刂泼鎸?jié)點狀態(tài)的遷移定義了嚴(yán)格的規(guī)則不允許狀態(tài)跳躍。健康心跳正常數(shù)據(jù)上報正常節(jié)點對外提供服務(wù)。這個狀態(tài)下不需要任何干預(yù)??梢沙霈F(xiàn)一次心跳超時但沒有超過故障判定閾值。這時候控制面不會采取行動只會提高檢查頻率并要求節(jié)點做一次自檢比如檢查磁盤 IO、網(wǎng)絡(luò)連通性、進(jìn)程是否卡死。故障連續(xù)多次心跳超時或者收到云平臺的異常事件比如宿主機(jī)宕機(jī)通知、磁盤丟失告警控制面判定節(jié)點已無法履行職責(zé)這時才進(jìn)入恢復(fù)流程?;謴?fù)流程本身又是一個子狀態(tài)機(jī)觸發(fā)→前置檢查→執(zhí)行切換→驗證→收斂。觸發(fā)條件命中之后不能立刻切換先做前置檢查。檢查項包括備節(jié)點數(shù)據(jù)落后多少、控制面能否連接備節(jié)點、備節(jié)點的資源余量是否足夠。這些檢查有一項不滿足就中止切換降級為人工響應(yīng)。寧可讓業(yè)務(wù)多中斷一會兒也不能切到一臺數(shù)據(jù)落后十幾個 G 的備機(jī)上那是災(zāi)難的開端。切換執(zhí)行階段我們設(shè)計了一套“先摘流量、再掛資源、再起進(jìn)程、最后放流量”的動作序列。摘流量是通過云負(fù)載均衡 API 把故障節(jié)點的權(quán)重調(diào)成 0確保新請求不再進(jìn)來掛資源是把共享存儲從故障節(jié)點解掛、掛載到備節(jié)點起進(jìn)程就是把業(yè)務(wù)服務(wù)拉起來放流量是等備節(jié)點服務(wù)健康檢查通過后再逐步調(diào)高權(quán)重。每一步都要確認(rèn)完成才能進(jìn)入下一步。這套狀態(tài)機(jī)用 Rust 的 enum 來表示非常自然。每個狀態(tài)對應(yīng)一個處理函數(shù)狀態(tài)轉(zhuǎn)換的輸出就是下一個要執(zhí)行的動作整個過程沒有任何隱式分支調(diào)試的時候你只需要盯著狀態(tài)遷移日志就能知道系統(tǒng)當(dāng)時在想什么。pub enum NodeState { Healthy, Suspect { suspicious_since: Instant }, Failed { failed_at: Instant }, }2.3 “發(fā)散創(chuàng)新”思路自適應(yīng)檢測與事件驅(qū)動結(jié)合傳統(tǒng)方案通常只做心跳超時判斷但我們在設(shè)計檢測模塊的時候做了一個“發(fā)散”的嘗試不依賴單一信號而是把多個信號源融合進(jìn)故障判定邏輯里。第一路信號是心跳??刂泼婷?500ms 向 agent 發(fā)一次探測請求agent 收到后立即返回響應(yīng)。注意這個心跳不是簡單的 ping-pong響應(yīng)里會帶上 agent 本地的系統(tǒng)狀態(tài)進(jìn)程 CPU、內(nèi)存占用、磁盤延遲、最近一次數(shù)據(jù)復(fù)制時間戳。這樣控制面拿到的不只是一個“活著”的布爾值而是一個可以判斷“活得好不好”的多維快照。第二路信號是云平臺事件。我們訂閱了云廠商的事件總線比如磁盤 Performance 檢測異常、實例重啟、安全組變更等。這些事件比心跳更權(quán)威因為有些故障會導(dǎo)致 agent 進(jìn)程本身也死了心跳直接中斷但控制面并不知道是網(wǎng)絡(luò)斷了還是機(jī)器掛了。有了云平臺事件的輸入我們可以把“疑似故障”和“確認(rèn)故障”區(qū)分開減少無效的切換嘗試。第三路信號是數(shù)據(jù)同步水位。災(zāi)備系統(tǒng)里最關(guān)鍵的數(shù)字是“數(shù)據(jù)落后量”。我們在代碼里給它起了個名字叫 lag。每次心跳agent 會把當(dāng)前已復(fù)制的日志偏移量上報給控制面控制面再去主節(jié)點的元數(shù)據(jù)服務(wù)里查主節(jié)點當(dāng)前偏移量兩者之差就是 lag。只有 lag 小于等于預(yù)先設(shè)定的閾值默認(rèn) 3 秒的日志量可按業(yè)務(wù)調(diào)整備節(jié)點才具備被提升為主節(jié)點的資格。這個設(shè)計解決了一個經(jīng)典問題備節(jié)點雖然活著但數(shù)據(jù)落后太多切上去就丟數(shù)據(jù)。這個“多信號融合 自適應(yīng)閾值”的設(shè)計就是發(fā)散的體現(xiàn)。我們沒有把自動恢復(fù)機(jī)制限定在“用固定超時判斷故障”這條老路上而是把云環(huán)境特有的信息源全部接進(jìn)來讓系統(tǒng)在“快速發(fā)現(xiàn)”和“避免誤判”兩個目標(biāo)之間動態(tài)平衡。3. 用 Rust 實現(xiàn)關(guān)鍵模塊實操過程3.1 環(huán)境準(zhǔn)備與工程結(jié)構(gòu)我們使用 Rust 1.75 穩(wěn)定版依賴的 crate 比較多核心的有 tokio異步運行時、axum控制面 HTTP API、tracing日志追蹤、serde序列化、reqwest調(diào)用云 API、rusoto 或云廠商官方 SDK云資源操作。為了避免爛大街的注釋式文檔我直接說工程結(jié)構(gòu)。整個項目分四個 crateagent業(yè)務(wù)節(jié)點上運行的探針、controller控制面核心狀態(tài)機(jī)和編排邏輯、common公共類型定義比如消息協(xié)議、狀態(tài)枚舉、cli運維命令行工具手動觸發(fā)切換和查看集群狀態(tài)。開發(fā)環(huán)境上我用 VSCode 配合 rust-analyzer 插件調(diào)試體驗已經(jīng)很接近傳統(tǒng) IDE。這里有個小建議Rust 的編譯時間會隨著依賴增長變得很長建議用cargo build --timings查看每個 crate 的編譯耗時必要時可以對controller做增量編譯設(shè)置否則每次改一行代碼等 40 秒耐心很快就耗光了。3.2 心跳與健康檢測的實現(xiàn)心跳模塊是 agent 和 controller 之間的底層通道。我們用的是 tokio 里的select!循環(huán)里面有兩個分支一個是定時器觸發(fā)心跳上報另一個是接收控制面下發(fā)的指令。agent 端的心跳上報代碼核心邏輯大概是這樣的// agent/src/heartbeat.rs async fn heartbeat_loop(ctx: AgentContext) - anyhow::Result() { let mut interval tokio::time::interval(Duration::from_millis(500)); loop { tokio::select! { _ interval.tick() { let status collect_status().await?; let resp ctx.transport.report_status(status).await?; if resp.should_execute_action() { // 執(zhí)行控制面下發(fā)的恢復(fù)動作比如摘流量、掛盤 execute_action(resp.action).await?; } } Some(cmd) ctx.command_rx.recv() { handle_command(cmd).await?; } } } }控制面端接收心跳的代碼要特別注意并發(fā)處理。我們維護(hù)了一個MutexHashMapNodeId, NodeStatus每個心跳進(jìn)來就更新對應(yīng)節(jié)點的最近心跳時間和狀態(tài)快照。為了不讓鎖爭用成為瓶頸我們做了分片把節(jié)點 ID 哈希到 16 個槽位每個槽位一把鎖理論上的鎖競爭只有原先的十六分之一。// controller/src/monitor.rs pub struct Monitor { shards: VecMutexHashMapNodeId, NodeRuntimeInfo, } impl Monitor { pub fn update_from_heartbeat(self, hb: Heartbeat) { let shard_idx (hb.node_id as usize) % self.shards.len(); let mut shard self.shards[shard_idx].lock().unwrap(); let info shard.entry(hb.node_id).or_default(); info.last_seen Instant::now(); info.lag hb.lag; info.agent_health hb.health; } }故障判定邏輯要注意“連續(xù)超時”和“單次超時”的區(qū)別。單次超時只把節(jié)點標(biāo)記為可疑連續(xù)三次超時才進(jìn)入故障判定。這個“三次”不是隨便拍的我們在壓測環(huán)境做過統(tǒng)計正常的網(wǎng)絡(luò)抖動導(dǎo)致的心跳丟失概率約為 1.5%單次超時誤判率偏高連續(xù)三次超時之后誤判率可以降到萬分之三以下已經(jīng)可以接受。當(dāng)然這個數(shù)字和網(wǎng)絡(luò)環(huán)境強相關(guān)你在真實環(huán)境部署前一定要先采集幾天心跳數(shù)據(jù)算一下自己環(huán)境里的抖動概率再去定超時次數(shù)。3.3 仲裁與腦裂防護(hù)自動切換機(jī)制里最危險的就是腦裂兩個節(jié)點同時認(rèn)為自己是主節(jié)點。我們用三個手段防腦裂。第一是仲裁多數(shù)派。控制面本身是三個節(jié)點的 Raft 集群所有切換決策必須由多數(shù)派也就是至少兩個節(jié)點共識通過。這樣就算某個控制面節(jié)點因為網(wǎng)絡(luò)分區(qū)聯(lián)系不上剩下的節(jié)點仍然能做出有效決策不會出現(xiàn)一臺控制面節(jié)點拍腦袋切換的情況。第二是租約機(jī)制。主節(jié)點每隔 5 秒向控制面申請一次租約續(xù)租成功才被認(rèn)可為合法主節(jié)點。備節(jié)點在發(fā)起切換之前必須先從控制面確認(rèn)“當(dāng)前租約已經(jīng)過期”并且自己拿到了新的租約。這相當(dāng)于把“我是主節(jié)點”的身份認(rèn)證權(quán)利收歸到控制面手里各業(yè)務(wù)節(jié)點本身不具備自行稱主的權(quán)利。第三是共享存儲鎖。在云盤掛載上我們利用云廠商的文件鎖能力做了一層互斥同一塊共享盤只能掛載到一個節(jié)點上??刂泼嬖趫?zhí)行切換前必須先解掛故障節(jié)點的共享盤確認(rèn)解掛成功后再去掛載到備節(jié)點。云平臺本身會保證同一塊盤不會被同時掛到兩個實例上但我們在代碼里仍然會做二次校驗因為云平臺 API 偶爾也會返回假成功。用 Rust 寫租約續(xù)租核心代碼很簡單// controller/src/lease.rs pub struct LeaseManager { current_lease: RwLockOptionLease, } pub async fn try_acquire_lease(self, node: NodeId) - ResultLease, AcquireError { let mut guard self.current_lease.write().await; match guard.as_ref() { Some(lease) if lease.is_valid() Err(AcquireError::LeaseHeldByOther), _ { let new_lease Lease { holder: node, expires_at: Instant::now() Duration::from_secs(5), }; *guard Some(new_lease); Ok(new_lease) } } }3.4 自動切換與恢復(fù)的動作編排切換動作編排是整個系統(tǒng)最復(fù)雜、也最容易出錯的部分。我們把它做成了一個線性動作序列每個動作會有一個execute函數(shù)和一個verify函數(shù)執(zhí)行完必須驗證成功才能進(jìn)入下一個動作。如果某一步執(zhí)行失敗整個流程會回滾到切換前的狀態(tài)并且把控制權(quán)交還給人工程序員。這里貼一下核心的切換流程代碼省略了具體云操作的實現(xiàn)// controller/src/recovery.rs pub async fn run_recovery_flow( failed_node: NodeId, candidate: NodeId, ctx: RecoveryContext, ) - RecoveryResult { actions! { step 摘除故障節(jié)點流量 ctx.load_balancer.set_weight(failed_node, 0).await?, step 解掛共享存儲 { ctx.storage.detach_volume(failed_node, ctx.volume_id).await?; ctx.storage.confirm_detached(ctx.volume_id).await?; } step 掛載共享存儲到備節(jié)點 { ctx.storage.attach_volume(candidate, ctx.volume_id).await?; ctx.storage.confirm_attached(ctx.volume_id).await?; } step 清理備節(jié)點舊狀態(tài) ctx.agent(candidate).prepare_for_promotion().await?, step 啟動業(yè)務(wù)進(jìn)程 ctx.agent(candidate).start_service().await?, step 等待健康檢查通過 wait_healthy(candidate, Duration::from_secs(60)).await?, step 恢復(fù)流量 ctx.load_balancer.set_weight(candidate, 100).await?, } Ok(RecoveryResult::Success { promoted_node: candidate }) }每步動作都有重試和超時機(jī)制。比如“解掛共享存儲”這一步如果 30 秒內(nèi)沒有完成解掛我們會重試三次每次間隔 5 秒仍然失敗就中止整個流程并回滾?;貪L的邏輯是反向執(zhí)行已經(jīng)完成的所有步驟把流量重新加回故障節(jié)點——但如果故障節(jié)點真的已經(jīng)死了回滾也會失敗這時候系統(tǒng)會進(jìn)入“人工介入”狀態(tài)同時在告警通道里發(fā)出最高級別的通知。這里有一個非常重要的經(jīng)驗自動恢復(fù)機(jī)制一定要有一個“逃生門”。我們的系統(tǒng)里保留了一個手動操作入口cli工具提供了force-failover和abort-recovery兩個命令權(quán)限只開放給值班工程師。自動機(jī)制不可能覆蓋所有故障場景像云平臺賬號權(quán)限過期、控制面自身的數(shù)據(jù)庫損壞這類問題自動恢復(fù)搞不定必須人上。千萬不要把自動化做成一個無法打斷的死循環(huán)否則極端情況下你會被系統(tǒng)坑到懷疑人生。4. 在云環(huán)境下部署與調(diào)試的實戰(zhàn)經(jīng)驗4.1 云網(wǎng)絡(luò)下的超時與抖動處理云網(wǎng)絡(luò)的穩(wěn)定性比物理機(jī)房低一個量級這句話沒有夸張。我們在測試環(huán)境跑心跳檢測的時候發(fā)現(xiàn)偶爾會出現(xiàn) 200ms 以上的心跳延遲峰值一開始以為是代碼問題后來抓包發(fā)現(xiàn)是虛擬交換機(jī)在突發(fā)流量下產(chǎn)生了排隊。針對這個問題我們把心跳的超時判定從“固定時間”改成了“滑動窗口 自適應(yīng)基線”。每個節(jié)點都有一個歷史延遲記錄系統(tǒng)動態(tài)計算過去 5 分鐘的 P99 延遲把心跳超時閾值設(shè)為max(當(dāng)前P99 × 3, 300ms)。如果最近網(wǎng)絡(luò)一直很穩(wěn)定超時閾值會比較小故障發(fā)現(xiàn)更快如果網(wǎng)絡(luò)本身抖動就很頻繁閾值會自動放寬避免一抖動就誤判。這套自適應(yīng)邏輯在 Go 和 Java 里寫也不難但 Rust 給我們的優(yōu)勢是這個閾值調(diào)整邏輯是純函數(shù)式實現(xiàn)沒有任何鎖競爭跑得極其輕快。還要注意云安全組和負(fù)載均衡的健康檢查可能和我們的心跳互相干擾。我們遇到過一個問題負(fù)載均衡每 5 秒檢查一次業(yè)務(wù)端口如果業(yè)務(wù)進(jìn)程啟動慢負(fù)載均衡直接把節(jié)點標(biāo)記為不健康自動恢復(fù)了流量。但我們的控制面認(rèn)為節(jié)點還活著兩邊信息不一致導(dǎo)致流量分配混亂。后來我們把業(yè)務(wù)進(jìn)程的啟動順序做了調(diào)整先執(zhí)行健康檢查所需的初始化再綁定對外端口保證負(fù)載均衡的探測不會因為進(jìn)程“半死不活”而誤判。4.2 故障注入驗證自動恢復(fù)機(jī)制的唯一可靠方式這套系統(tǒng)上線前我們做了大量的故障注入測試。故障注入聽上去很高端實際做起來就是“故意把系統(tǒng)搞壞”然后看它能不能自己恢復(fù)。我們做了這么幾組測試讓 agent 進(jìn)程直接 kill -9把云盤的 IO 延遲用 tc 限制到 5 秒把控制面和業(yè)務(wù)節(jié)點之間的網(wǎng)絡(luò)斷開 2 分鐘把備節(jié)點的磁盤空間占滿甚至模擬過云平臺 API 隨機(jī)返回 500 錯誤的情況。第一次跑網(wǎng)絡(luò)斷開測試的時候系統(tǒng)誤判了。原因是網(wǎng)絡(luò)斷開之后控制面收不到心跳把主節(jié)點標(biāo)記為故障。但備節(jié)點和控制面之間網(wǎng)絡(luò)同時也不穩(wěn)定備節(jié)點遲遲無法完成共享存儲掛載整個切換流程卡在第三步一直在重試。加了一個“備節(jié)點前置檢查”之后這個問題才解決切換開始前控制面必須和備節(jié)點進(jìn)行一次額外探測確認(rèn)通信鏈路和資源操作 API 都可用才允許啟動切換流程。故障注入的結(jié)論讓我非常吃驚自動恢復(fù)機(jī)制本身的問題往往不是恢復(fù)算法錯而是對故障現(xiàn)象的理解不完整。比如磁盤只讀但不宕機(jī)、網(wǎng)絡(luò)半通、云 API 限流這些“灰障”比“全掛”更考驗系統(tǒng)。我們的經(jīng)驗是故障注入不要只注入底層的物理故障也要注入 API 層的邏輯故障否則很多邊界情況在測試環(huán)境下根本暴露不出來。4.3 可觀測性與告警設(shè)計自動恢復(fù)機(jī)制必須是可觀測的否則你只能在出問題時對著日志大海撈針。我們給系統(tǒng)加了三個層面的可觀測性。狀態(tài)層面每次狀態(tài)遷移都會輸出結(jié)構(gòu)化日志包括變化的節(jié)點 ID、舊狀態(tài)、新狀態(tài)、觸發(fā)原因、當(dāng)時的 lag 值。這樣排障的時候可以直接按節(jié)點 ID 過濾日志快速還原時間線。指標(biāo)層面我們用 Prometheus 格式暴露核心指標(biāo)心跳超時次數(shù)、狀態(tài)遷移次數(shù)、切換流程執(zhí)行時長、每步動作執(zhí)行時長、控制面 Raft 集群的任期和投票情況。這些指標(biāo)配合 Grafana 看板能直觀看到整套系統(tǒng)是否健康。上線初期我們每天都會盯一盯指標(biāo)曲線確認(rèn)沒有異常震蕩。事件層面我們把“可疑狀態(tài)”“進(jìn)入故障判定”“切換開始”“切換成功/失敗”都作為事件發(fā)到云廠商的事件總線再轉(zhuǎn)發(fā)到手機(jī)告警。這里有個小心得告警要做分級。心跳超時一次和切換失敗完全是兩個級別的事件半夜三點沒有工程師想為一個“疑似抖動”爬起來。我們只把切換失敗、切換流程卡死超過 5 分鐘、控制面節(jié)點掉線這類嚴(yán)重事件設(shè)置為電話告警其余全部走工單。5. 常見問題與排查技巧實錄5.1 問題一頻繁誤切換業(yè)務(wù)被無故重啟現(xiàn)象業(yè)務(wù)節(jié)點健康狀態(tài)正常但控制面頻繁判定故障并觸發(fā)切換。排查過程先看心跳延遲曲線發(fā)現(xiàn)網(wǎng)絡(luò) P99 延遲在業(yè)務(wù)高峰時段會飆到 1.2 秒而我們最初的固定超時閾值是 800ms。也就是說業(yè)務(wù)還在正常運行只是心跳響應(yīng)慢了一點就被誤判了。解決方案把固定閾值改成自適應(yīng)閾值之后誤切換基本消失。這個坑告訴我們?nèi)魏纬瑫r閾值都要基于真實網(wǎng)絡(luò)的分布來設(shè)定不能拍腦袋。5.2 問題二切換流程執(zhí)行到掛載存儲時卡住現(xiàn)象切換流程卡在“掛載共享存儲到備節(jié)點”步驟重試三次后失敗并回滾。排查過程看云平臺的錯誤日志發(fā)現(xiàn)備節(jié)點的云主機(jī)因資源不足云盤掛載請求被限流。再查備節(jié)點的規(guī)格才發(fā)現(xiàn)這臺備機(jī)的云盤數(shù)據(jù)盤容量只剩 2GB而共享盤需要的緩存空間遠(yuǎn)大于這個值。解決方案在備節(jié)點的前置檢查里增加磁盤余量判斷低于閾值直接拒絕該節(jié)點參與切換。另外把備節(jié)點的規(guī)格提升了一檔保證足夠的系統(tǒng)盤空間。5.3 問題三控制面 Raft 集群自身腦裂現(xiàn)象三個控制面節(jié)點分布在三個可用區(qū)某可用區(qū)網(wǎng)絡(luò)抖動導(dǎo)致其中一個控制面節(jié)點與其他兩個失聯(lián)。這個孤立節(jié)點因為收不到心跳誤判業(yè)務(wù)主節(jié)點故障直接發(fā)起了切換指令。排查過程翻控制面日志發(fā)現(xiàn)孤立節(jié)點的 Raft 任期一直沒有增加它根本無法獲得多數(shù)派投票但它依然在錯誤地執(zhí)行故障判定邏輯。解決方案這是代碼邏輯漏洞——故障判定沒有和 Raft 共識解耦。修復(fù)方案是任何切換決策必須由 Raft 集群的領(lǐng)導(dǎo)者通過一個Proposal提交流程下發(fā)follower 節(jié)點在無法聯(lián)系領(lǐng)導(dǎo)者時只能報告狀態(tài)不能獨立發(fā)起切換。修復(fù)之后我們再測試網(wǎng)絡(luò)分區(qū)場景孤立節(jié)點最多只能把節(jié)點標(biāo)記為可疑不會再引起切換。5.4 問題四云 API 返回假成功現(xiàn)象解掛共享存儲的 API 返回成功但業(yè)務(wù)節(jié)點上磁盤仍然被占用導(dǎo)致后續(xù)掛載到備節(jié)點失敗。排查過程云廠商的 API 在某些情況下是異步完成的返回成功只代表請求已被接受不代表操作已落地。我們不斷確認(rèn)磁盤狀態(tài)發(fā)現(xiàn)磁盤其實還處于“分離中”狀態(tài)。解決方案所有云資源操作之后都要做二次確認(rèn)輪詢確認(rèn)真實狀態(tài)達(dá)到預(yù)期才算完成。我們封裝了一個confirm_detached函數(shù)每 2 秒查詢一次磁盤狀態(tài)連續(xù)查到 3 次“已解掛”才進(jìn)入下一步。5.5 問題五備節(jié)點提升后流量沒切過去現(xiàn)象切換流程顯示成功備節(jié)點進(jìn)程也起來了但外部請求仍然訪問舊節(jié)點的 IP。排查過程發(fā)現(xiàn)負(fù)載均衡后端的節(jié)點注冊信息是通過 agent 啟動時上報的備節(jié)點的 agent 啟動后雖然上報了自身 IP但控制面只更新了內(nèi)部狀態(tài)沒有調(diào)用負(fù)載均衡 API 把新節(jié)點加入后端服務(wù)器組。解決方案在“恢復(fù)流量”步驟之前增加一個顯式步驟把備節(jié)點 IP 注冊到負(fù)載均衡后端服務(wù)器組并等待負(fù)載均衡狀態(tài)變?yōu)椤敖】怠痹僬{(diào)高權(quán)重。事后反思這個問題的根源是“服務(wù)啟動”和“流量接入”被混為了一談分離之后邏輯就清晰了。5.6 實操心得給自動恢復(fù)機(jī)制的五個建議這套系統(tǒng)從設(shè)計到上線運行我積累了幾條特別想分享的經(jīng)驗按重要程度排序故障判定必須留有人工可干預(yù)的接口。就算你的自動化做得再完善總會遇到訓(xùn)練數(shù)據(jù)覆蓋不到的場景。手工逃生門要保證在最壞情況下也能被運維人員操作別把系統(tǒng)做成黑盒。自動恢復(fù)的每一步動作都要保證冪等。切換流程可能因為網(wǎng)絡(luò)超時被中斷然后重試如果同一動作重復(fù)執(zhí)行會產(chǎn)生副作用比如重復(fù)掛載云盤、重復(fù)調(diào)整負(fù)載均衡權(quán)重那系統(tǒng)會越修越亂。我們在實現(xiàn)上保證每個動作都天然冪等這點需要設(shè)計時仔細(xì)推敲。每個狀態(tài)遷移都要有“為什么”的依據(jù)。我們的日志里會打印觸發(fā)遷移的全部信號快照比如心跳時間、lag 值、云平臺事件 ID。這不是為了裝酷而是出事的時候你必須能回答“系統(tǒng)憑什么做出這個判斷”否則排障只能靠猜。不要把所有邏輯都塞進(jìn)一個異步循環(huán)里。我們早期版本把心跳接收、狀態(tài)判定、動作執(zhí)行全寫在一個 tokio 任務(wù)里問題是一旦某個動作阻塞比如云 API 超時重試整個心跳處理也跟著卡住系統(tǒng)直接進(jìn)入假死狀態(tài)。后來拆成了獨立的執(zhí)行管道心跳和動作編排徹底隔離穩(wěn)定性顯著提升。最后做多活容災(zāi)之前先想清楚“數(shù)據(jù)到底能不能丟”。自動恢復(fù)機(jī)制能幫你切換節(jié)點但數(shù)據(jù)的一致性最終取決于你的復(fù)制方案。如果主備之間是異步復(fù)制那切換必然有數(shù)據(jù)丟失窗口只有半同步復(fù)制或強同步復(fù)制才能把丟失降到接近零。這個問題再聰明的自動恢復(fù)算法也解決不了必須在架構(gòu)設(shè)計初期就拍板。項目還在持續(xù)演進(jìn)下一步準(zhǔn)備把控制面自身的恢復(fù)策略也納入自動演練每個月做一次無告警的切換演練確保整個流程沒有因為時間流逝而失效。如果你也在做類似的事歡迎交流我特別想知道你在自適應(yīng)故障檢測這塊是怎么處理的。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
色五月综合网| 香蕉综合网| 99热只有| 97婷婷丁香五月| 玩熟女五十AV一二三区| 亚洲在线综合| 亚洲久热| 日韩AV在线免费| 日日噜噜夜夜狠狠久久丁香五月| 成人狠狠成人狠狠成人狠狠成人狠狠| 亚洲色图81p| 狠狠香蕉| 亚洲精品99| 噜噜色天天开心| 久久婷婷五月综合色欧美| 婷婷基地爱| 婷婷五月天Av| 99精彩视频在线观看| 激情五月影院| 激情激情激情网| av免费在线网站| 五月丁香影视| 色综合丁香| 激情开心五月婷婷| 综合激情五月天| 久久这里只有精品视频15 | 婷婷色色五月天| 成人丁香| 8区视频在线| 插插干干干色| 国产伊人五月天| 婷婷五月六月丁香| 9|在线观看视频| 婷婷中文字幕| 天天做天天爱天天玩| 色色影院aaaav| 五月天综合久久丁香91| 国精产品一区一区三区免费视频| 五月丁香六月婷综合成人综合 | 日韩999| 丁香五月冃欧美| 我爱大香蕉| 九九热内射| 久久五月综合| 99热这里只有精品66| 亚洲综合色棒| 五月花综合视频| 99色丁香婷婷综合网| 久草性爱| 激情久久久| 天天操精品| 北条麻妃九九九国产精品视频| 五月婷婷综合激情网| 韩国天天婷婷| 激情第四色| 九九热视频思思| 丁香激情合作五月| 婷婷综合五月天激情| 人妻九九九九| 九九热这里有精品视频| 久久婷婷五月草视频在线播放| 99久久99久久| 婷婷五月AV| 色五月色图| 日韩美女羞羞网站在线观看| 亚洲99综合| 97操碰在线视频| 国产无遮挡又黄又爽免费网站| 九九热精品99| 欧美婷婷五月丁香| 大战熟女丰满人妻AV| 九九在线精品| 亚洲AV影片在线观看| 中文字幕 中文字幕明步| 色播丁香| 色婷婷综合网站| www.26uuu.com亚洲电影| 色婷婷伦理| 日韩抽插操逼| 99aese| 婷婷五月天少妇| 我要色综合五月婷婷| 激情综合网激情五月网| 人人干人人看| 久久XX| 99这里只有精品| 亭亭五月色男人| 97极品在线| 伊人五月婷婷| 狠狠精品干练久久久无码中文字幕 | 96精品国产综合久久久久久| 99热 在线播放| 五月婷婷六月丁香玖玖玫瑰91| 操比激情五月综合| 五月激情婷婷六月丁香| 激情综合五月婷婷丁香| 99爱在线免费视频| 狠狠色婷婷7777久| 综合色视频| 丁香狠狠色婷婷| 久久女人天堂| 亚洲色 视频| 99激情视频| 97婷婷色| 色综合色综合色综合| 五月天激情四射网站| 在线视频另类| 天天看夜夜看| 天天搞天天爽| 超碰97在线观看免费| 丁香婷婷婷五月综合色情| 婷婷五月天影院| 99 频99热国里只有精品| 婷婷五月丁香在线观看| 99色色| www.91婷婷| 中文字幕在线资源| 一区二区传媒视频| 亚洲精品久久久久久久久久吃药| 99九九热在线观看| 色www99| 丁香五月综合激情性爱| 丁香六月婷婷姐网| 亚洲综合色婷婷| 色久天| 91色色五月天| 影音先锋xfplay资源男人网| 开心激情五月天网| 日本无码专区| 婷婷5月色| 天天干天天射色综合| 日韩久久视频| 综合网啪| 久久久这里有精品| 久久婷婷超碰| 丁香五月婷婷精品视频| 99热免费观看| 九九热欧美| 精品人妻久久久| 大香蕉网站,大香蕉综合| 五月婷婷国产| 激情婷婷丁香五月天小说| www.av骚货| 婷婷五月天激情四射| 在线不卡AC| 久久久久9999| 色激情五月天| 大香久久综合网| 五月丁香婷婷啪啪| 超碰99资源站| 婷婷五月天丁香成人社区| 丁香五月天激情五月天激情五月天激情网| 五月天婷婷綜合院| 亚洲AV永久无码影院黑人 | 婷婷五月色综合| 99热97| 九九久久高清| www,色色色网站| 少妇大叫太大太粗太爽了A片 | 黄色一级影片| 啪啪色激情五月天| 五月天婷婷视频30| 香蕉婷婷五月| 操逼123网| 秋霞性爱AV| 99热在线爱| 99re这里有精品手机在线| 超碰成人免费| 丁香五月天狠狠操| http://www.lingjunshare.com/| 狠狠搞狠狠操| 97人人干人人操| 日本操B视频| 少妇AB又爽又紧无码网站| 美女网黄| 91性高潮久久久久久久久| 色综合久网| 激情二色月| 五月色综合| 九九精品少妇| 丁香六月激情四射| 丁香五月欧美成人| 99热这里只有精品3| 国产午夜精品一区二区| 久久婷婷色色| 噜噜干日本| 天天操夜夜操| 久久久性爱视频| 婷婷五月天综合网| 人人操91| 狼人狠狠操| 五月婷婷激情综合av| 色99欧洲色19| 日本成人噜噜噜| 9l视频自拍九色9l黑人| 色婷五月天激情| 99久热视频在线| 亚洲狠狠狠色婷婷综合激情久久久| 激情综合五月丁香| 色爱99| 婷婷五月天电影网| 色婷婷综合久久久久| 色五月激情综合| 人人插9| 久久人妻视频| 91久久婷婷| 欧美婷婷五月丁香| 色欲丁香久久| 99啪视频在线观看| 天堂A∨在线| 丁香五月综合婷婷| 99免费在线视频| 色婷丁香五月| 五月婷婷香蕉| 青青草原伊人网| 亚洲99在线| 欧洲亚洲免费视频9| 丁香色色色| 九九99免费视频| 开心婷婷五月天综合| 婷婷五月天网| 99精品爱| 狠狠色噜噜狠狠狠888| 99色在线免费观看视频| 欧美精品99| www.五月天婷婷.com| 中字幕视频在线永久在线观看免费 | 五月天社区婷婷| 噜噜色噜噜网| 久久草大香蕉| 牛色色碰| 亚欧州精品视频| 九九亚洲视频| 99精品视频播放| 日本五月婷婷久久久六月丁香| 中文字幕在线aⅴ免费观看| 亚洲激情免费久久| 人人操人人添人人摸97| 亚洲天天| 一级性爱视频| 天天上天天爽| 色五月婷婷在线| 天天干,夜夜爽| 婷婷狠狠五月综合| 一本久道综合色婷婷五月| 人妻久久久久久| http://www.sd-xiangsu.com/| 中文在线成人| 香蕉人妻AV久久久久天天| 天堂草在线观看| 色婷婷久久综| 97色五月婷婷在线| 婷婷伊人綜合中文字幕| 婷婷丁香色五月| 婷婷五月天激情小说| 丁香五月天婷婷在线视频| 香蕉久久国产AV一区二区| 亚洲亚洲永久无码777777| 色欲一区二区三区精品A片| 精品人妻久久久久久久| 91日韩在线| 成人 在线观看国产| 亚洲色优| 99热这里只有精品23| 色色五月婷婷久久| 97操男人的天堂| 久久激情网| 婷婷五月美女直播| 婷婷丁香水多多视频| 99久高清视频| 婷婷激情五月| 熟女网站久久| 婷婷丁香五月亚洲综合网在线视频观看| 91丨九色丨丰满人妖| 99热这里有精品| 激情图片久久| 天天干天天操天天拍| 日韩狠狠色婷婷| 丁香五月123| 九九丁香社区欧美激情| 久热99| 五月婷婷激情综合| 色播丁香婷婷五月激情| www.狠狠操.co m| 婷婷影院欧美| 婷婷天堂综合网| 天天做天天爱天天爽| 热久视频| 伊人热婷婷| 丁香五月天社区| 色婷婷五月天成人网| 六月丁香激情婷婷| 第四色婷婷五月| 99热九九这里只有精品| 成人人操| 五月天婷a在线| 久久激情五月婷婷| 亚洲色模骚货| 亚洲色情网站| 丁香久久久| 黄色AV日韩| 丁香 亚洲 久久| 丁香色六月婷婷| 婷婷丁香五月婷婷| 丁香五月综合激情性爱| 激情深爱五月天| 一级A片天天操夜夜操| 成人片在线播放| 激情网婷婷五月天| 色噜噜狠噜噜视频| 色色热| 婷婷五月天堂一本在线| 天天插天天操| 久久人妻伊人| 激情五月婷婷综合网| 丁香丁香激情网| 久久99这里只有精品| 亚洲天堂久久| 亚洲激情丁香五月天色| 天天上天天爽| 99国产精品白浆在线观看免费| 综合图片色色| WWW,五月| 婷婷操逼| 五月综合色| 丁香婷婷激情| 国产XXXX搡XXXXX搡麻豆| 色色色五月婷婷| 婷婷五月天激情小说| 99在线视频播放| 丁香九月婷婷综合| www.狠狠操| 乱精品一区字幕二区| 亚洲国产精品二二三三区| 99国产精品久久久久久久久久久 | 粉嫩AV久久一区二区三区| 欧美激情综合色综合啪啪五月| 99热精品在线观看| 国产成人精品一区二三区熟女在线| 97色婷婷| 337久久| 成人视频免费观看高清完整版在线观看| 七月婷婷色香综合网| 五月婷婷色色爱| 青青久久五月天丁香婷婷| 天天综合区| 新男人天堂人妻| 伊人三级激情| 婷婷五月综合网| 亚洲综合在线伊人婷| 玖玖资源部在线播放| 日本熟妇人妻在线| 久色欧美| 激情六月丁香| 九玖欧洲亚洲| 五月丁香激情综合网| 另类激情五月| 亚洲成av人影院| 亚洲狠狠丁香婷婷香蕉| 五月丁香六月激情综合| 久久这里只有国产| 桔色成人在线| 人人操插| 婷婷伊人五月天| 大香蕉狠狠爱主页| 五月久久噜噜| 日本久久人| 亚洲丁香花色| 人人操人人妻| 色波激情五月天| 色丁香影院| 五月婷婷啪啪啪| 五月丁香久久| 色狠狠999综合| 婷婷五六日| 六月婷婷五月丁香| 久久婷婷原创视频| 久er7久热| 成人在线日韩欧美| 色99欧洲色19| 六月婷婷狠狠色在线观看| 亚洲第一综合| 好叼操在线观看| 色噜噜狠狠色综合成人网| 99爱最新免费视频在线观看| 亚洲操人| 狠狠色五月| 日日干夜夜撸夜夜骑| 亚洲综合另类| 五他月天啪啪啪| 久久9久| 丁香六月成人| 国产裸舞表演WWWW| 综合色久| 激情五月天婷婷| 天天操天天干天天日| 久久精品99国产精品日本| 日本三级网址| 婷婷丁香五月亚洲综合网在线视频观看| 四色永久成人网站| 99操无码视频观看| 97色色色| 丁香花五月天婷婷成人社区| 99色最新在线视频| 亚洲另类婷婷综合| 99热99精品| 五月婷婷m| 五月综合无码| 五月丁香| 激情五月婷婷综合| 超碰人妻在线| 亚洲色网络| 免费啪啪亚州视频| 日本色爽| 91久草五月天婷婷| 99精品综合视频| 免费在线观看av网站| 天天日夜夜草进麻麻的子宫| 中文AV在线播放| 91色欲综合| 思思热性操| 天天做天天爽| 久久五月天婷婷视频| 欧美日韩123| 五月天丁香色色| 激情婷婷内射| 思思热在线| 亚洲AV中文在线| 婷婷五月激情视频在线| 91日婷婷在线| 丁香五月婷婷天| 欧洲第一无人区观看| 亚洲色情久久| 婷婷五月成人| 亚州欧美国产久精国产99综合视频| 国产在线中文字幕| WWW,五月天| 婷婷导航| 国产一二区爆乳_1国产日韩一区二区三-成人AV| 日本三级日本三级三级人妇四虎| 五月天深爱激情网| 亚洲天堂碰碰婷婷| 九九热最新| 欧美日比视频| 婷婷综合五月| 79色色免费| 国产乱人偷精品人妻A片| 777久久综合视频| 九九热在线精品视频| 五月婷免费视频久久久| 色色色激情网| 亚洲成人在线五月天| 五月丁香在线观看国产| 九九激情| 丁香六月啪啪啪| 五月香婷婷| 亚洲激情图文小说| 婷婷五月综合社区在线| 99操免费视频| 亚洲五月天综合色| WWW.HENHENL.| 久久与婷婷| 五月丁香啪啪啪| 欧洲色| 无码激情精品色婷婷久久久久| 日本综合99| 久久五月婷天天干| 久久99久久99精品免观看粉嫩| 色区久久| 甈你aaaaa| 激情综合婷婷久久| 婷婷丁香十月| 五月天影院| 色婷婷色情| 国产精品久久久久久久久久| 五月丁香成人视频| 五月婷网| 99综合视频一体| 久久99精品久| 色综合色色| 婷婷在线播放av| 丁香五月天天久久综合小说| 色婷婷五月综合在线| 久9久9热久热| 中文成人在线| 九月丁香婷婷综合| 五月天激情婷婷丁香| 4438国产免费看| 99A片| 五月婷婷亞洲中文| 色五月首页| 亚洲午夜成人av电影网| 操操人人| 久色欧美| 99ri视频| 亚州激情九月| 成人综合网站| 丁香五月天婷婷激情| 婷婷丁香色五月天久久88| 91久久18| 强壮的公次次弄得我高潮A片日本 | 99这里只有| 噜噜噜噜噜日本视频| 99热色婷婷| 中文字幕丰满孑伦无码专区| 国産精品| 五月天开心激情综合网| 这里只有精品99视频| 亚洲视频国产一区| 色婷婷亚洲综合天堂| 国产成人亚洲综合A∨婷婷| 九九色综合视频| 99日本视频| 亚洲亚洲人成综合网络| 夜夜谢天天干| 午夜亚洲国产精品av一区二区| 五月激情综合深爱| 色狠狠色综合久久久绯色AⅤ影视| 色婷青青| 亚洲第一成人无码A片| 亚洲精品乱码久久久久久按摩观| 99久在线精品99re5热视频| 五月丁香啪啪啪综合网| 99这里热| 久久五月丁香| 婷婷五月天视频亚洲| 人妻尝试久久久久久久久久久久| 色婷婷操逼| 五月婷婷性爱视频| 丁香六月激情国产| 在线不卡的视频| 4438亚洲欧美| 丁香五月影院| 色色五月天激情| 婷婷久久大香蕉| 99re热在线视频观看| 婷婷丁香五月在线播放| 另类激情网| 色欲婷婷夜夜| 日本人妻丁香婷婷久久寝取熟女五月| 五月天激情国产综合婷婷婷就去爱| 婷婷欧美激情综合| 91久久五月天| 久久天堂色| 国产精品涩涩涩视频网站| 天天爱天天爽| 五月激情天| 久99热| 五月天综合在线| 色五月丁香婷婷| 综合激情五月丁香| 综合色99| 欧美激情综合色综合啪啪五月| 婷婷色色丁香五月天| 五月婷丁香| 色五月丁香婷婷久草| 五月婷婷之综合激情| 99热这里只有精品3| 五月丁香婷婷六月天| 欧洲日韩一区二区三区| 九九亚洲小视频| 丁香五月婷婷激情123| 五月丁香久久激情网| 在线色五月婷婷| 婷五月天影院| 婷婷五月天久| 六月婷基地| AV操逼网| 久久er+| 六月激情婷婷综合| 色五月婷激情| 激情九九综合网| 色狠狠色综合| 色天堂在线| 操91| 婷婷99综合| 色护士综合| 婷婷丁香成人五月天| 九九亚洲综合| 色五月天中文字幕| 久久久久久久合一狠狠做深爱| 26uuu亚洲欧美日本| 伊人激情影院| 狠狠狠狠狠狠狠狠| 97五月婷| 久久久潮喷-久久久九九-成人AV| 狼友超碰| 99热这是里只有精品| 五六月丁香激情视频| 丁香婷婷五月基地| 97在线精品视频| 嫩草AV久久伊人妇女超级A| 日韩不卡123| 操日视频| 婷婷色丁香五月| 丁香五月成人av| 婷婷丁香五月麻豆| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 99热这里只有精品1025| 亚洲精品久久久无码| 丁香五月欧美婷婷综合| 婷婷九月亚洲| 无码婷婷五月天| 婷丁香五月天| 日韩丰满少妇无码内射| 开心久久网婷婷| 婷婷色色网| 婷婷综合伊人丁香| 伊人五月天在线| 91在线观看九区| 日本熟妇精品99| 色色色色色色色色色999| 国产精品电影网| 中文字幕日产A片在线看| 伊人丁香五月婷婷潮吹| 玖玖资源部在线播放| 丁香狠狠| 99久久久免费| 综合色视频| 色婷丁香| 99热在线观看这里只有精品 | av在线免费网站 | 成片免费播放| 996热re视频在线观看视频| www99久久| 婷婷五月天亚洲图片| 97人人操人人爽| 国产偷人爽久久久久久老妇APP | 新五月天婷婷激情电影| 久久激情五月婷婷| 久久婷婷东京热| 综合色综合| 六月婷婷综合| 激情爱爱网站超大免费| 综合一本道| 亚洲熟妇AV乱码在线观看| 婷婷五月电影院| 亚洲激情婷婷| 色五月av| 色色婷婷丁香五月天| 插插五月天| 色噜噜狠狠色综合网| 抽插特写| 久久久99精品| AA片在线观看视频在线播放 | 五月精品| 色综合久久88色综合天天| 婷婷性爱无码视频| 九九综合| 色婷婷视频| 人妻久久久久久久 | 日本九九网| 综合激情九月婷婷,激情综合婷婷中文字| 婷婷区日本| 色五月激情| 色色五月丁香婷婷| 男女99免费视频| 日本人人干| 婷婷丁香五月亚洲17cao| 秋霞AV吧| 伊人狠狠操| 国产人妻777人伦精品HD| 99热九九九九| 亚洲欧美999| 91在线97视频| 九九热这里只有精品首页| 性一交一乱一交A片久久四色| 精品女人九九九| www.色婷婷| 五月婷婷精品视频| 亚洲天堂色色| 极品另类| 99无码视频| 五月天婷综合| 97人人操在线| 综合超碰熟| 婷婷丁香五月婷婷| 在线另类视频| 狠狠搞狠狠操| 丁香五月婷婷六月婷婷| 伊人综合网站| 永久地址 色| 五月婷婷影视| 精品福利911| 无码成人播放器| 少妇久久诱惑视频| 五月婷婷先锋| 天天在线XXX| 久热AA| 啪啪啪大香蕉| 天天日人人| 亚洲综合网在线| 日日舔夜夜操| 99丁香五月婷| 日本综合久久| 久久丁香五月婷婷| 婷婷五月丁香色播| 激情五月天丁香| 激情六月五月婷婷综合网| 婷婷五月激情欧美大胆视频| 99热精品中文字幕| 色综合色五月| 中文字幕 中文字幕明步 | 五月天另类小说久久小说网| 久99热在线观看| sesesesezonghe| 97caop| 亚洲性爱区无码区| 亚洲成人中心| 午夜性做爰电影| 无月播播激情在线观看视频| 丁香久久激情俄| 99在线观看| 婷婷狠狠五月综合| 久久激情天堂| 疯狂做受XXXX高潮A片| 色色色色色色色色色色色色色色,网站| 狠狠色丁香久久婷婷综合五月| www.五月天婷婷| 婷婷综合六月| 99热综合| www婷婷色| 狠狠干综合网| 很很干在线视频| 中文字幕网站在线观看| 91丨九色丨东北熟女| 无码四色色色| 果冻传媒A片一二三区| 亚洲另类婷婷综合| 欧美狠狠草| 丁香五月97视频| 97五月天| 色欲一区二区三区精品A片| j久久性爱视频| 99国产欧美视频| 操97免费超级视频| WWW.色婷婷.COM| 爱射综合| 五月天婷婷色色首页| 超碰在线看| 丁香五月另类小说| 婷婷中文在线| 狠狠插.com| 日日杆天天| 五月婷婷亚洲色视频| 激情五月综合网| 特黄三级又爽又粗又大| 久久久GOGO无码啪啪艺术 | 无码AV大香线蕉伊人| 九九热精品| 极品另类| 五月丁香亚洲婷婷| 激情婷婷丁香五月天小说| 亚洲中文字幕翔田千里| 尔尔AV一区| 九九无码| 天天干天天色天天干| 色五月天丁香| 九九综合九色欧美狠狠| 99只有精品| www.人人操人人看人人想人人摸 人人人人操,COM| 色五月,婷婷大香蕉| 天天爱天天操| 色色婷| 97婷婷五月天| 日韩综合大黄| 九九视频这里只有精品在线播放| 大香AV| 中文字幕久久婷九女同| 色色色色色色色色五月先| 思思色综合网站| 99热 这里只有精品 国产 日韩| 精品99视频| 美女爆乳18禁www久久久久久| 日本精品人妻无码77777| 99在线免费视频| 亚洲成人影视在线观看| 热99精品视频五月| 另类 在线| www.五月天婷婷姐姐| 婷婷六月啪啪| 色婷婷丁香综合中文字幕| 五月丁香婷婷婷激情爱爱| 超碰在线观看caop| 激情综合五月丁香六月婷婷| 久久婷婷六月综合国际| 丁香五月综合| 五月色综合| 婷婷五月天av| 91久久电影| 99热精品6| 日韩色色视频www| 亚洲五月情| 色五月首页| 精品久久66| 5月丁香啪啪啪| 丁香五月婷婷在线观看| 日本婷婷色日| 九九亚洲| 亚洲av网站| 无码髙清| 91狠狠色| 九九五月天| 99色在线观看视频| 日韩黄黄| www色色色com| 99热在线观看| 狠狠色婷婷777| 99无码| 免费在线观看AV网站| 日日影院 | 七月丁香五月婷婷在线| 久久久五月天婷婷| 九九综合网色全集 | 影音先锋激情网| 五月停停丁香| 天天色天天日天天舔| 久久婷婷色色| 91性高潮久久久久久久久| 国产日韩精品SUV| 99久久超级| 六月丁香婷婷综合影院| 99九九在线观看免费| 天天爽夜夜爽夜夜爽精品| 亚洲久久视频| 婷婷五月丁香网| 久色激情| 亚洲中文字幕av| 丁香五月花影院| 71在线精品视频一区| 婷婷久久五月| 五月天丁香久久综合 | 99免费在线视频| 99天堂网| 99视频啪啪| 色综合久久99色| 第四色激情网| 激情五月丁香激情综合网| 99在线精品观看99| 97涩涩丁香五月天| 婷婷丁香综合| 91成人性爱视频| 五月天婷婷小说| 色综合久久99色| 五月婷婷影| 色墦五月丁香| 中文字幕视频色婷婷| 日韩伊人大香蕉| 久久东京热婷婷五月| 高清激情av在线观看| 日韩狠狠色婷婷| 色综合色色| 99久超碰| 色五月av| 夜夜 操无码| 色色色色热| 五月婷婷碰碰| 五月婷婷性爱| 欧美日本一区二区三区| 色色色色五月| 97香蕉久久超级碰碰高清版| 久久久久久人妻| 久久久精品婷婷五月天| 五月婷婷啪| 成人网址在线观看| 婷婷六月天国产综合| www久久艹| 五月天婷婷开心| 精品草原久久视频| 99热这里有精品| 色色综合五月| 欧美天天综合网站上去吧| 国产白丝在线一区| 色97啪啪| 色爱终和网| 国产一区二区三区影院| www狠狠| 99re6久热只有精品6在线直播| 色色色五月天婷婷| 操国产人妻| 日本一级一级一级一级| 五月丁香婷婷综合视频| 天天操天天曰| 97操在线| 激情美女五月天激情在线| 操骚货在线| 激情爱爱网站| 久久久精品色| 超碰日韩成人| 天天天操天天天爰| 五月天婷婷基地| 99热超碰人| 婷婷五月色影视先锋| 久久久精品色| 日本三久久| www五月天com| 8050一级网| 99热国产国产| 思思热视频在线| 99精品久久久| 无码髙清| 午夜免费高清AV片| 五月婷婷色丁香| 五月天婷婷久久| 香蕉婷婷| 亚洲综合五月天婷婷丁香| 亚洲色婷婷久久99精品91| 日日做夜夜爱| 婷婷丁香五月天综合在线日韩| 成人羞羞啪啪 全 视频| 99久在线精品99re8| AV在线大香蕉| 色婷婷五月天视频网站| 亚洲不卡123| 天天舔天天摸视频| 久久五月婷综合| 亚洲人妻一区二区| 一起草AV入口| 噜噜噜噜在线| 成人综合网站| 综合色五月天| 中字幕视频在线永久在线观看免费 | 禁欲电影完整版在线播放| 日韩中文欧美| 五月婷婷无码| 色五月大香蕉| 丁香九月婷婷| 可以免费观看的av网址| 色婷另类| 中文字幕综合| 伊人久久艹| 婷婷久久综合| 久99久热只有精品国产99| 抽插特写| 看全色黄大色大片| 成片免费播放| 久久在线视频免费观看| 99热这里只有精品一区| 冬月かえでAV无码播放| 99re免费精品视频| 五月天激情播播网| 久久久亚洲精品一区二区三区浴池 | 亚洲天堂玖玖| 永久免费视频| 激情小说婷婷小说| 久久色六月| 天天骑天天操| 五月丁香婷婷色| 国产欧美精品AAAAAA片| 99热6色| 91玖玖| 99热国品| 丁香五月六月综合激情| 久操热| 久久久天堂国产精品女人| 丁香五月婷婷在线观看| 色婷婷婷婷| 久久久亚洲精品一区二区三区浴池| 伊人AV五月婷| 久久资源网五月婷| 99精品偷自拍| 色婷婷电影网| 99热只有精品在线播放| 91九色超碰| 久久久大香蕉| 白天AV月月| 五月天综合久久丁香91| 五月天激情综合网| 天天爱天天吃狠天天透| 99 热| 888久久久| 丁香五月欧美| 噜噜色噜噜网| 无码地址| 99视频在线啪| 激情综合网激情五月天| 狠狠干,狠狠操| 99超在线| 人妻激情视频| 做爰丰满少妇1313| 操人久久| 99亚洲大片精品永久在线观看| AV动漫不卡无码免费| 极品人妻XXXXOOOO| 婷婷五月天Av| 79色色免费| 亚州色婷婷| 超碰永久在线| 免费AV播放| 99色色| 婷婷五月天熟妇| 成人在线精品| 91窝窝| 精品国产乱码久久久久夜深人妻| 五月婷婷九九热| 久热最新视频| 97人人草| 伊人综合色干| www.金莲av| 国产67194| 色七七九九| 26uuu国产激情视频| 丁香五月婷婷性爱| 色五月天丁香婷婷| 亚洲影院婷婷色| 无码人妻AV久久久一区二区三区| 91男同| 婷婷婷婷婷婷婷婷| 五月天婷婷永久免费视频| 国产色色在线| 日本色图综合| 久久天堂精品| 性爱激情久久| 精品一二三区久久AAA片| 五月天久久婷婷| www.maotanji.com| 激情综合色婷婷六月天| 五月丁香六月婷婷手机无线| 天天看片日日夜夜| 99热精品在线播放| www.97碰碰com| 久久日韩婷婷五月| 色噜噜狠狠狠狠色综合久欧美| 噼里啪啦在线观看免费完整版视频| 丁香六月色婷婷| 在线观看婷婷5月| 五月婷婷五月天激情网| 久久综合天天综合| 99热日本| 五月丁香网站在线播放| 色婷婷色五月另类综合| 丁香五月成人| 另类视频一区| 啪啪激情网| 午夜亚洲国产精品av一区二区| 丁香五月最新网址| 第1影院之五月婷婷| 日日夜夜亚洲一区| 丁香婷婷狠狠97| 色欧美一级| 色噜噜狠狠色综无码久久合欧美| 亚洲综合激情五月久久| 丁香六月啪| 91啪啪| 欧美大肥婆大肥BBBBB| 色噜噜婷婷| 色婷婷影院| 激情五月天色色| 精品国产AV色一区二区深夜久久| 狼人久草| 欧美人与性动交CCOO| 色色国产| 亚洲亚洲人成综合网络| 99年操人人爽| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 五月丁香色五月| 26uuu激情五月天| 天天日天天操天天干| 日韩激情人伦人| 色久免费| 99热在线这里| 夜夜躁爽日日| www.色婷婷.com| 9久久精品| 成人在线视频网| 国产精品扒开腿做爽爽爽A片唱戏| 国产69久久久欧美黑人A片| 日韩二区搞逼插逼毛片| 99久久综合狠狠综合久久| 丁香五月婷婷国产在线| www久久久久久| 久青操| 婷婷色婷婷亚洲成人| 婷婷激情综合无月| 欧美婷| 色五月综合在线| 中文字幕AV网址| 永久精品| 国产成人AV| 中文字幕欧美精品久久| 天堂成人久久| 久久视频66| 亚洲九九在线| 精品久久人妻| 激情小说视频图片| 风流少妇A片一区二区蜜桃| 国产精品黑丝| 99ri在线播放| 激情五月开心五月在线视频| 丁香婷婷久久老熟女综合网| 婷婷狠狠干| 亚洲中文字幕av| 国产欧美精品AAAAAA片| 丁香五月天社区婷婷| 91.com男女操| 天天日日天天| 玖玖资源在线视频| 久久99久久99精品免视看婷婷| 午夜天堂一区人妻| 人妻在线网站| 久久婷婷五月天激情新地址| 久久免费操| 五月婷在线| 色五月 婷婷, 大香蕉| 色青五月天| 性爱动图国产麻豆一区二区三区| 日韩AV色色色| 丁香九月综合激情| 成人国产欧美大片一区| 婷婷综合另类| 久青青久| 热99在线| 在线综合网| 超级碰碰碰久久网站| 99久久99九九99九九九| 99精品在线下载| 亚洲综合五月天婷婷丁香| 国产AV一区二区三区最新精品 | 久人操| 丁香五月天激情婷婷丁香六月| 夜夜综合色| 婷婷五月天色色| 99色免费| 天天激情夜夜干| 亚洲人妻Av| 日本久久久97| 色情综合网| 思思国产99| 婷婷五月天色色| 99热超碰天堂网| 五月的丁香六月的婷婷| 超碰99久久| 91碰免费视频| 天天爱天天日| 日本色色网站| Aaa久久| 丁香亭亭久久| 六月婷婷综合激情| 超碰97在线观看免费| 婷婷五月天AV网| 人人摸人人澡人人| 久久五月婷婷综合网| 九九色热| 99综合| 日韩在线视频9色| 久久在线视频只有这里有精品| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 五月天婷婷社区| 久久无码成人| 激情综合五月婷| 99热日| 色停停影院五月天| 丁香婷婷六月天| 婷婷另类小说| 99视频在线播放大全| 色色色色色色色色网站| 日本不卡高字幕在线2019| 日韩色色色色色| 久婷久婷| 色色网91| 亚洲免费99| 丁香香蕉射射射| 97色色色视屏| 欧美99| 九九久久99精品免费观看www| 六月丁香综合| www.seqingwuyuetian| 老司机午夜福利视频金瓶梅| 91丨九色丨东北熟女| 97色在线观看视频| 夜夜谢天天干| 婷五月天| 天天操天天操天天操天天操天天操天天操 | 欧美精品XXXXBBBB| site:hcxsz888.com| 秋霞性爱AV| AV网站免费在线| www.99热在线| 五月丁香成年黄色| 久久婷婷视频| 99啪啪骑| 狠狠草在线观看| 久久天堂女人| 男人的天堂五月丁香| 美女被操一区二区| 久色国产| 婷婷五月精品| 99亚洲色色| 欧美日韩国产一二区| 玖玖资源站蜜臀| 日本色超碰| 国产无套精品一区二区| 五月丁香六月停停停| 激情五月天色婷婷| 墨西哥毛片内射精| 玖玖精品视频| 伊人三级激情| 亚洲成人无码网站| 91久久精品无码一区二区三区| 久久久久激情| 日本色色图| 天天弄天天操| 亚洲日韩人妻操逼| 51精品国自产在线| 99九九视屏| 久久天堂女人| 婷婷丁香六月天| 五月丁香六月婷婷啪啪| 五月婷婷AV| 深爱五月综合网| 国产真实乱了老女人视频| 日韩按摩二区| 99热在线播放精品| 五月婷婷视频在线观看| 99九九在线观看免费| 色欧洲| www.五月天婷婷姐姐| 婷婷酒色网| 国产精品国产| 99热精品在线| 婷婷丁香社区| 性天天中文网| 干一干xxxx| 久久国产色| 99色热视频| 五月天堂色色| 操碰99| 亚洲婷婷丁香五月天激情小说 | 丁香婷婷久久老熟女综合网| 99热黄| 日韩成人AV在线播放| 女性自慰系列第五页| 欧美69久成人做爰视频| 欧州色色| 色播六月| 激情婷婷丁香五月| 综合五月婷婷| 久久色情| 五月天开心色色网| 久久丁香综合| 99er精品| 婷婷日韩| 天天摸天天肏| 呦呦v线| 1999天天操夜夜操| 久热免费视频| 久久婷婷激情视频| 三级三久久线久久99久目本WW| 亚洲视频在线观看| 成人色五婷婷| 九九人妻福利| 大大香蕉综合在线| 久久免片| 丁香五月综合在线视频| 色综合色五月| 婷婷五月,综合伊人| 久久婷狠狠色| 综合五月天天天天天五月| 婷婷久久性爱| 久草热8精品视频在线观看| 丁香五月成人婷婷| 午夜 外网 精品 在线| www.97干视频| 免费视频在线观看的网站| 狠狠爱婷婷爱| 天天情色五月天|