云服務(wù)器防扣費(fèi)指南:計(jì)費(fèi)模型、安全加固與到期退場)
1. 免費(fèi)云服務(wù)器的五種免費(fèi)先分清楚你領(lǐng)的是哪一種免費(fèi)云服務(wù)器這個(gè)詞踩過坑的人都知道它有多薛定諤——宣傳頁上寫著零成本賬單出來那一刻才發(fā)現(xiàn)機(jī)器是免費(fèi)的流量不是快照不是公網(wǎng)地址也不是。我第一次領(lǐng)的時(shí)候也天真過以為點(diǎn)個(gè)立即領(lǐng)取就完事結(jié)果第二個(gè)月收到一筆幾十塊的扣款通知翻賬單翻了半小時(shí)才定位到是系統(tǒng)盤擴(kuò)容后的按量計(jì)費(fèi)。從那以后我養(yǎng)成了一個(gè)習(xí)慣任何免費(fèi)資源先看計(jì)費(fèi)文檔再看配置頁。這篇內(nèi)容適合兩類人一類是剛接觸云服務(wù)、想拿免費(fèi)機(jī)器練手學(xué) Linux 或搭個(gè)小站的新手另一類是已經(jīng)用過一陣子但對自己賬單構(gòu)成始終說不清楚、心里沒底的人。下面我會(huì)把免費(fèi)這件事拆成五類形態(tài)、三道申請坎、一小時(shí)的配置動(dòng)作、四道防扣費(fèi)閘門以及免費(fèi)機(jī)的能力邊界全部講透。所有平臺(tái)差異我會(huì)用某云廠商主流平臺(tái)這類泛稱因?yàn)楦骷业囊?guī)則大方向一致細(xì)節(jié)數(shù)值請以你實(shí)際注冊平臺(tái)的當(dāng)期文檔為準(zhǔn)——這點(diǎn)很重要免費(fèi)政策變動(dòng)非常頻繁。1.1 試用型、計(jì)劃型、永久小規(guī)格、代金券、函數(shù)額度的本質(zhì)差別云廠商嘴里的免費(fèi)底層邏輯其實(shí)只有五種搞混了就會(huì)做出錯(cuò)誤預(yù)期。試用型免費(fèi)是最常見的通常面向新注冊賬號(hào)給一到三個(gè)月不等的使用期規(guī)格一般不低2核4G 起步很常見。它的本質(zhì)是獲客成本到期后不會(huì)自動(dòng)關(guān)機(jī)而是轉(zhuǎn)成按量付費(fèi)或按原價(jià)包月。這是扣費(fèi)第一大來源后面會(huì)專門講怎么防。計(jì)劃型免費(fèi)指的是學(xué)生計(jì)劃、開發(fā)者扶持計(jì)劃這類需要額外資質(zhì)認(rèn)證周期往往按年續(xù)期規(guī)格偏低但勝在穩(wěn)定。它的坑在于資格是動(dòng)態(tài)的你可能某次沒按時(shí)完成續(xù)期認(rèn)證機(jī)器就悄悄轉(zhuǎn)成付費(fèi)了。永久免費(fèi)小規(guī)格是很多人最想要的但現(xiàn)實(shí)是這類資源通常限定地域、限定規(guī)格1核1G 或 1核2G 居多、限定月流量而且往往是突發(fā)性能實(shí)例CPU 有積分機(jī)制。它不是不能用而是不能當(dāng)生產(chǎn)環(huán)境用后面第六章會(huì)詳細(xì)說積分耗盡之后的慘狀。代金券與資源包嚴(yán)格說不算服務(wù)器是抵扣憑證。代金券有有效期、有適用范圍有的只能抵新購不能抵扣按量資源包一般綁定具體產(chǎn)品。常見誤解是我賬戶里有 500 元代金券所以隨便開結(jié)果開了一臺(tái)代金券不覆蓋的實(shí)例規(guī)格錢照扣。函數(shù)計(jì)算與容器額度屬于 Serverless 形態(tài)按月給一定的調(diào)用次數(shù)和計(jì)算時(shí)長。它真正的坑不在錢而在于額度用完直接拒絕服務(wù)你的接口會(huì)在某天凌晨突然全部報(bào)錯(cuò)而不是產(chǎn)生賬單——排查時(shí)容易往代碼方向找其實(shí)是額度耗盡。1.2 三個(gè)最容易被忽略的額度維度時(shí)長、規(guī)格、流量大部分人看免費(fèi)政策只盯多久和幾核幾G但真正決定你會(huì)不會(huì)掏錢的是第三個(gè)維度流量與帶寬。維度典型形態(tài)容易踩的坑時(shí)長1-3 個(gè)月試用 / 按年續(xù)期的計(jì)劃 / 長期小規(guī)格到期自動(dòng)轉(zhuǎn)付費(fèi)無短信提醒或提醒被忽略規(guī)格1核2G、2核4G、突發(fā)性能型超出規(guī)格的部分磁盤、內(nèi)存單獨(dú)計(jì)費(fèi)流量每月固定 GB 數(shù) 或 固定帶寬 Mbps超出按量單價(jià)計(jì)費(fèi)且單價(jià)往往是包月的數(shù)倍地域僅限特定區(qū)域跨區(qū)訪問產(chǎn)生額外流量費(fèi)快照跨區(qū)復(fù)制收費(fèi)數(shù)量限 1 臺(tái) / 限 2 臺(tái)多開一臺(tái)直接全價(jià)我見過最典型的誤判是把1Mbps 帶寬理解成隨便用。算一筆賬1Mbps 約等于 128KB/s滿速跑滿一個(gè)月理論上是 128 × 86400 × 30 ≈ 331GB實(shí)際由于 TCP 開銷和空閑能跑到 250GB 左右就不錯(cuò)了。如果你的免費(fèi)套餐寫的是每月 200GB 流量、超出按量計(jì)費(fèi)那么這臺(tái)機(jī)器一旦被人刷了圖片或者跑了下載超額部分就是真金白銀。這也是為什么我一直建議免費(fèi)機(jī)的公網(wǎng)入口能不放就不放必須放的話前面加一層緩存或限流。另一個(gè)容易被忽略的是數(shù)量維度。很多活動(dòng)的免費(fèi)額度是按賬號(hào)算而不是按地域算你在 A 地域開了一臺(tái)免費(fèi)機(jī)再去 B 地域開第二臺(tái)第二臺(tái)就是全價(jià)。開之前先在控制臺(tái)的費(fèi)用中心確認(rèn)一下自己名下有幾臺(tái)在享受優(yōu)惠。2. 申請那一步就開始埋雷賬號(hào)、綁卡與庫存很多人以為坑是從配置開始的其實(shí)從注冊那一刻就埋下了。我?guī)腿丝催^不少莫名其妙被扣費(fèi)的案例追根溯源都是申請環(huán)節(jié)沒搞清楚規(guī)則。這一章講三件事賬號(hào)資質(zhì)、綁卡預(yù)授權(quán)、以及領(lǐng)取入口的現(xiàn)實(shí)問題。2.1 實(shí)名認(rèn)證與賬號(hào)權(quán)重主流平臺(tái)現(xiàn)在基本都要求實(shí)名才能開資源這是硬性門檻。但很多人不知道的是賬號(hào)本身是有權(quán)重概念的新賬號(hào)、無消費(fèi)記錄賬號(hào)、異地登錄頻繁的賬號(hào)在領(lǐng)取免費(fèi)資源時(shí)更容易觸發(fā)風(fēng)控表現(xiàn)為領(lǐng)取按鈕點(diǎn)不動(dòng)提示當(dāng)前活動(dòng)名額已滿需要人工審核。我自己的經(jīng)驗(yàn)是注冊后先完成實(shí)名、綁定一個(gè)常用手機(jī)號(hào)、不要在同一天內(nèi)頻繁切換網(wǎng)絡(luò)環(huán)境登錄然后把賬號(hào)放一兩天再回來領(lǐng)成功率明顯比注冊完立刻搶要高。這不是玄學(xué)風(fēng)控系統(tǒng)對新賬號(hào)的評估需要一點(diǎn)行為數(shù)據(jù)。另外要注意賬號(hào)與賬號(hào)之間的關(guān)聯(lián)。同一身份證、同一手機(jī)號(hào)、同一支付方式關(guān)聯(lián)的多個(gè)賬號(hào)通常被視為同一主體免費(fèi)額度不疊加。有人想用家人的信息再注冊一個(gè)來多領(lǐng)一臺(tái)這在規(guī)則上大概率是違規(guī)的而且一旦被判定為批量注冊已有的免費(fèi)資源也可能被回收得不償失。2.2 綁卡預(yù)授權(quán)為什么會(huì)先扣一筆這是咨詢量最高的一個(gè)問題我領(lǐng)的是免費(fèi)機(jī)器為什么綁卡時(shí)被扣了一筆錢絕大多數(shù)情況是預(yù)授權(quán)不是真實(shí)扣款。平臺(tái)為了驗(yàn)證支付方式有效性會(huì)發(fā)起一筆小額授權(quán)常見 1 元上下或者按當(dāng)?shù)刎泿诺淖钚挝贿@筆錢會(huì)在幾天到兩周內(nèi)自動(dòng)解凍退回。你可以在賬單的授權(quán)/凍結(jié)明細(xì)里看到它狀態(tài)一般是處理中或已解凍。真正的扣費(fèi)會(huì)出現(xiàn)在消費(fèi)明細(xì)里兩者要分清。但預(yù)授權(quán)之外還有一種情況需要警惕部分平臺(tái)的免費(fèi)套餐要求先付費(fèi)后返或者押金模式也就是先按正常價(jià)格扣費(fèi)滿足條件后在次月以代金券形式返還。這種模式的坑在于如果你在中途改了配置、或者提前釋放了實(shí)例返還條件就不滿足了。所以我的一般做法是綁卡前把活動(dòng)規(guī)則頁從頭到尾讀一遍重點(diǎn)找返還抵扣有效期變更后是否仍享受這幾個(gè)關(guān)鍵詞。還有一種更隱蔽的綁卡時(shí)勾選了某個(gè)自動(dòng)續(xù)費(fèi)享折扣的協(xié)議。這個(gè)勾選框往往在頁面角落字號(hào)很小。它不影響你當(dāng)下免費(fèi)但會(huì)在免費(fèi)期結(jié)束時(shí)自動(dòng)幫你續(xù)上一年。第二章講防扣費(fèi)時(shí)會(huì)給出具體的關(guān)閉路徑思路。2.3 領(lǐng)取入口、地域與庫存的現(xiàn)實(shí)問題免費(fèi)資源不是無限供應(yīng)的。熱門地域一線城市的機(jī)房的免費(fèi)庫存經(jīng)常是零你點(diǎn)進(jìn)去看到的是暫無可領(lǐng)取資源。這時(shí)候有兩個(gè)選擇換一個(gè)冷門地域或者等每天固定時(shí)段補(bǔ)庫存。換地域要考慮代價(jià)冷門地域到你這邊的網(wǎng)絡(luò)延遲可能高出一截如果你打算搭個(gè)對外的站點(diǎn)訪問體驗(yàn)會(huì)受影響。我的建議是先測延遲再?zèng)Q定別為了搶免費(fèi)名額把自己放到一個(gè) 200ms 起步的節(jié)點(diǎn)上。還有一個(gè)實(shí)際操作層面的細(xì)節(jié)領(lǐng)取頁面和購買頁面經(jīng)常是兩個(gè)入口界面長得幾乎一樣但一個(gè)是 0 元訂單一個(gè)是正常計(jì)費(fèi)訂單。我見過有人手滑在購買頁選了同樣的規(guī)格因?yàn)轫撁婺J(rèn)勾選了三年的時(shí)長一提交就是一筆不小的支出。下單前一定要看訂單確認(rèn)頁的總價(jià)是不是 0以及計(jì)費(fèi)模式寫的是包年包月優(yōu)惠還是按量付費(fèi)。這兩欄對不上就退回去重來。3. 開機(jī)后的第一小時(shí)把最小可用且安全的環(huán)境搭起來機(jī)器開出來之后第一小時(shí)做什么直接決定了你后面是省心還是天天救火。我的固定動(dòng)作是四步選鏡像、換登錄方式、收安全組、跑基礎(chǔ)腳本。這套流程十來分鐘能走完但能擋掉后續(xù)八成的麻煩。3.1 鏡像選擇為什么我不建議新手直接上帶面板的鏡像控制臺(tái)提供的鏡像大致分三類純凈系統(tǒng)鏡像各種 Linux 發(fā)行版、Windows Server、應(yīng)用鏡像預(yù)裝了運(yùn)行環(huán)境、以及帶可視化面板的鏡像。新手容易被一鍵部署、面板管理吸引但從安全和成本兩個(gè)角度看我都不推薦在免費(fèi)機(jī)上用帶面板的鏡像。原因有三面板本身會(huì)常駐占用內(nèi)存1核1G 的機(jī)器上一個(gè)面板吃掉兩三百兆很常見剩下的內(nèi)存跑不了什么面板的默認(rèn)端口是公開已知的等于給掃描器指了路面板自身的版本更新如果跟不上反而是個(gè)穩(wěn)定的攻擊面。我的選擇是Debian 或 Ubuntu 的 LTS 精簡版原因很實(shí)在軟件源穩(wěn)定、社區(qū)文檔多、出問題好搜。CentOS 系現(xiàn)在分支比較亂新手容易在源配置上卡住。Windows Server 除非你要跑特定的桌面程序否則在 1核2G 的免費(fèi)機(jī)上體驗(yàn)極差光系統(tǒng)本身就能把內(nèi)存吃滿。系統(tǒng)盤大小也要看一眼。免費(fèi)套餐常常只給 20-40GB 系統(tǒng)盤而某些鏡像默認(rèn)就要 40GB 起步選完鏡像后系統(tǒng)盤會(huì)被自動(dòng)擴(kuò)容到更大值這部分差額是收費(fèi)的。下單頁面上系統(tǒng)盤 40GB這一行如果不在免費(fèi)額度內(nèi)改成最小可用值。3.2 密鑰登錄與 SSH 加固的實(shí)際操作密碼登錄 默認(rèn) 22 端口是免費(fèi)機(jī)被爆破的標(biāo)準(zhǔn)配置。免費(fèi)機(jī)因?yàn)?IP 段集中、防護(hù)等級(jí)低是掃描器的重點(diǎn)目標(biāo)。我見過一臺(tái)開機(jī)不到 24 小時(shí)、日志里幾萬條失敗登錄記錄的。正確的做法是創(chuàng)建實(shí)例時(shí)選擇密鑰對登錄或者開機(jī)后立刻把自己的公鑰寫進(jìn)~/.ssh/authorized_keys然后關(guān)掉密碼登錄。具體操作# 本地生成密鑰對如果沒有 ssh-keygen -t ed25519 -C free-server -f ~/.ssh/free_server # 把公鑰內(nèi)容復(fù)制到服務(wù)器 ssh-copy-id -i ~/.ssh/free_server.pub useryour-ip登錄成功后再改配置注意先確認(rèn)密鑰能登上再關(guān)密碼順序反了就把自己鎖外面了sudo sed -i s/^#\?PasswordAuthentication.*/PasswordAuthentication no/ /etc/ssh/sshd_config sudo sed -i s/^#\?PermitRootLogin.*/PermitRootLogin no/ /etc/ssh/sshd_config sudo sshd -t # 先校驗(yàn)配置語法別直接重啟 sudo systemctl restart sshdsshd -t這一步千萬別省。我吃過一次虧改配置時(shí)手滑多打了個(gè)字符直接restart服務(wù)起不來控制臺(tái)的 VNC 又卡得要命最后是靠救援模式進(jìn)去改回來的前后折騰四十分鐘。有這個(gè)校驗(yàn)命令一秒鐘就能發(fā)現(xiàn)問題。如果確實(shí)需要保留密碼登錄比如臨時(shí)給朋友用至少做兩件事改 SSH 端口到非 22、裝個(gè) fail2ban 做失敗次數(shù)封禁。改端口只是降低噪音不是安全措施真正起作用的是密鑰 封禁。3.3 安全組只放必要端口安全組是云上的第一道墻規(guī)則寫寬了等于沒有墻。免費(fèi)機(jī)上常見的錯(cuò)誤是圖省事直接放行全部端口或者入方向 0.0.0.0/0 全開然后忘了這回事。我的原則是默認(rèn)全拒按需白名單。一張表說清楚哪些端口該開端口用途建議來源22或自定義SSH 管理僅自己的固定公網(wǎng) IP不要 0.0.0.0/080 / 443Web 服務(wù)0.0.0.0/0必須對外時(shí)3306 / 6379 / 27017數(shù)據(jù)庫絕不對外只允許同內(nèi)網(wǎng)8080 / 3000 等應(yīng)用調(diào)試僅自己 IP調(diào)試完關(guān)掉全部—默認(rèn)拒絕數(shù)據(jù)庫端口暴露在公網(wǎng)是極其常見的事故來源。免費(fèi)機(jī)如果只跑自己的練手項(xiàng)目數(shù)據(jù)庫和本機(jī)應(yīng)用通信走127.0.0.1就夠了根本不需要開公網(wǎng)端口。有人為了方便用圖形工具連數(shù)據(jù)庫把 3306 全量放行幾天后數(shù)據(jù)被清空的情況我見過不止一次。在服務(wù)器內(nèi)部再補(bǔ)一層主機(jī)防火墻形成雙保險(xiǎn)sudo apt update sudo apt install -y ufw sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow from 你的固定IP to any port 22 proto tcp sudo ufw allow 80,443/tcp sudo ufw --force enable sudo ufw status verbose注意ufw allow from ...那條務(wù)必先加白名單再 enable否則 SSH 會(huì)斷。云控制臺(tái)的安全組和主機(jī)防火墻是兩套東西兩邊規(guī)則不一致時(shí)以更嚴(yán)格的為準(zhǔn)這也是排查端口明明開了卻連不上的第一檢查點(diǎn)。3.4 一套十分鐘跑完的基礎(chǔ)環(huán)境腳本新機(jī)初始化我固定跑這么一段作用是補(bǔ)齊常用工具、開時(shí)間同步、限制日志膨脹、開自動(dòng)安全更新#!/usr/bin/env bash set -euo pipefail # 1. 基礎(chǔ)工具 sudo apt update sudo apt install -y curl wget git vim htop tmux unzip jq fail2ban # 2. 時(shí)區(qū)與時(shí)間同步很多人忽略日志時(shí)間對不上排查很痛苦 sudo timedatectl set-timezone Asia/Shanghai sudo timedatectl set-ntp true # 3. 日志限制防止把系統(tǒng)盤寫滿 sudo sed -i s/^#\?SystemMaxUse.*/SystemMaxUse200M/ /etc/systemd/journald.conf sudo systemctl restart systemd-journald # 4. 自動(dòng)安全更新 sudo apt install -y unattended-upgrades sudo dpkg-reconfigure -plow unattended-upgrades # 5. fail2ban 默認(rèn)規(guī)則啟用 sshd sudo systemctl enable --now fail2ban sudo fail2ban-client status sshd磁盤寫滿是免費(fèi)機(jī)上最高頻的故障之一而且癥狀很迷惑SSH 能登但任何寫操作都失敗網(wǎng)站報(bào) 500數(shù)據(jù)庫直接掛。原因通常是日志或者臨時(shí)文件撐爆了 20GB 的小盤。所以上面第 3 步的限制很有必要另外每月定期看一眼df -h # 容量 df -i # inode小文件多的時(shí)候 inode 先滿 du -sh /var/log/* | sort -rh | head -10df -i這一條尤其容易被漏掉。有些場景磁盤還剩十幾個(gè) G但 inode 用滿了照樣寫不進(jìn)去這時(shí)df -h看著很健康人會(huì)往別處找原因白白浪費(fèi)半天。4. 錢到底是從哪流走的計(jì)費(fèi)模型逐項(xiàng)拆解這一章是整篇的核心。免費(fèi)機(jī)扣費(fèi)從來不是機(jī)器開始收費(fèi)了這么簡單絕大多數(shù)是小額、分散、不易察覺的資源在同時(shí)計(jì)費(fèi)。我把它們分成三類計(jì)算、網(wǎng)絡(luò)、存儲(chǔ)。4.1 包年包月、按量付費(fèi)、搶占式實(shí)例的適用邊界計(jì)費(fèi)模式計(jì)費(fèi)粒度停機(jī)是否收費(fèi)適合場景包年包月按周期預(yù)付是資源為你保留長期穩(wěn)定運(yùn)行、可預(yù)期的負(fù)載按量付費(fèi)按秒/小時(shí)取決于是否開啟節(jié)省停機(jī)模式公網(wǎng)IP和云盤通常仍收費(fèi)短期測試、臨時(shí)壓測搶占式/競價(jià)按秒價(jià)格浮動(dòng)是可中斷的批處理任務(wù)免費(fèi)試用到期后默認(rèn)的轉(zhuǎn)換方向往往是按量付費(fèi)這是最危險(xiǎn)的一種。因?yàn)榘戳扛顿M(fèi)的單價(jià)看起來不高比如每小時(shí)幾毛但它是 7×24 累積的一個(gè)月下來可能是包月的兩三倍。而且按量付費(fèi)的實(shí)例你即使在里面關(guān)機(jī)只要沒選擇節(jié)省停機(jī)模式計(jì)算資源依然計(jì)費(fèi)。這里有個(gè)特別容易誤解的點(diǎn)在操作系統(tǒng)里執(zhí)行shutdown和 在控制臺(tái)執(zhí)行停止實(shí)例是兩回事。前者只是系統(tǒng)關(guān)機(jī)云平臺(tái)認(rèn)為實(shí)例仍在運(yùn)行后者才是真正的停止操作。我見過有人習(xí)慣性sudo poweroff以為不花錢了實(shí)際賬單照走。所以我的做法是免費(fèi)期一結(jié)束先確認(rèn)計(jì)費(fèi)模式如果是按量付費(fèi)要么改成包月要么直接釋放。不要留著一臺(tái)先放著說不定以后用得上的按量實(shí)例它每個(gè)月都在安靜地吃錢。4.2 帶寬與流量兩種計(jì)費(fèi)方式差出好幾倍網(wǎng)絡(luò)費(fèi)用是免費(fèi)機(jī)超額扣費(fèi)的頭號(hào)來源而新手最容易在這里搞混兩種模式。固定帶寬計(jì)費(fèi)你買 1Mbps 或 5Mbps按月付固定費(fèi)用用不用都這個(gè)價(jià)超出帶寬峰值會(huì)被限速但不會(huì)額外扣錢。這種方式的特點(diǎn)是費(fèi)用可預(yù)測、不會(huì)爆表。按使用流量計(jì)費(fèi)不限制帶寬峰值或者峰值很高但按實(shí)際流出的 GB 數(shù)收費(fèi)。單價(jià)看起來便宜問題是不可預(yù)測。網(wǎng)站被爬、圖片被外鏈、視頻被人轉(zhuǎn)發(fā)流量可以在幾個(gè)小時(shí)內(nèi)跑掉幾百 GB。按量流量的單價(jià)通常是包月帶寬折算下來的數(shù)倍。舉個(gè)粗略的量級(jí)對比同樣是每月 300GB 出流量包月固定帶寬的成本可能只是按量流量計(jì)費(fèi)的三分之一到一半。所以只要你的負(fù)載是持續(xù)穩(wěn)定的固定帶寬幾乎總是更劃算反過來如果你的流量是偶發(fā)峰值比如每月只有幾天有大批量訪問按量才合適。免費(fèi)套餐里通常給的是每月 N GB 流量本質(zhì)是按量流量 免費(fèi)額度。這意味著一旦超出自動(dòng)轉(zhuǎn)成計(jì)費(fèi)沒有二次確認(rèn)。所以我給免費(fèi)機(jī)的建議是二選一要么把帶寬設(shè)得很低1Mbps并接受慢要么在前面套一層對象存儲(chǔ)/CDN 把靜態(tài)資源分流出去減輕機(jī)器本身的出流量。后者雖然對象存儲(chǔ)也要錢但靜態(tài)資源的單位成本遠(yuǎn)低于服務(wù)器出流量??焖僮圆楫?dāng)前流量消耗# 實(shí)時(shí)看網(wǎng)卡累計(jì)流量單位字節(jié) cat /proc/net/dev # 或者用 vnstat 做按天統(tǒng)計(jì) sudo apt install -y vnstat sudo vnstat -dvnstat裝完之后跑一天就有數(shù)據(jù)了能看到每天的出入流量趨勢。發(fā)現(xiàn)某天流量異常飆升第一時(shí)間查訪問日志看是爬蟲、被刷還是配置錯(cuò)誤導(dǎo)致的循環(huán)請求。4.3 存儲(chǔ)與快照這些配角的賬單計(jì)算和網(wǎng)絡(luò)之外還有一堆看起來不起眼、加起來不少的資源。云盤系統(tǒng)盤在免費(fèi)額度內(nèi)但數(shù)據(jù)盤、擴(kuò)容部分、以及高性能云盤SSD/ESSD 類型都是單獨(dú)計(jì)費(fèi)的。把系統(tǒng)盤從 40GB 擴(kuò)到 100GB多出來的 60GB 按月收費(fèi)這個(gè)費(fèi)用很多人是看不到的因?yàn)樗煸诖鎯?chǔ)類目里??煺瞻磳?shí)際占用容量計(jì)費(fèi)。自動(dòng)快照策略如果開著且沒設(shè)保留數(shù)量會(huì)一直累積。我見過一個(gè)開了兩年沒管的賬號(hào)快照存了幾百 GB。免費(fèi)機(jī)上快照要手動(dòng)管理或者干脆用腳本把數(shù)據(jù)打包傳到本地別依賴云快照。鏡像與自定義鏡像自定義鏡像本身可能收費(fèi)跨地域復(fù)制鏡像更是按容量計(jì)費(fèi)。公網(wǎng) IP / 彈性 IP綁定在運(yùn)行實(shí)例上通常免費(fèi)或包含在內(nèi)但閑置的彈性 IP 是要收費(fèi)的。這個(gè)設(shè)計(jì)邏輯是防止地址囤積但對用戶來說很反直覺——不用的東西反而收費(fèi)。釋放實(shí)例時(shí)記得一并釋放 IP。負(fù)載均衡、NAT 網(wǎng)關(guān)、日志服務(wù)、監(jiān)控告警這些增值服務(wù)大多有免費(fèi)額度超出后按量計(jì)費(fèi)。免費(fèi)機(jī)上基本用不到但如果跟著某些一鍵部署模板創(chuàng)建出來了就會(huì)持續(xù)產(chǎn)生小額費(fèi)用。4.4 一張隱性收費(fèi)清單建議對著自查資源項(xiàng)免費(fèi)額度內(nèi)常見觸發(fā)扣費(fèi)的動(dòng)作實(shí)例規(guī)格指定規(guī)格升級(jí) CPU/內(nèi)存、變更機(jī)型系統(tǒng)盤20-40GB選大鏡像導(dǎo)致自動(dòng)擴(kuò)容數(shù)據(jù)盤通常不含掛載新盤、擴(kuò)容快照少量或沒有開啟自動(dòng)快照且不設(shè)保留數(shù)公網(wǎng)帶寬1Mbps 或固定流量調(diào)高帶寬、流量超限彈性 IP綁定狀態(tài)免費(fèi)解綁后未釋放對象存儲(chǔ)少量存儲(chǔ)請求數(shù)靜態(tài)資源外鏈、請求次數(shù)超限日志與監(jiān)控基礎(chǔ)額度開啟全量日志采集備份服務(wù)通常不含開啟數(shù)據(jù)庫自動(dòng)備份對照這張表去費(fèi)用中心把每一項(xiàng)的當(dāng)期用量和免費(fèi)額度拉出來比一比能立刻發(fā)現(xiàn)哪些在悄悄計(jì)費(fèi)。這個(gè)動(dòng)作我建議每月做一次五分鐘的事。5. 防扣費(fèi)的四道閘門告警、續(xù)費(fèi)、巡檢、權(quán)限前面講的是錢從哪來這一章講怎么攔住。我的做法是設(shè)四道閘門從被動(dòng)到主動(dòng)依次是預(yù)算告警、續(xù)費(fèi)管理、定期巡檢、權(quán)限與密鑰管控。四道都設(shè)上基本可以做到即使出事也能第一時(shí)間知道。5.1 預(yù)算告警怎么設(shè)才有用大多數(shù)平臺(tái)的費(fèi)用中心都有預(yù)算或費(fèi)用預(yù)警功能但默認(rèn)配置往往很雞肋——比如閾值設(shè)成 1000 元你一個(gè)月才花 50永遠(yuǎn)觸發(fā)不了等于沒設(shè)。有用的配置是這樣的設(shè)一個(gè)月度預(yù)算金額設(shè)為你心理預(yù)期的上限哪怕只有 20 元然后在 50%、80%、100% 三個(gè)檔位都開通知通知方式至少勾選短信或郵件別只勾站內(nèi)信站內(nèi)信你不登錄就看不見。這樣只要有一天突然產(chǎn)生了幾塊錢的非預(yù)期費(fèi)用當(dāng)天就能收到提醒。更細(xì)一層可以按產(chǎn)品維度拆分預(yù)算比如單獨(dú)給網(wǎng)絡(luò)和存儲(chǔ)設(shè)預(yù)算。因?yàn)檫@兩類是超額扣費(fèi)的高發(fā)區(qū)分開設(shè)能更快定位。還有一類告警容易被忽略余額不足提醒。賬戶余額接近 0 的時(shí)候按量資源可能被停服但更麻煩的是有些平臺(tái)會(huì)先扣費(fèi)再通知如果你綁了信用卡可能會(huì)產(chǎn)生一筆預(yù)期外的扣款。余額提醒設(shè)置成低于 50 元就行。5.2 自動(dòng)續(xù)費(fèi)與到期前的動(dòng)作清單自動(dòng)續(xù)費(fèi)這個(gè)開關(guān)本質(zhì)上是把決策權(quán)交給了平臺(tái)。免費(fèi)期結(jié)束時(shí)它默認(rèn)幫你續(xù)上而續(xù)費(fèi)價(jià)格通常是原價(jià)不是活動(dòng)價(jià)。我的處理方式是領(lǐng)到免費(fèi)資源的第一天就去把自動(dòng)續(xù)費(fèi)關(guān)掉然后在日歷里加一條到期前七天的提醒。關(guān)掉自動(dòng)續(xù)費(fèi)不會(huì)影響你當(dāng)期使用只是到期后不再自動(dòng)扣錢。到期前七天按這個(gè)清單走一遍導(dǎo)出所有需要保留的數(shù)據(jù)代碼、數(shù)據(jù)庫、配置文件、證書打包下載到本地確認(rèn)沒有正在運(yùn)行的重要任務(wù)檢查是否有掛載的數(shù)據(jù)盤、彈性 IP、快照等附屬資源決定是續(xù)費(fèi)、遷移還是釋放如果釋放先釋放附屬資源再釋放實(shí)例順序反了可能產(chǎn)生殘留計(jì)費(fèi)第 5 條的順序很多人不知道。先釋放實(shí)例、后釋放 IP 和云盤往往會(huì)導(dǎo)致這些資源變成無主狀態(tài)繼續(xù)計(jì)費(fèi)。正確順序是先解綁再刪除最后確認(rèn)資源列表里干干凈凈。5.3 每周賬單巡檢看哪幾個(gè)數(shù)賬單頁面信息量很大但真正需要每周看的就四個(gè)數(shù)當(dāng)期應(yīng)付金額和上周比有沒有非預(yù)期的增量按量付費(fèi)明細(xì)按產(chǎn)品分組看哪個(gè)產(chǎn)品在產(chǎn)生費(fèi)用資源實(shí)例列表有沒有你不認(rèn)識(shí)的實(shí)例尤其是按量付費(fèi)的代金券與資源包余額什么時(shí)候過期剩多少第二個(gè)數(shù)最關(guān)鍵。我一般的排查路徑是先看總額有沒有異常有異常就按產(chǎn)品下鉆定位到具體產(chǎn)品后看用量曲線用量曲線突然抬頭的那一天去查操作日志誰在什么時(shí)候改了什么。這條路徑基本能在十分鐘內(nèi)定位到根因。如果發(fā)現(xiàn)賬單里出現(xiàn)了自己完全沒印象的產(chǎn)品先別急著認(rèn)為是平臺(tái)出錯(cuò)大概率是某個(gè)一鍵部署或者創(chuàng)建實(shí)例時(shí)默認(rèn)勾選帶出來的關(guān)聯(lián)資源。5.4 訪問密鑰泄露最貴的一種免費(fèi)這一節(jié)我想單獨(dú)拎出來講因?yàn)樗钠茐牧推渌硬皇且粋€(gè)量級(jí)。云平臺(tái)一般會(huì)提供訪問密鑰API Key / AccessKey用于程序調(diào)用。這對密鑰的權(quán)限通常等同于賬號(hào)本身。一旦泄露——比如你不小心提交到了公開的代碼倉庫、貼在了聊天群里、或者寫在了前端代碼里——攻擊者可以在幾分鐘內(nèi)用你的賬號(hào)批量創(chuàng)建高配實(shí)例用于某些消耗性用途幾小時(shí)后你的賬單可能是五位數(shù)。這類事件的典型特征是賬單在幾小時(shí)內(nèi)暴漲、資源列表里出現(xiàn)大量你沒創(chuàng)建過的實(shí)例、創(chuàng)建時(shí)間集中、地域分散。而且攻擊者往往會(huì)同時(shí)創(chuàng)建多個(gè)賬號(hào)下的資源、開啟各種高配規(guī)格就是為了在你反應(yīng)過來之前最大化消耗。防護(hù)措施很明確不要在主賬號(hào)上創(chuàng)建長期密鑰用子賬號(hào) 最小權(quán)限密鑰不要寫進(jìn)代碼用環(huán)境變量或者配置文件并加入.gitignore提交代碼前跑一遍密鑰掃描開啟操作審計(jì)異常創(chuàng)建操作能收到告警一旦懷疑泄露立即禁用密鑰、檢查資源列表、提交工單# 提交前的簡易自查搜常見密鑰特征 grep -rnE (AccessKey|SecretKey|api[_-]?key|token)\s*[:]\s*[\][A-Za-z0-9/]{16,} . \ --include*.py --include*.js --include*.yaml --include*.json這個(gè) grep 只能兜住最粗心的情況正經(jīng)項(xiàng)目還是該上專門的密鑰掃描工具并且把.env之類文件提前寫進(jìn).gitignore。5.5 用腳本把巡檢做成自動(dòng)化手動(dòng)巡檢容易忘所以我寫了個(gè)小腳本放在本地每周一早上跑一次把關(guān)鍵指標(biāo)拉出來看一眼。這里貼個(gè)思路框架各平臺(tái) API 不同替換成對應(yīng) SDK 即可#!/usr/bin/env bash # 每周巡檢提醒磁盤、流量、到期時(shí)間、異常進(jìn)程 set -uo pipefail HOSTyour-server REPORT/tmp/weekly-check-$(date %F).txt { echo 磁盤 ssh $HOST df -h / df -i / echo 本月流量 ssh $HOST vnstat -m | tail -5 echo 高占用進(jìn)程 ssh $HOST ps aux --sort-%cpu | head -8 echo 異常外聯(lián)挖礦類常見特征 ssh $HOST ss -tunp | grep ESTAB | head -20 } $REPORT 21 grep -qiE 100%|No space $REPORT echo 警告磁盤可能已滿 echo 報(bào)告已生成$REPORT腳本本身不復(fù)雜價(jià)值在于把想起來才查變成固定時(shí)間自動(dòng)查。磁盤滿、CPU 被不明進(jìn)程吃滿、有異常外聯(lián)這三類是免費(fèi)機(jī)上最常見的問題一張報(bào)告全能看到。6. 免費(fèi)機(jī)的性能天花板與退場方式最后一章聊聊預(yù)期管理。免費(fèi)機(jī)不是縮水版的生產(chǎn)服務(wù)器它是夠你練手和跑輕量服務(wù)的資源認(rèn)清邊界比優(yōu)化技巧更重要。6.1 CPU 積分耗盡后會(huì)發(fā)生什么免費(fèi)機(jī)大概率是突發(fā)性能實(shí)例它的 CPU 不是隨時(shí)能跑滿而是有一個(gè)基準(zhǔn)線比如 20%加積分池。平時(shí)負(fù)載低的時(shí)候攢積分需要突發(fā)的時(shí)候消耗積分沖高。積分耗盡之后CPU 會(huì)被硬限制在基準(zhǔn)線表現(xiàn)出來就是機(jī)器沒掛SSH 能登但所有操作慢得像 PPT編譯一個(gè)包能跑十分鐘。這個(gè)機(jī)制最坑的地方在于它沒有明顯報(bào)錯(cuò)。你看到的是網(wǎng)站變慢了接口超時(shí)了本能反應(yīng)是去查代碼、查數(shù)據(jù)庫結(jié)果查半天發(fā)現(xiàn)是 CPU 被限了。所以在突發(fā)性能實(shí)例上第一排查動(dòng)作應(yīng)該是看 CPU 使用率和積分余額而不是翻代碼。避免的方法把常駐的高 CPU 任務(wù)編譯、轉(zhuǎn)碼、爬蟲、批量處理挪到本地或者臨時(shí)開一臺(tái)按量實(shí)例跑完就釋放常駐服務(wù)控制在低負(fù)載水平給關(guān)鍵任務(wù)加超時(shí)和重試別讓它卡死在那里耗積分。6.2 適合跑什么不適合跑什么我把免費(fèi)機(jī)的適用范圍整理成了一張表判斷標(biāo)準(zhǔn)就兩條能不能容忍中斷、會(huì)不會(huì)產(chǎn)生持續(xù)的公網(wǎng)流量。用途是否適合原因Linux 命令練習(xí)、環(huán)境搭建學(xué)習(xí)很適合中斷了重開就行個(gè)人筆記、靜態(tài)博客適合流量小可加緩存輕量 API 練手、定時(shí)任務(wù)適合負(fù)載低小型數(shù)據(jù)庫自己練習(xí)用謹(jǐn)慎內(nèi)存吃緊別存重要數(shù)據(jù)圖片/文件下載站不適合流量費(fèi)不可控視頻轉(zhuǎn)碼、持續(xù)高 CPU 任務(wù)不適合積分耗盡性能斷崖對外正式服務(wù)不適合到期中斷、無 SLA存放唯一一份重要數(shù)據(jù)絕對不適合到期釋放數(shù)據(jù)不會(huì)保留倒數(shù)第二條值得展開說。免費(fèi)資源沒有可用性承諾平臺(tái)可以因?yàn)榫S護(hù)、資源調(diào)整或者政策變更隨時(shí)回收。把唯一一份的數(shù)據(jù)放在上面等于把風(fēng)險(xiǎn)敞口開到最大。我見過有人把幾年的照片庫放在免費(fèi)機(jī)上到期忘了續(xù)機(jī)器釋放數(shù)據(jù)全沒。6.3 到期前的數(shù)據(jù)遷移與資源清理到期不是關(guān)機(jī)就完事而是一套完整動(dòng)作。我通常按這個(gè)順序做打包數(shù)據(jù)代碼從 Git 拉數(shù)據(jù)庫導(dǎo)出 SQL配置文件單獨(dú)打包證書別忘了校驗(yàn)完整性下載到本地后解壓、算個(gè)校驗(yàn)和確認(rèn)沒丟文件遷移到新環(huán)境如果換機(jī)器先在新機(jī)器上把服務(wù)跑通再下線舊的清理資源解綁彈性 IP → 刪除快照 → 刪除數(shù)據(jù)盤 → 釋放實(shí)例確認(rèn)賬單歸零第二天再看一眼費(fèi)用中心確認(rèn)沒有殘留的按量計(jì)費(fèi)# 打包前的標(biāo)準(zhǔn)動(dòng)作 mysqldump -u root -p --databases your_db /tmp/backup.sql tar -czf /tmp/site-$(date %F).tar.gz /var/www /etc/nginx /etc/ssl/private sha256sum /tmp/backup.sql /tmp/site-*.tar.gz # 傳到本地 scp useryour-ip:/tmp/backup.sql ./第 4 步的順序再強(qiáng)調(diào)一次先解綁、再刪除。資源之間是有依賴關(guān)系的實(shí)例還在的時(shí)候刪 IP 可能刪不掉實(shí)例刪了之后 IP 又變成閑置狀態(tài)繼續(xù)計(jì)費(fèi)。清理完去資源列表確認(rèn)一下看到全部資源為空才算干凈。最后分享一個(gè)我自己在用的判斷原則任何免費(fèi)資源只要它需要綁支付方式、需要實(shí)名、需要定期手動(dòng)維護(hù)那它的真實(shí)成本就不只是錢還包括你的注意力。所以我的做法是——免費(fèi)機(jī)只做一件事做完就釋放不要讓它長期掛在那里成為一個(gè)你偶爾想起來、又不敢徹底關(guān)掉的包袱。真需要一個(gè)長期穩(wěn)定的環(huán)境選一臺(tái)最便宜的包月小規(guī)格把不確定的按量計(jì)費(fèi)擋在外面反而更省心。