Mongo บน docker ง่ายๆ
ขณะทำโปรเจคอยู่เกิดปัญหาที่ว่า query ของ mongodb มันเยอะเกินไป
ทั้ง read ทั้ง write ในโปรเจคมีสูงมาก เพราะทำงานพร้อมๆ กันประมาณ 60 thread / 60 session
เลยไปลองทำ shard บน mongo แก้ปัญหาแบบ vertical
ยังไม่เสร็จหรอกครับ การ config ค่อนข้างยากต้องใช้ประมาณ 6 node เป็นอย่างต่ำ
หาไม่ได้หรอกครับ 6 node เลยใช้ docker-machine และมีรายละเอียดเยอะมาก
วันนี้เลยขอเสนอการใช้ mongo บน docker
อันดับแรกคือเรื่องต้องมี docker ก่อน โดยผมทำงานบน window
ขั้นแรกคือ สร้างเครื่อง server ขึ้นมาก่อน
docker-machine create -d virtualbox node1
ลอง docker-machine ls
ดูก็จะปรากฏ เครื่องของเรา
เราจะ ssh เข้าไปใช้ได้โดยการ
docker-machine ssh node1
set environment โดยการ
docker-machine env node1 | Invoke-Expression
ลักษณะเหมือนกับ เรากำลังควบคุม node1
จากนั้นติดตั้ง pull mongo image ลงมาก่อน
docker pull mongo
รอสักแปปก็เสร็จครับ
ลอง docker images
ก็จะเห็น image mongo ที่ pull ลงมา
จากนั้น start mongodb server โดยใช้คำสั่ง
docker --name node1-mongo -p 27017:27017 --rm mongo sh -c "mkdir /mongo; mongod --dbpath /mongo"
อธิบายนิดนึงครับ
–name คือชื่อ container ใหม่ครับ
-p คือ port ที่เรา foward ให้ ระหว่าง machine นั้นและ container นั้น
–rm คือลบอันเก่าออกถ้ามีอยู่แล้ว
mongo อันนี้ คือ imager ที่เรา run ครับ
sh -c “commmand” อันนี้คือ รันแบบ command ครับ
mkdir /mongo อันนี้คือ สร้าง folder ไว้ที่ / เอาไว้เก็บข้อมูล
mongod อันนี้คือ run mongo daemon ทั่วไป
–dbpath อันนี้คือ จะเอาข้อมูลไว้ที่ไหน
mongodb --dbpath
อันนี้เป็น command ทั่วไปที่ใช้ในการ run mongo daemon
อ่าเสร็จแล้วครับลองเข้าไปใช้งานโดยการ
mongo --host
ไม่กี่ขั้นตอนก็ได้ใช้งาน mongodb แล้วครับ
ของผมที่กำลังทำตอนนี้ต้องทำ clustering ด้วย ยากไปอีกแบบ
วันนี้ขอพอแค่นี้ก่อน ขอบคุณครับ
Originally published at www.ntossapo.me on July 29, 2016.