ตอนที่ 1 : บันทึกการอบรม Cassandra for & — ติดตั้ง Cassandra
เป็น Course ที่เต็มเร็วมากเพราะราคาแค่ 3xx บาท (มีแถมเลี้ยงข้าว + น้ำ+ กาแฟ O_o อีก) ซึ่งจัดโดยคุณรูฟ คราวนี้่โชคดีจองทัน แต่ดันไปสายอีกทำให้ Concept อาจจะไม่แน่นเท่าไหร่ แต่ก็อยากขอบันทึกการทำ Lab ไว้เอาไว้กันลืม และเผื่อเป็นประโยชน์ให้คนอื่นที่ไม่มีโอกาสมาอบรมได้ลองทำตามดูเพื่อ Idea ในการนำไปต่อยอดได้ครับ โดย Class นี้ถือว่าเนื้อหาแน่นมากจนมีคนบอกว่า Course ราคา 300 สอน 30,000 แถมยังใช้วิทยากรอีกตั้ง 3 คน คือ Pitsanu Swangpheaw , Kajornthep Piyanun และ น้องยิ้ม (จำได้แต่ชื่อสาวๆ ^_^) เริ่มเลยนะครับ ..
ก่อนเริ่ม
Cassandra เป็น NoSQL Database ชนิดหนึ่ง ซึ่งกระจายการเก็บข้อมูลไว้หลายๆ Node เป็นสถาปัตยกรรมแบบ Masterless คือไม่มี node ที่ทำหน้าที่เป็น Master หรือ Slave เลย โดยแต่ละ Node จะแอบคุยกันเอง(ผ่าน Gossip protocol) เมื่อเราต้องการเพิ่ม Node เข้ามาใหม่ ก็เพียงทำการตั้งค่า Seed ไปยัง Node ใดๆ ก็ได้ใน Cluster แค่นี้ก็เรียบร้อย ข้อมูลก็จะทำการ Sync data ไปเก็บไว้ที่แต่ละ Node ข้อดีคือเมื่อข้อมูลกระจายกันเก็บ เวลาอ่านจะ “อ่านได้รวดเร็ว” รวมถึงข้อมูลก็จะมีสำเนาเก็บไว้ที่หลายๆ node ทำให้ข้อมูลไม่สูญหายถ้า node fail ไปบาง node (no single point of failure)
เราสามารถจะระบุการจำนวนสำเนาการเก็บ Data นั้นเรียกว่า Replication Factor ซึ่งจากรูปตัวอย่างมีค่าเป็น “1” ดังนั้นข้อมูลจึงถูกแบ่งเก็บ 4 Node ที่ Node ละ 25 % แต่ถ้า Replication Factor = 2 จำนวน Data ก็จะถูกสำเนา 2 ชุด = 200 % ดังนั้น Data แต่ละ node ก็จะถูกแบ่งเก็บชุดละ 50% (4 x 50 = 200%)
จะเห็นได้ว่าการเป็น Masterless นั้น Node แต่ละตัวมีความ “สำคัญเท่าเทียมกัน” ทั้งหมด ดังนั้นการที่ Client จะต่อเข้ามาดึง Data ก็สามารถเชื่อมเข้าที่ Node ไหนๆ ก็ได้ใน Cluster โดย Node ที่ถูก Client เชื่อมต่อนั้นเราจะ Node นั้นว่า Coordinator (ดังแสดงในรูปที่ 2) ซึ่งการกระทำใดๆ กับ Data นั้นเราจะมี Consistency level มาควบคุมเพื่อยืนยันว่า Data ที่ได้มานั้นถูกต้อง โดยอธิบายคร่าวๆ คือ ถ้า Consistency level = 2 นั่นหมายความว่าต้องมี 2 node ใน Cluster Confirm การกระทำนั้นๆ
1. เตรียม Software
ต่อไปจะเริ่ม Lab แล้วนะครับ Lab เราจะขออนุญาตใช้ Docker เพื่อควบคุมให้ Environment เหมือนกัน เพื่อง่ายต่อการทำตาม Lab โดยต้องติดตั้ง Docker และเตรียมเครื่อง (กรณีที่ยังไม่มี) -> ทำตามที่นี่ ได้เลยครับ ซึ่งขั้นตอนใน Lab จะสอนติดตั้ง Docker และเตรียม images ที่สร้างจาก Ubuntu 14 รวมถึงลง Java 8
จบขั้นตอนนี้ผมได้ Save Docker image ไว้เผื่ออยากข้ามไปขั้นตอนต่อไปเลย
docker image → drtan/ubuntu-lab:java8
2. ติดตั้ง Software ที่เกี่ยวข้อง
Run Docker Container ที่ได้จากการเตรียมในขั้นตอนที่ 1 โดยเปิด Dos Prompt แล้ว Run Docker ด้วย command ดังนี้
docker run -d -p 2222:22 -p 5000:5000 --name ubuntu drtan/ubuntu-lab:java8
จากนั้นให้ทำการ SSH ไปยัง Docker Container ด้วย
Host IP = (ในที่นี้คือ 10.0.75.1)
Port: 2222
user: tan , password : tan
แล้วเข้า shell command เพื่อ ติดตั้ง Curl
sudo apt-get install curl
ติดตั้ง Python
sudo apt install -y python3-pip
3. ติดตั้ง Cassandra
ใน Lab นี้เราจะใช้ Cassandra Version 3.9 โดย Download มาจาก
wget http://archive.apache.org/dist/cassandra/3.9/apache-cassandra-3.9-bin.tar.gz
แตก file
tar -xvf apache-cassandra-3.9-bin.tar.gz
แก้ไข configuration file “cassandra.yaml” ของ Cassandra
vi ~/apache-cassandra-3.9/conf/cassandra.yaml
ตั้งชื่อ Cassandra Cluster
cluster_name: ‘Geeky Cluster’
Comment บรรทัด listen_address และ ตั้ง listen_interface เป็น eth0 (ให้ระวังห้ามมี space ข้างหน้า)
#listen_address: localhostlisten_interface: eth0
Comment บรรทัด listen_address และ ตั้ง listen_interface เป็น eth0
#rpc_address: localhostrpc_interface: eth0
ดู ip address ของเครื่องที่ติดตั้ง (Command: ifconfig) ซึ่งเครื่องที่ใช้ IP คือ 172.17.0.2 และนำไปใส่ใน seeds
- seeds: “172.17.0.2”
ทำการ Save file “cassandra.yaml” และทำการ start Cassandra database เป็น แบบ foreground ด้วยคำสั่ง
~/apache-cassandra-3.9/bin/cassandra -f
ตรวจสอบ Database Status ว่าทำงานหรือไม่ โดยทำการ SSH (หรือ putty) อีก 1 หน้าจอเข้าไปตรวจสอบ
~/apache-cassandra-3.9/bin/nodetool status
ได้ Status เป็น UN คือ Up / Normal แสดงว่า Cassandra ทำงานได้สมบูรณ์แล้วครับ
สรุป
ในตอนนี้เราได้ทำการติดตั้ง Cassandra เรียบร้อยแล้ว ต่อไปจะทำการลองใช้งาน Cassandra ผ่านโปรแกรม cqlsh (คล้ายๆ SQL ใน RDBMS) ซึ่งเป็น command เพื่อทำงานกับ Database Cassandra ครับ
Credit:
น้องยิ้ม (Tansinee Y.T.) วิทยากรที่ช่วยแนะนำและแก้ไขจุดที่ผิดครับ ^_^
Docker Image
จบ Lab นี้ี้ผมได้ save docker image ไว้สำหรับคนที่อยากข้ามขั้นตอนการ install แล้วข้ามไปใช้งานในตอนถัดไปเลยครับ
drtan/cassandra-lab:start
What’s Next?
ตอนที่ 2 : บันทึกการอบรม Cassandra for & —เริ่มใช้งาน Cassandra