เดิมทีมีโปรเจ็กต์คงค้างที่ จะเขียนเนื้อหา เกี่ยวกับเรื่อง Infrastructure พอดีมีโปรเจ็กต์  ที่สืบทอดมาจากความคิดที่ว่าอยากจะ Visualize network analysis  ไล่ลองหาโปรแกรมที่ใช้งาน ดูท่าจะขนาดใหญ่เกินไป  สำหรับโปรเจ็กต์ ที่เราต้องการที่จะทำ  อีกทั้งตัวผมเองช่วงปีใหม่ไม่ได้ไหน จึงมานั่งเล่นกับโปรแกรมนี้ดู ที่จริงแล้วผมควรจะนำเอาข้อมูลกราฟ Network มาแสดง เช่น Facebook หรือ Twitter แต่เนื่องจากว่าผมพบปัญหาเรื่องการ generate friends data จาก facebook และ เรื่องเวลาที่ไม่ค่อยมีประกอบกับต้องนั่งดูระบบ Network อยู่พอดีเลยเกิดความคิดที่ว่าเราจะ Analyze network data ออกมาเป็นกราฟได้ไหมจึงเป็นที่มาให้เขียนบทความนี้ เลยจะขอเขียนสั้นๆ แทน พอให้เห็นเป็น Idea

ก่อนอื่นในมาแนะนำ Gephi กันนิดนึง  Gephi  เป็น ซอฟต์แวร์ที่ใช้สำหรับ แสดงผล ความเชื่อมโยงของ ข้อมูลแบบกราฟ (graph network) เป็นซอฟต์แวร์โอเพ่นซอร์ส พัฒนาโดยอาศัย Netbeans เป็นฐานในการพัฒนา (build on top Netbeans)  ซึ่งซอฟต์แวร์ที่ทำงานคล้ายๆ กัน จะมีดังนี้  ซึ่งผมจะอิงตามที่ผม เคยใช้งานนะครับ


Continue reading

Ansible เป็น configuration management tool ตัวนึง พัฒนาโดยใช้ Python ข้อดีของ Ansible คือมี structure และ configuration ที่ทำการเรียนรู้ได้ โดยไม่ยากนัก ขณะเดียวกัน ก็มีคนทำ template ไว้ให้ใช้แล้ว ค่อนข่างจะเยอะพอสมควร ซึ่งสามารถเข้าไปดูได้ที่ Ansible-galaxy สำหรับตอนนี้เราจะมาดูกัน จะนำเอา Ansible มาช่วยประยุกต์ใช้งาน System Administrator ได้อย่างไรบ้าง ในที่นี้คือ การเพิ่ม-ลบ SSH Public-key pair หรือ พูดให้เข้าใจง่ายๆ คือ การบริหารจัดการ SSH Public-key นั่นเอง อาทิเช่นเรา

กรณี เราต้องทำการเพิ่ม User หรือ Staff เข้าไปยัง Server ที่พนักงานคนนั้นต้องเข้าไปดูแล เช่นกัน หากพนักงานลาออก หรือ เปลี่ยนสายงาน เราก็ต้องมีการบริหารจัดการที่ดีตามนโยบายที่วางไว้ คือ การเพิก-ถอนสิทธิ ต่างๆ ในทรัพยากรขององค์กรออกไปด้วย ในที่นี้คือ SSH access ถ้าทรัพยากรที่เรามีเพียงแค่่ 1-2 เครื่อง คงไม่เป็นไรแต่ถ้าเกิดมากกว่าน้นล่ะ เช่น 10vm หรือ มากกว่า 50เครื่องขึ้นไป ไม่ใช่งานสนุก หรือ ประหยัดเวลาแน่ Configuration หรือ Ansible จะนำเข้ามาช่วยตรงนี้

ติดตั้ง Ansible กรณีนี้เป็นแบบรวบรัดนะครับ ผมติดตังผ่าน python package management.

apt-get install python-setuptools build-essentials

easy_install pip

pip install ansible


Continue reading

Serf เป็นเครื่องมือที่ช่วยให้ การจัดการ กับ ระบบคลัสเตอร์ทำได้ง่ายขึ้น  ทำงานโดยผ่าน GOSSIP โปรโตคอล ซึง Serf ถูกออกแบบมาเป็นโครงสร้างที่  ไม่ซับซ้อน, ใช้ทรัพยากรน้อย, ทำงานได้เร็ว และ ยืดหยุ่น อยากให้เปรียบเทียบกับ Hearbeat แม้ฟังก์ชั่นอาจจะไม่ตรงตัวนักแต่จะทำให้เข้าใจได้ง่ายกว่า Serf พัฒนาโดย HarshiCorp  ซึ่งเป็นคนพัฒนา Vagrant เขียนด้วย ภาษา Go (Golang)

สาเหตุที่ผมเลือกใช้ Serf ในการนำเอามาใช้งานคือ ต้องการหลีกเลี่ยงการออกแบบระบบให้กลายเป็น (Single point of failure) ขณะเดียวกัน ลดความยุ่งยากของระบบที่ทุกสิ่งทุกอย่างรวมอยู่ด้วยกัน (Centralized) นอกจากนั้นผมต้องการนำเอาระบบนี้มาใช้ใน Docker และ ขณะเดียวกันก็ลดความยุ่งยากของการ deployment ระบบ สรุปภาพรวมของความต้องการผมได้ดังนี้

  • หลีกเลี่ยง จุดตาย (Single point Of Failure)
  • หลีกเลี่ยง ระบบที่รวมอยู่ที่ศูนย์กลาง (De-centralized)
  • อยากได้การทำงานของ ระบบที่ไม่ซับซ้อน เพื่อง่ายต่อการทำความเข้าใจ หรือ การเรียนรู้  และ ง่ายต่อการติดตั้ง ปรับแต่ง
  • etcd  ต้องการ Server etcd ไม่งั้นจะคอย report ERROR ไม่สามารถเชื่อมต่อกับ Node Datacenter ได้
  • Zookeeper ระบบมีความซับซ้อน
  • Dooserd ดูจาก repository ไม่ค่อยมีการ update และ issue fix  มานานแล้วผมจึงใช้
  • Google Kubernates มีขนาดใหญ่ไปและผมต้องการระบบอะไร ที่มันมีความซับซ้อนน้อยที่สุด


Continue reading