• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Webconf2013-非典型貧窮網站維運經驗分享
 

Webconf2013-非典型貧窮網站維運經驗分享

on

  • 9,703 views

http://www.webconf.tw/program.html

http://www.webconf.tw/program.html

Statistics

Views

Total Views
9,703
Views on SlideShare
6,838
Embed Views
2,865

Actions

Likes
51
Downloads
162
Comments
0

11 Embeds 2,865

http://deathhell1121.blogspot.tw 2720
http://outcircle.com 67
http://www.plurk.com 28
https://twitter.com 23
http://tweetedtimes.com 10
http://blog.wingzero.tw 5
http://blog.sahsu.mobi 4
http://outcircle.dev 3
http://deathhell1121.blogspot.fr 2
http://deathhell1121.blogspot.com 2
http://deathhell1121.blogspot.hk 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Webconf2013-非典型貧窮網站維運經驗分享 Webconf2013-非典型貧窮網站維運經驗分享 Presentation Transcript

    • 在家也能架出⼤大網站- ⾮非典型精實貧窮網站維運經驗 分享 慕凡(@ryudoawaru)於WebConf2013 2013/01/13 113年1月13⽇日星期⽇日 1
    • About Me 213年1月13⽇日星期⽇日 2
    • 慕凡 (ryudo) @ryudoawaru 313年1月13⽇日星期⽇日 3
    • 遊戲業10年 413年1月13⽇日星期⽇日 4
    • 1996 http://goo.gl/m2Xga 513年1月13⽇日星期⽇日 5
    • 2006 http://hbo.x-legend.com.tw 613年1月13⽇日星期⽇日 6
    • roles • Game System Designer • Executive Producer • Release Manager • DB Tool Programmer 713年1月13⽇日星期⽇日 7
    • 2007轉職 813年1月13⽇日星期⽇日 8
    • 網站創業者 913年1月13⽇日星期⽇日 9
    • Tomlan軟體⼯工作室 • http://www.tomlan.tw • Founded on 2007.03 • 專⻑⾧長為以論壇(Discuz!)為主體的社群系 統 1013年1月13⽇日星期⽇日 10
    • 旗下網站 1113年1月13⽇日星期⽇日 11
    • http://www.freebbs.tw 1213年1月13⽇日星期⽇日 12
    • http://www.gameclub.tw 1313年1月13⽇日星期⽇日 13
    • freebbs.com.tw 和我們無關 1413年1月13⽇日星期⽇日 14
    • 6 years 1513年1月13⽇日星期⽇日 15
    • Organize with 1613年1月13⽇日星期⽇日 16
    • 順帶⼀一提 1713年1月13⽇日星期⽇日 17
    • 謙虛的⼈人也可以學Rails 1813年1月13⽇日星期⽇日 18
    • Agendas • 為何要在家架網站 • 在家架網站的細節 • 頻寬 • 硬體 • 軟體 • 其它好⽤用的服務 1913年1月13⽇日星期⽇日 19
    • Why Self-Hosting? 2013年1月13⽇日星期⽇日 20
    • 成本控制 2113年1月13⽇日星期⽇日 21
    • 雲端 V.S. 在家架站 成本⽐比較 2213年1月13⽇日星期⽇日 22
    • ⺫⽬目標網站 • 網站類型:論壇社群 • 訪客:Unique Visitor 40,000+/day • 月流量: • 主站:800GB • 圖庫:1.4TB 2313年1月13⽇日星期⽇日 23
    • 如果在AWS(JP) • 1 EC2 Large Instance • 月流量約800GB • 1 S3 Storage • 月流量約1.4TB • 1 RDS(Large) for MySQL 2413年1月13⽇日星期⽇日 24
    • 28,000NTD/月 2513年1月13⽇日星期⽇日 25
    • 轉職游⺠民確定 2613年1月13⽇日星期⽇日 26
    • 同樣的條件⾃自⼰己架站 2713年1月13⽇日星期⽇日 27
    • ⼀一個月不到5,000 價格 折舊期間/月 ⼀一年費⽤用 伺服器 NT$27,000 36 NT$9,000 42U機櫃 NT$12,000 60 NT$2,400 HUB NT$5,500 36 NT$1,833 IPKVM NT$23,000 36 NT$7,667 2U機架UPS NT$23,000 36 NT$7,667 網路費 20M/月 NT$2,000n/a NT$24,000 電費/月 NT$300n/a NT$3,600 ⼩小計 NT$56,167 2813年1月13⽇日星期⽇日 28
    • 成本結構 1. 經常性開銷 1. 網路費 2. 電費 3. 房租(如果有) 2. ⼀一次性費⽤用 1. 硬體設備 2913年1月13⽇日星期⽇日 29
    • 頻寬費⽤用 3013年1月13⽇日星期⽇日 30
    • 便宜的頻寬 就像折凳的奧妙之處⼀一樣 3113年1月13⽇日星期⽇日 31
    • 光世代固定制 • 20M上傳(含)以下幾乎所有⼈人都可以裝 • 40M以上需要有FTTH(光化箱)到府 http://fttb.hinet.net/3ip/fttx_rates.html 3213年1月13⽇日星期⽇日 32
    • 硬體 • 必要的 • 伺服器 • HUB • UPS • 不⼀一定要的 • IP-KVM • 機櫃 • 遠端電源管理 • NAS 3313年1月13⽇日星期⽇日 33
    • Server 3413年1月13⽇日星期⽇日 34
    • 安靜 V.S.效能 3513年1月13⽇日星期⽇日 35
    • Home Server要點 • 省空間 • 安靜/低溫 • 放在家不能太吵或太熱 • 不要外接顯卡 • 平均的效能 • 主流4核⼼心以上CPU • ⾼高速I/O 3613年1月13⽇日星期⽇日 36
    • 候選清單 • XPC • Mac Mini • ⼩小型塔式品牌Server • ⾃自組 3713年1月13⽇日星期⽇日 37
    • 不考慮機架Server (因為太吵) 3813年1月13⽇日星期⽇日 38
    • XPC 3913年1月13⽇日星期⽇日 39
    • XPC-成本 • 準系統:內含主機板/電源/機殼 • 需要購買: • CPU • RAM • 硬碟 4013年1月13⽇日星期⽇日 40
    • XPC-優點 • ⾮非常耐⽤用(個⼈人經驗) • 擴充性/效能與成本的平衡選擇 • 意外安靜的POWER與熱導管系統 • 最⼩小Size可以插四條RAM的選擇 • 幾乎所有機型都有內顯 4113年1月13⽇日星期⽇日 41
    • XPC-缺點 • BIOS寫的不太好 • 維修服務品質低落 4213年1月13⽇日星期⽇日 42
    • Mac Mini 4313年1月13⽇日星期⽇日 43
    • Mac Mini-優點 • 最⼩小體積 • Apple品質保證 • 終極的靜⾳音 4413年1月13⽇日星期⽇日 44
    • Mac Mini-缺點 • 低(⾼高貴)擴充性,RAM只有兩條 • 總體持有成本⽐比XPC貴約5~7,000 • 改裝SSD需⼿手⼯工或找店家 • CPU頻率較低(2.3 v.s. 3.4) • 改裝Linux系OS需調整(http://goo.gl/ cEDw2) 4513年1月13⽇日星期⽇日 45
    • ⼩小型塔式品牌Server 4613年1月13⽇日星期⽇日 46
    • Mini Tower Server-優點 • Micro-ATX機殼(約2台XPC) • 伺服器規格,穩定性可期待 • 考量靜⾳音與持續運作的散熱之設計 • 內建雙網卡/硬碟熱抽換模組/獨⽴立顯⽰示 • 價格平⺠民化,可插⼀一般RAM 4713年1月13⽇日星期⽇日 47
    • Mini Tower Server-缺點 • 相對佔空間 • 零組件相容性問題 4813年1月13⽇日星期⽇日 48
    • DIY主機 4913年1月13⽇日星期⽇日 49
    • DIY-優點 • 對成本完全控制 • 100%的⾃自訂性 • 享受(?)HomeBrew的快感 • 便宜組件的穩定性也不賴 5013年1月13⽇日星期⽇日 50
    • DIY-缺點 • 組合複雜 • 相容性問題不少 • 散熱與降噪不易處理 • 要⾃自⼰己抓問題 5113年1月13⽇日星期⽇日 51
    • ⽐比較表 Mac 直⽴立 XPC mini Server $ 便宜 最貴 有點貴 靜⾳音 安靜 超安靜 普通 散熱 普通 普通 最好 佔空間 ⼩小 最⼩小 ⼤大 效能 ⾼高 最低 ⾼高 擴充性 中 無 ⾼高 穩定性 OK OK 最⾼高 5213年1月13⽇日星期⽇日 52
    • 其它硬體注意事項 5313年1月13⽇日星期⽇日 53
    • 絕對不要裝家⽤用級硬 碟在你的Server上 (備份碟除外) 5413年1月13⽇日星期⽇日 54
    • 企業級硬碟 • WD:暴⻯⿓龍/RE系列 • Seagate:ConstellationCS/ES • Hitachi/Toshiba:就叫企業級 • 所有SAS硬碟 5513年1月13⽇日星期⽇日 55
    • 便宜安全⾼高效⽅方案: 拆機SAS硬碟+低價 SAS Raid卡 5613年1月13⽇日星期⽇日 56
    • 永遠不要⽤用主機板上 的fakeRaid 5713年1月13⽇日星期⽇日 57
    • 其它硬體 5813年1月13⽇日星期⽇日 58
    • IP-KVM 5913年1月13⽇日星期⽇日 59
    • IP-POWER 6013年1月13⽇日星期⽇日 60
    • 機櫃 6113年1月13⽇日星期⽇日 61
    • NAS 6213年1月13⽇日星期⽇日 62
    • SOFTWARE 6313年1月13⽇日星期⽇日 63
    • 沒有要講的 • 程式語⾔言 • Framework • OS / Distribution 的選擇 6413年1月13⽇日星期⽇日 64
    • 要講的 • Web Server • DB(RDBMS) • 檔案系統與備份策略 • 網路攻擊的應對 6513年1月13⽇日星期⽇日 65
    • WEB Server 6613年1月13⽇日星期⽇日 66
    • 個⼈人經驗 • 3年Apache(2.2 Worker MPM) • Rails⽤用Mongrel + mod_proxy(前期) / Passenger • 2年Nginx • PHP 5.3 FPM + FastCGI • Rails⽤用Passenger/Thin 6713年1月13⽇日星期⽇日 67
    • APACHE 6813年1月13⽇日星期⽇日 68
    • 易上⼿手 (套件管理增加功能便利) 6913年1月13⽇日星期⽇日 69
    • 模組多 (裝模組不⽤用重編全部) 7013年1月13⽇日星期⽇日 70
    • ⼤大家都愛.htaccess (修改不⽤用重開) 7113年1月13⽇日星期⽇日 71
    • 功能包⼭山包海 (幾乎不⽤用開別的Daemon) 7213年1月13⽇日星期⽇日 72
    • 靜態檔案效能低落 (和Nginx⽐比) 7313年1月13⽇日星期⽇日 73
    • Proxy效能低落 (和Nginx⽐比) 7413年1月13⽇日星期⽇日 74
    • 重啟時間⻑⾧長 (連線數很多時) 7513年1月13⽇日星期⽇日 75
    • 重點:⼀一定不要⽤用 Prefork 7613年1月13⽇日星期⽇日 76
    • Nginx 7713年1月13⽇日星期⽇日 77
    • 靜態檔案速度爆快 7813年1月13⽇日星期⽇日 78
    • 需要調整的選項不多 (和Apache⽐比) 7913年1月13⽇日星期⽇日 79
    • 添加功能需要重編譯 8013年1月13⽇日星期⽇日 80
    • 例:增加Passenger #!/bin/bash cd $PASSENGER_ROOT rake nginx make clean ./configure --prefix=/usr/local/nginx --with-http_ssl_module --add- module=$PASSENGER_ROOT/ext/nginx 8113年1月13⽇日星期⽇日 81
    • 改設定需要重開或reload 8213年1月13⽇日星期⽇日 82
    • php需要另外設定 apache或fpm (framework需特定rewrite rule) 8313年1月13⽇日星期⽇日 83
    • RewriteRule和Apache不太⼀一樣 (不難學習) 8413年1月13⽇日星期⽇日 84
    • ⼀一些⼩小技巧 8513年1月13⽇日星期⽇日 85
    • 將靜態檔案拆到不同 VirtualHost (針對單⾴頁⾼高request數) 8613年1月13⽇日星期⽇日 86
    • ⽤用X-Sendfile或 SecureLink做權限控管 (避免無謂消耗後端程式資源) 8713年1月13⽇日星期⽇日 87
    • Secure Link Nginx:HttpSecureLinkModule Apache:mod_auth_token 8813年1月13⽇日星期⽇日 88
    • URL加料做驗證 md5(密鑰+時間撮記+檔名+IP) /uri-prefix/$token/$timestamp-in-hex/rel-path /downloads/dee0ed6174a894113d5e8f6c98f0e92b/ 43eaf9c5/file_to_protect.txt $token為預先設定的AuthTokenSecret加上檔名與時 間撮記後md5加密⽽而成, 具有時效性 8913年1月13⽇日星期⽇日 89
    • 案例-線上影視串流服務 • 配合H.264模組, 無需外部Media Server • 無需⽤用後端程式輸出 • User在看到連結後該連結極短時間內即 失效, 故user無法下載檔案. 9013年1月13⽇日星期⽇日 90
    • SQL-RDBMS • MySQL • PostgreSQL 9113年1月13⽇日星期⽇日 91
    • MySQL 9213年1月13⽇日星期⽇日 92
    • ⼀一般Storage Engine • MyISAM • Innodb 9313年1月13⽇日星期⽇日 93
    • MyISAM的問題 • 資料稍⼤大時效能低落 • 沒有ACID(Transaction) • 常常需要Repair table(data may lose) • 備份時會卡住全DB 9413年1月13⽇日星期⽇日 94
    • MyISAM的便利性 • DB較⼩小時效能⾼高 • ⺫⽬目錄即DB,可攜性⾼高 • 需要調整的選項較少 9513年1月13⽇日星期⽇日 95
    • InnoDB 9613年1月13⽇日星期⽇日 96
    • 參數調整很重要 9713年1月13⽇日星期⽇日 97
    • Always set innodb_buffer_pool_size >= DB size (RAM is very cheap now) 9813年1月13⽇日星期⽇日 98
    • PostgreSQL (別名:Oracle開源版) 9913年1月13⽇日星期⽇日 99
    • Much Stabler 10013年1月13⽇日星期⽇日 100
    • 某線上遊戲(2006) • 使⽤用版本:7.2(10 years+ ) • 同時上線⼈人數:20k+ • 程式的杯具:射⼀一⽀支箭寫⼀一次DB • 程式掛了,但DB還活著 10113年1月13⽇日星期⽇日 101
    • 友善的授權條款(MIT) 10213年1月13⽇日星期⽇日 102
    • 完整的現代化RDBMS功能 (View/Trigger/Stored Procedure) 10313年1月13⽇日星期⽇日 103
    • Transactional DDL (ALTER TABLE等可rollback,MySQL不可) 10413年1月13⽇日星期⽇日 104
    • 完整字串/加密function (base64/md5...etc) 10513年1月13⽇日星期⽇日 105
    • 內建完整全⽂文檢索功能 (中⽂文斷詞可能) 10613年1月13⽇日星期⽇日 106
    • Schema Namespace (適⽤用於Multi-Tenancy架構應⽤用) 10713年1月13⽇日星期⽇日 107
    • 知名使⽤用機構 • NASA • Instagram • NTT • Skype • IMDB 10813年1月13⽇日星期⽇日 108
    • 與MySQL⽐比較 (http://goo.gl/uWgil) 10913年1月13⽇日星期⽇日 109
    • File System(Linux) 11013年1月13⽇日星期⽇日 110
    • EXT家族 • 通⽤用性⼯工具⽀支援 • 多數套件預設使⽤用 • 平衡的效能 • 可容納檔案數⼩小於xfs 11113年1月13⽇日星期⽇日 111
    • XFS • ⾃自成⼀一體的⼯工具體系 • ⾼高檔案承載數 • 需花時間學習⼯工具⽤用法 • 中⽂文資源較少 11213年1月13⽇日星期⽇日 112
    • LVM 11313年1月13⽇日星期⽇日 113
    • What is LVM?(from⿃鳥哥) LVM 的全名是 Logical Volume Manager,中⽂文可 以翻譯作邏輯捲軸管理員。之所以稱為『捲 軸』可能是因為可以將 filesystem 像捲軸⼀一樣 伸⻑⾧長或縮短之故吧!LVM 的作法是將幾個實體 的 partitions (或 disk) 透過軟體組合成為⼀一塊看 起來是獨⽴立的⼤大磁碟 (VG) ,然後將這塊⼤大磁 碟再經過分割成為可使⽤用分割槽 (LV), 最終就 能夠掛載使⽤用了。 11413年1月13⽇日星期⽇日 114
    • Everyone should use LVM. 11513年1月13⽇日星期⽇日 115
    • 分享:Snapshot備份法 (from: 我是ricky⼤大⼤大) 11613年1月13⽇日星期⽇日 116
    • 流程 1. 停⽌止所有服務 2. make & mount LVM snapshot 3. 啟動所有服務 4. ⽤用snapshot partition的資料進⾏行備份 5. umount & delete snapshot partition 6. 收⼯工 11713年1月13⽇日星期⽇日 117
    • Example code #!/bin/bash ####STOP  services##################### /etc/init.d/nginx  stop /etc/init.d/php-­‐fpm  stop /etc/init.d/mongod  stop /etc/init.d/mysqld  stop ####Make  &  mount  snapshot  partition### /sbin/lvcreate  -­‐l  350  -­‐s  -­‐n  DATASNAP  /dev/VG1/DATA /bin/mount  /dev/VG1/DATASNAP  /mnt/DATASNAP ####Start  services#################### /etc/init.d/mongod  start /etc/init.d/mysqld  start /etc/init.d/php-­‐fpm  start /etc/init.d/nginx  start ####Backup  Process#################### ..... ####umount  &  remove  partition######### /bin/umount  /mnt/DATASNAP /sbin/lvremove  -­‐f  /dev/VG1/DATASNAP 11813年1月13⽇日星期⽇日 118
    • 優點 • 可適⽤用所有組合 • 停機時間⼩小於10秒 • 可獲得完整分割區備份 11913年1月13⽇日星期⽇日 119
    • 網路攻擊防範 (別名:⼈人體防⽕火牆訓練養成中⼼心) 12013年1月13⽇日星期⽇日 120
    • ⾃自建主機最⼤大挑戰 12113年1月13⽇日星期⽇日 121
    • 攻擊者的⺫⽬目的 • $$$$$ •爽 • 純研究 • 攻擊和網站有關的特定對象 12213年1月13⽇日星期⽇日 122
    • 概念:資源對資源的 戰爭 12313年1月13⽇日星期⽇日 123
    • 不會有真正有效的辦法 除⾮非 12413年1月13⽇日星期⽇日 124
    • 唯⼀一可以確定的是 12513年1月13⽇日星期⽇日 125
    • 讓攻擊⼿手知道你不好 惹, 要花很多成本攻擊 你, 知難⽽而退 12613年1月13⽇日星期⽇日 126
    • 攻擊⽅方式分類 • 癱瘓服務 • 針對程式弱點 • 讓系統負載暴衝 • 塞爆頻寬 • SYN_FLOOD • DDOS 12713年1月13⽇日星期⽇日 127
    • 針對程式弱點的攻擊 • 好發於: • Multi-Tenancy式系統(BSP/FSP...) • 廣泛被⼤大眾使⽤用的系統 • 具有歷史共業的系統 • 完全⾃自製系統通常不會有此問題 • 通常只能⽤用改程式處理 • 短期的防堵也是⼀一種⽅方法 12813年1月13⽇日星期⽇日 128
    • 塞爆頻寬的攻擊 • 後備頻寬⾮非常重要 • 問題在找出該封堵的IP 12913年1月13⽇日星期⽇日 129
    • 處理流程 1. 搜尋log檔 2. 建⽴立scan log流程 3. 執⾏行scan log流程,產⽣生問題IP清單 4. 將問題IP加到iptables的封堵清單 5. restart iptables 6. 將3-5變成⾃自動執⾏行 13013年1月13⽇日星期⽇日 130
    • scan log⽅方式 • ⽤用tail看log找出怪異之處 • 異常快速增⻑⾧長的request • hostname異常的request • 純ip request • 無agent或奇怪agent的request 13113年1月13⽇日星期⽇日 131
    • 重導virtualhost (nginx)    server{        server_name  _;        root  /var/www/html;        access_log  logs/DDOS-­‐access.log  main;        error_log  /dev/error.log;        return  400;    } 13213年1月13⽇日星期⽇日 132
    • 終極絕招-阻擋國家IP xt_geoip 13313年1月13⽇日星期⽇日 133
    • xt_geoip • part of xtables-addons • iptables addon • need kernel 2.6+ • http://goo.gl/NoqRh 13413年1月13⽇日星期⽇日 134
    • Why xt_geoip • 攻擊IP(⾁肉雞)幾乎全部來⾃自外國 • 中國佔90% • 東歐國家 • 中東國家 • 簡單⽽而粗暴(但是有效)的⽅方法 • ⼀一⾏行iptables設定封堵⼀一整國 13513年1月13⽇日星期⽇日 135
    • 好⽤用省錢的服務 13613年1月13⽇日星期⽇日 136
    • KDDI CloudCore VPS 13713年1月13⽇日星期⽇日 137
    • 純iaas,無其它功能 13813年1月13⽇日星期⽇日 138
    • 難以置信的超低價 13913年1月13⽇日星期⽇日 139
    • 不⽤用流量計費, 單⼀一規 格(擴充不可) 14013年1月13⽇日星期⽇日 140
    • 缺乏管理功能與圖表 14113年1月13⽇日星期⽇日 141
    • 令⼈人安⼼心的ping值(50 出頭) 14213年1月13⽇日星期⽇日 142
    • 不保證Uptime (其實很可靠) 14313年1月13⽇日星期⽇日 143
    • 開發者⽀支援制度 (淚) 14413年1月13⽇日星期⽇日 144
    • imgur 14513年1月13⽇日星期⽇日 145
    • imgur • 經實驗證明真正不限流量圖庫 • 限制⽅方式為每⼩小時上傳量 • 具後端上傳的API • 商業使⽤用需付費(條款限制) • 不可思議的低價 14613年1月13⽇日星期⽇日 146
    • End (Any qustion?) 14713年1月13⽇日星期⽇日 147
    • 題外話 14813年1月13⽇日星期⽇日 148
    • 公會網正在尋求合作 經營的夥伴 14913年1月13⽇日星期⽇日 149
    • 番外篇 世⼈人對雲端的誤解 15013年1月13⽇日星期⽇日 150
    • 以下觀點可能會包含 部份或全部的偏⾒見 (歡迎提出指正或疑問) 15113年1月13⽇日星期⽇日 151
    • ⼀一般對雲端的認知 1. 雲端⽐比較省錢 2. 雲端⽐比較省⼒力 3. 雲端⽐比較穩定 15213年1月13⽇日星期⽇日 152
    • 認知⼆二:雲端省⼒力論 由於雲端(尤其是Paas類服務 如Heroku/EngineYard)已經 幫你設定好, 你所做的就是去 開機器或是設定dyno數. 15313年1月13⽇日星期⽇日 153
    • 等價交換原則 15413年1月13⽇日星期⽇日 154
    • 等價交換原則 • iaas服務:只是給你⼀一台灌好OS的虛擬機 • Paas服務:給你的越多, 限制的也越多 • 第三⽅方服務:⽤用的越多, 花的$$越多 • ⽣生態圈綁定問題 15513年1月13⽇日星期⽇日 155
    • 認知三:雲端穩定論 雲端是別⼈人設定好的, 硬體不 會壞掉所以⽐比較穩定. 15613年1月13⽇日星期⽇日 156
    • 關鍵因素:第三⽅方服務 15713年1月13⽇日星期⽇日 157