ป้ายกำกับ

แสดงบทความที่มีป้ายกำกับ Network แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ Network แสดงบทความทั้งหมด

วันพุธที่ 27 กรกฎาคม พ.ศ. 2559

Bridge setup for KVM

ช่วงนี้ได้ทดลองใช้งาน KVM บน Ubuntu เนื่องจากกำลังทดลองทำ Cluster เล็กๆสำหรับ Apache Cassandra จากเมื่อก่อนที่เคยใช้แต่ VirtualBox มาตลอด เพราะสะดวกดี ใช้ได้ทั้งบน Windows, OS X และ Linux พอมาลอง KVM ก็พบว่าการบริหารจัดการ VM ด้วย Virtual Machine Manager (VMM) ทำให้เราสะดวกมากขึ้น เนื่องจากผมก็ไม่ค่อยจะชอบจำ Command-line เท่าไรนัก และ VMM ก็สามารถ Remote ไปจัดการที่เครื่องใดก็ได้ในขณะที่ VirtualBox นั้น จะไม่มีเครื่องมือที่เป็น Remote มาให้ (มี RemoteBox อยู่แต่ไม่ได้ลองใช้)

หลังจากที่พยายามศึกษาการใช้งาน และทำการ Convert image ไฟล์จาก VDI Format ของ VirtualBox มาเป็น QCOW2 Format ของ Qemu อยู่พักใหญ่ เนื่องจากมีอยู่หลายไฟล์ และแต่ละไฟล์มีขนาดค่อนข้างใหญ่ ทำให้เนื้อที่ฮาร์ดดิสต์เต็ม เลยต้องจัดการข้อมูลเก่าๆอยู่นาน สุดท้ายก็ได้ทดลองรัน VM ขึ้นมาได้ แต่แล้วก็ติดปัญหาว่า VM ไม่สามารถมองเห็นจากภายนอกได้ เนื่องจาก VMM มี UI ให้เราสร้างแต่ Virtual Network ที่เป็น NAT หรือ Router เท่านั้น (เห็นบางแห่งแนะนำว่าเลือกเป็น Bridge ได้ แต่สำหรับ VMM บน Ubuntu 14.04 ที่ผมใช้อยู่ไม่มีเมนูให้เลือก) สุดท้ายก็เลยต้องลงมือทำด้วย Command-line ซึ่งก็เลยเป็นที่มาของการบันทึกนี้เพื่อกันลืมครับ

ขั้นตอน

1.ติดตั้ง bridge-utils
2.แก้ไขไฟล์ /etc/network/interfaces ซึ่งสำหรับกรณีที่ใช้ DHCP ของผมเป็นดังนี้ (ค่า bridge_ports ให้ใส่ชื่อ interface ของ LAN, ค่า post-up ใช้ในกรณีที่ DHCP แจก IP ตาม MAC Address ของ LAN)
auto lo
iface lo inet loopback

auto br0
iface br0 inet dhcp
    bridge_ports eth0
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0
    post-up ip link set br0 address f4:6d:04:08:f1:5f
3.แก้ไขไฟล์ /etc/sysctrl.conf ดังนี้
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
4.restart network ใหม่

หมายเหตุ 1

พบว่า UFW มี Bug(UFW blocks libvirt bridged traffic) ทำให้ Guest VM ไม่สามารถใช้งาน Bridge ได้ ซึ่งมีคนแนะนำให้สั่ง
sysctl -p /etc/sysctl.conf
แล้วจะทำให้ใช้งานได้ โดยเราสามารถเพิ่มคำสั่งนี้ไว้ใน /etc/rc.local เพื่อให้ทุกครั้งที่ boot เครื่องใหม่ก็จะใช้งานได้เป็นปกติ

หมายเหตุ 2

มีคนรายงานปัญหาว่า หากคำสั่ง sysctl -p /etc/sysctl.conf แล้วมี error ดังนี้
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: No such file or directory
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: No such file or directory
อาจเกิดจากการที่ module bridge ในบางกรณี ไม่สร้าง net.bridge.* ให้ ซึ่งเขาแนะนำให้ติดตั้ง module br_netfilter เพิ่ม โดยสั่ง
modprobe br_netfilter
หากใช้งานได้ ให้เพิ่มชื่อ br_netfilter ไว้ใน /etc/modules ก็จะใช้งานได้ โดยไม่ต้องสั่ง sysctl -p อีกต่อไป

ตรวจสอบ module br_netfilter ว่ามีหรือไม่ได้ด้วยคำสั่ง
 egrep -r -i "nf-filter" /lib/modules/$(uname -r)/kernel/net/*

อ้างอิง


วันอังคารที่ 17 ธันวาคม พ.ศ. 2556

CDN (Content Delivery Network) คืออะไร

CDN คืออะไร?

ความจริงคำว่า CDN มีมานานพอสมควรแล้ว แต่อาจจะไม่แพร่หลายเหมือนอย่างคำว่า Cloud ซึ่ง CDN นี้ ย่อมาจากคำว่า Content Delivery Network หรือบางท่านอาจจะเรียกว่า Content Distributed Network ความหมายสั้นๆตรงๆเลยก็คือ ระบบเครือข่ายที่จะทำหน้าที่ส่งข้อมูลให้ถึงผู้รับได้อย่างรวดเร็วโดยวิธีการกระจายเครื่องแม่ข่ายออกไปยังภูมิภาคต่างๆให้ไกล้กับผู้รับมากที่สุด เช่น เมื่อเราเปิดเว็บ Facebook ถ้าสังเกตข้อความแสดงสถานะการรอคอยข้อมูลด้านล่างของ Browser เราจะพบว่า แทนที่จะมีการดึงข้อมูลจาก www.facebook.com อย่างเดียว กลับมีการดึงข้อมูลมาจาก xxx.akamixx.net ซึ่งเป็น server ของบริษัท Akamai Technologies ที่ให้บริการ CDN ให้กับ Facebook นั่นเอง

แล้วมันยังไง?

หลายคนอาจจะสงสัยว่า แล้วเขาทำอย่างนั้นได้อย่างไร? คำตอบก็คือว่า จะมีการกระจายเครื่องแม่ข่ายออกไปตามภูมิภาคต่างๆ เช่น เว็บหลักอยู่ที่อเมริกา แต่มีการตั้งเครื่องแม่ข่ายกระจายไปยังประเทศอื่นๆ ไม่ว่าจะเป็น ญี่ปุ่น จีน อังกฤษ ออสเตรีย สิงคโปร์ เป็นต้น โดยจะมีการกระจายเนื้อหาที่เป็นแบบ static มาไว้บนเครื่องแม่ข่ายเหล่านี้ก่อน เช่น ไฟล์ภาพ ไฟล์วีดีโอคลิป ไฟล์ CSS และไฟล์ JavaScript เป็นต้น เมื่อมีการร้องขอข้อมูลใดๆไปยังเครื่องหลักที่ใช้ระบบ CDN การร้องขอนั้นก็จะถูก Re-Direct ไปยังเครื่องแม่ข่ายในระบบเคลือข่ายของ CDN ที่อยู่ไกล้ที่สุด ทำให้เราได้รับข้อมูลอย่างรวดเร็ว และลดภาระงานให้กับเครื่องหลักได้มาก นอกจากนี้ หากเครื่องใดรับภาระงานมากเกินไป ระบบก็สามารถกระจายภาระงานออกไปยังเครื่องแม่ข่ายอื่นๆที่อยู่ไกล้เคียงได้อย่างเหมาะสมอีกด้วย โดยที่เราแทบจะไม่รู้สึกเลยว่าข้อมูลนั้นมาจากไหน

ฟังดูแล้วมันเหมือน Cloud เลยหรือเปล่าล่ะครับ?
จะเรียกว่าใช่ก็ไม่เชิงครับ เอาเป็นว่า ระบบ Cloud Computing ที่เป็น Public Cloud ก็ใช้เทคโนโลยีนี้เป็นส่วนหนึ่งดีกว่าครับ เพราะระบบ Cloud Computing ยังมีอีกหลายๆเรื่องที่เป็นองค์ประกอบ ไว้วันหลังถ้าผมมีเวลาจะมาเขียนเล่าให้ฟังครับ