0162 | ระบบถ่ายทอดวิดีโอที่รับคนได้แสนเจ็ด!!!

Sunday, July 7th, 2013 Posted in IP Network | No Comments »

ทีแรกว่าจะไม่เขียน บังเอิญมีคนยุ เลยจัดให้ซักหน่อย
(มัวแต่ลุ้นเพลิน ลืม cap หน้าจอ เลยไปจิ๊กมาจาก @KUTCHA_ มาอีกที)

บังเอิญช่วงนี้ Hormones กำลังดัง (รู้สึกว่า tie in เยอะจังแฮะ) ฉายตอนแรก (EP.0) ทาง gmmone.tv ไปแล้ว server ล่มในพริบตา เบื้องต้นทาง GMM One มาบอกว่า Server รองรับได้ 4,000 คนเท่านั้น… คนก็เลยเริ่มไปขวนขวายหาช่องทางดูทางเว็บอื่นกันใหญ่… สถิติเท่าที่สืบทราบมา มีคนดูรวมราวๆ 40,000 คน

จนเมื่อสัปดาห์ที่ผ่านมา (29 มิ.ย.) GMM เจรจากับ Google สำเร็จ จึงได้เปิดการดูออนไลน์ผ่าน YouTube Live ซึ่งมีโชว์ตัวเลขคนดูชัดเจนมาก สัปดาห์แรกเปิดซัดไป 140,000 ส่วนเมื่อครู่นี่ราวๆ 170,000 คนพร้อมกัน

ด้วยความที่เคยมีคนสนใจติดต่อมาว่าอยากทำระบบที่รับคนดูได้ราวๆ นี้เหมือนกันก็เลยเอามาคำนวณกันเล่นตรงนี้ละกันครับ

สิ่งที่ต้องมี

  • Server จำนวนมากพอ (server แรงๆ ซักตัวสามารถทำให้รองรับได้ราวๆ 15,000 คนพร้อมกันได้) — อันนี้อย่างถูก(มาก)ก็ราวๆ เครื่องละ 130,000 บาท Dual 6-core CPU Ram 64GB + 10Gbps Network
  • ค่า License Streaming Software (Wowza/Adobe FMS) — ถ้า Wowza ก็เครื่องละ 30,000 บาท
  • Bandwidth มากพอ (ขึ้นกับคุณภาพภาพที่ส่ง ถ้า 360p แบบที่ GMMone ใช้ก็ราวๆ คนละ 400Kbps) — เป็นค่าใช้จ่ายรายเดือน ถ้าซื้อตรงจาก IX ก็จะถูกหน่อย ราวๆ 30,000 บาทต่อเดือนต่อ 10Gbps
  • อุปกรณ์เครือข่าย (Switch) ที่รองรับ Traffic ขนาดนี้ได้ — หลักล้านครับ… หาของถูกมาใช้รับรองลากไม่รอดล่ม… Force10 ตัวที่รับได้เท่านี้ เคยไปดูราคามาก็ราวๆ 1,000,000 บาท แบบไม่เผื่อขยายด้วยนะ
  • Data center ที่รองรับ traffic ขนาดนี้ได้ — ต้องไปเช่าที่ที่ตึก CAT บางรักสถานเดียวฮะงานนี้ ตึกอื่นไม่น่ารอด

ไม่นับค่าใช้จ่ายจิปาถะ พวกค่าสายค่าไฟค่าอะไรพวกนี้ ก็จะต้องลงทุนครั้งแรกประมาณนี้

  • server 12 ตัว (รับคนดูได้ 15,000 * 12 = 180,000 คน) (130,000 * 12) = 1,560,000 บาท
  • ค่า License (30,000 * 12) = 360,000 บาท
  • ค่า Bandwidth (400 * 180000 = 72Gbps => ปัดเศษขึ้นไม่ต่ำกว่า 80Gbps) — 30,000 * 8 = 240,000 บาทต่อเดือน
  • ค่าอุปกรณ์ switch = 1,000,000

รวมงบลงทุนครั้งแรกประมาณ 3,160,000 บาท ค่า Bandwidth อีกเดือนละ 240,000 บาท ไหนจะค่าจ้างติดตั้งระบบ ค่าเช่าที่ ค่าไฟ ค่าจ้างคนดูแลระบบ โน่นนี่นั่นจิปาถะอีก รวมได้เผลอๆ จะถึงเดือนละห้าแสน..

ได้ใช้จริงสัปดาห์ละชั่วโมงเดียว…

คุ้มมากครับ :)

*** DISCLAIMER *** ตัวเลขที่คำนวณเป็นราคาคร่าวๆ ที่คำนวณแบบอนาถา ใช้ของมือ 1 ปนกับมือ 2 แล้วทำให้มันยังดูว่าถูกอยู่ ของจริงแพงกว่านี้แน่นอนครับ

Tags: , , , , , ,

0027 | ปัญหาโลกแตกกับ DNS

Thursday, July 24th, 2008 Posted in IP Network | 2 Comments »

ว่าไปก็เห็นจะโลกแตกจริงๆ แฮะ
กับปัญหาล้านแปด แต่ดั๊นมาเซตผิดอยู่ที่เดียวอะไรอย่างนี้
เลยกลายเป็น lookup ไม่ออกมั่ง ออกแต่ ip มั่วมั่ง อะไรพวกนี้บ่อยไปครับ

ก่อนอื่นก็ต้องมาไล่กันที่ระบบ Root DNS ก่อน

Tracing to icez.net[a] via I.ROOT-SERVERS.NET, maximum of 1 retries
I.ROOT-SERVERS.NET (192.36.148.17)
|\___ I.GTLD-SERVERS.net [net] (192.43.172.30)
|     |\___ ns6.thzhost.com [icez.net] (203.146.170.140) Got authoritative answer
|      \___ ns2.thzhost.com [icez.net] (203.146.129.182) Got authoritative answer
…..
|\___ K.GTLD-SERVERS.net [net] (192.52.178.30)
|     |\___ ns6.thzhost.com [icez.net] (203.146.170.140) (cached)
|      \___ ns2.thzhost.com [icez.net] (203.146.129.182) (cached)
\___ J.GTLD-SERVERS.net [net] (192.48.79.30)
|\___ ns6.thzhost.com [icez.net] (203.146.170.140) (cached)
\___ ns2.thzhost.com [icez.net] (203.146.129.182) (cached)

ns2.thzhost.com (203.146.129.182)       icez.net -> 203.146.129.182
ns6.thzhost.com (203.146.170.140)       icez.net -> 203.146.129.182

นี่แหละครับ วิธี lookup ของระบบ DNS
ไอ้เจ้า I.ROOT-SERVERS.NET นี่เป็น server ของ ICANN ครับ
ทำหน้าที่รองรับ DNS request ของระดับ TLD
คือเป็น authoritive zone ของ TLD ทุกอัน
หากเกิด TLD ใหม่ขึ้นมาก็มาถามที่นี่ได้ครับว่ามันชี้ไปที่ไหนต่อ
จริงๆ ROOT SERVERS นี่มีเยอะครับ แต่เผอิญว่า I.ROOT-SERVERS.NET มันอยู่ในไทย (ที่ กสท) ก็เลยใช้ตัวนี้ซะเลย

ลำดับต่อมา พอได้ DNS ของ TLD มาแล้ว ก็ไปถามต่อว่า domain เราอยู่ DNS ไหน
(จริงๆ มันถามแค่ที่เดียวนะครับ นี่พอดีใช้ tool ช่วยนิดหน่อย มันเลยขึ้นมาหมดเลย)
อย่างกรณี .com .net พวกนี้จะมี GTLD-SERVERS.NET ของ verisign เป็นผู้ดูแล
ของไทยก็เป็น THNIC ดูแลอยู่ อะไรประมาณนี้แหละครับ

ทีนี้ เวลาได้ “ชื่อ” ของ nameserver มาแล้วเนี่ย เซิฟเวอร์มันจะบอก “IP” มาให้ด้วยเลย
ตามที่เราได้ลงทะเบียน nameserver ไว้นั่นแหละครับ
นั่นหมายความว่า ไม่ใช่ว่าอยู่ดีๆ เราจะตั้ง nameserver ทั่วไปได้เลย
ยังไงก็ต้องลงทะเบียนกับผู้ให้บริการจดโดเมนก่อน
ถ้าเอา “ชื่อ” ของ nameserver ไป lookup ดูมันก็จะได้อย่างนี้ครับ

Tracing to ns2.thzhost.com[a] via I.ROOT-SERVERS.NET, maximum of 1 retries
I.ROOT-SERVERS.NET (192.36.148.17)
|\___ F.GTLD-SERVERS.NET [com] (192.35.51.30) Got answer
|     |\___ ns6.thzhost.com [thzhost.com] (203.146.170.140) Got authoritative answer
|      \___ ns2.thzhost.com [thzhost.com] (203.146.129.182) Got authoritative answer
|\___ E.GTLD-SERVERS.NET [com] (192.12.94.30) Got answer
|     |\___ ns6.thzhost.com [thzhost.com] (203.146.170.140) (cached)
|      \___ ns2.thzhost.com [thzhost.com] (203.146.129.182) (cached)
……
|\___ I.GTLD-SERVERS.NET [com] (192.43.172.30) Got answer

|     |\___ ns6.thzhost.com [thzhost.com] (203.146.170.140) (cached)
|      \___ ns2.thzhost.com [thzhost.com] (203.146.129.182) (cached)
|\___ H.GTLD-SERVERS.NET [com] (192.54.112.30) Got answer
|     |\___ ns6.thzhost.com [thzhost.com] (203.146.170.140) (cached)
|      \___ ns2.thzhost.com [thzhost.com] (203.146.129.182) (cached)
\___ G.GTLD-SERVERS.NET [com] (192.42.93.30) *

H.GTLD-SERVERS.NET (192.54.112.30)      ns2.thzhost.com -> 203.146.129.182
I.GTLD-SERVERS.NET (192.43.172.30)      ns2.thzhost.com -> 203.146.129.182
K.GTLD-SERVERS.NET (192.52.178.30)      ns2.thzhost.com -> 203.146.129.182
M.GTLD-SERVERS.NET (192.55.83.30)       ns2.thzhost.com -> 203.146.129.182
A.GTLD-SERVERS.NET (192.5.6.30)         ns2.thzhost.com -> 203.146.129.182
D.GTLD-SERVERS.NET (192.31.80.30)       ns2.thzhost.com -> 203.146.129.182
E.GTLD-SERVERS.NET (192.12.94.30)       ns2.thzhost.com -> 203.146.129.182
ns2.thzhost.com (203.146.129.182)       ns2.thzhost.com -> 203.146.129.182
ns6.thzhost.com (203.146.170.140)       ns2.thzhost.com -> 203.146.129.182
F.GTLD-SERVERS.NET (192.35.51.30)       ns2.thzhost.com -> 203.146.129.182

เห็นมั้ยครับว่า พอลงทะเบียน nameserver แล้ว
ไอ้ GTLD SERVERS แทนที่จะตอบว่า domain นี้มี dns อะไร
มันก็เลยตอบพ่วง IP มาให้ด้วยเลย

ตรงจุดนี้คือจุดที่ผิดพลาดกันอันดับแรกๆ เลยครับ
ก็คือ สมมติ domain icez.net ชี้ไปที่ ns2.thzhost.com กับ ns6.thzhost.com
แต่ใน domain thzhost.com ไม่มี record ของ ns2.thzhost.com กับ ns6.thzhost.com
ก็อาจทำให้ไม่สามารถ lookup ได้ เพราะ dns บางตัวจะไม่เอา ip มาจาก gtld-servers คือจะไป lookup หาเองตรงๆ
แล้วมันหา ip ของ nameserver ไม่เจอ หรือ IP ไม่ตรงกันกับที่ลงทะเบียนไว้ ก็เน่าครับ

———————————————

มากันที่จุดที่สอง: ว่าด้วย “NS record”
เหมือนจะง่ายครับ
แค่ชี้ใน domain ให้ตรงกับที่ lookup ขึ้นมาได้
อย่างของ icez.net ก็คือ ns2.thzhost.com กับ ns6.thzhost.com
ก็เข้าไปตั้งค่าใน DNS Server ตามนี้เลยครับ

icez.net. IN NS ns2.thzhost.com.
icez.net. IN NS ns6.thzhost.com.

———————————————

จุดที่สาม: IP ของ nameserver
นอกจากที่เราไปลงทะเบียน nameserver ไว้กับที่จดโดเมนแล้ว
เราก็ต้องมาเซตที่เครื่อง dns server เราด้วยครับ
ns2.thzhost.com กับ ns6.thzhost.com คือ subdomain ของ domain thzhost.com
ก็เข้าไปที่ DNS Server ของ thzhost.com
ไปเพิ่ม record ตามนี้ครับ

ns2 IN A 203.146.129.182
ns6 IN A 203.146.170.140

———————————————

จบ เห้อ ยาวดีจัง ไม่ได้เขียนอะไรยาวๆ แบบนี้มาพักนึงและ
ไม่รู้เรื่องอย่าว่ากันนะครับ (ฮา) เขียนตอนเช้าก็เงี้ย

Tags: ,