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

วันจันทร์ที่ 8 กุมภาพันธ์ พ.ศ. 2559

Docker-machine create swarm on VULTR

เนื่องจากร้อนวิชาจากเมื่อวานที่ไปเรียน Docker swarm มาแต่ขัดใจหน่อยๆตรงที่ docker-machine มันมี driver มาตรฐานมาให้แค่ไม่กี่ตัว ที่ได้มีโอกาสใช้ก็คงมี aws,digitalocean,generic,virtualbox,azure,openstack พวก vmware คงไม่ได้มีโอกาสใช้สักเท่าไรเพราะ vmware ของที่ทำงานที่มีให้ส่วนมากจะเป็นแบบให้ vm มาเลยไม่ได้ให้เรา create vm เองได้



ผมได้รู้จัก VULTR มาพักใหญ่ละแต่ไม่ได้ใช้เพราะเสียดายวันฟรีของมันมันให้ใช้ฟรีได้ 2 เดือนใน 2 เดือนนี้ใช้อะไรก็ได้ในระบบโดยมีเงินให้ใช้ได้ 50$ ระบบแจกฟรีจะคล้ายๆ azure กับ bluemix คือให้ฟรีเงินมาเยอะๆแต่จำกัดวันใช้สั้นๆ ไม่เหมือน digital ocean ที่ให้เงินมาในระบบแล้ว คุณจะใช้ตอนไหนก็ได้ปิดเครื่อง+ทำลาย ไปเงินก็ไม่คิดเก็บไว้ใช้ได้นานๆ

VULTR มีอะไรดีกว่า Digitalocean บ้าง

  • disk ใช้ SSD เหมือน Digitalocean แต่ performance ดีกว่ามาก
  • ที่ราคา 5$ เท่ากัน VULTR ให้แรม 768MB แต่ให้ disk 15GB (disk น้อยกว่าแค่ 5 GB ผมว่าไม่เป็นปัญหาสำหรับ plan ราคาถูกนะครับอยากได้ performance ของ CPU & RAM มากกว่า)
  • มี local instant สำหรับทำ storage ใช้ disk จานหมุนธรรมดา ราคา 5$ ได้ disk ถึง 125 GB 
  • มี Snapshot ให้ใช้ Free!!!!!! (คิดว่าเดี๋ยวคงเก็บตัง)
  • ติดตั้ง OS จาก iso ของเราเองได้ 
  • มี DDOS protection ( เสียเงินเพิ่ม 10$ ต่อเดือน)
  • มี Dedicated instant ให้เลือก (2CPU 8GB-MEM 120GB-SSD 60$ ต่อเดือน)
  • มีเครดิตฟรีให้เล่น 50$ สมัครตาม https://www.vultr.com/freetrial/ นี้เลย หรือใครจะใจดีให้ referer ผมก็สมัครจาก link นี้ครับ http://www.vultr.com/?ref=6872558
VULTR ด้อยกว่า Digitalocean ตรงไหนบ้าง
  • เท่าที่เห็นตอนนี้ zone SEA ไม่มี server วางให้เลย ใกล้สุดคือ Japan และ Australia จากการทดสอบ ping โดยใช้ internet 3BB 10Mb ที่บ้าน ping ได้ผลดังนี้
    • digitalocean(SG) =50.210 ms
    • Vultr(JP) = 125.782 ms
    • Vultr(AU)=151.916 ms
จริงๆตอนแรกว่าจะเขียน driver vultr ให้กับ docker-machine เองไป hack มาละว่าเขียนไงไปหา go lib สำหรับ vultr มาแล้วด้วย https://github.com/JamesClonk/vultr/tree/master/lib กะว่าตื่นเช้ามาค่อยเอามาเขียน ก่อนนอนเล่นไปเล่นมา search ไปเจอมีคนทำ driver ไว้เสร็จเรียบร้อยแล้ว ใช้ lib ตัวเดียวกันกับที่ว่าจะเอามาเขียนเลย https://github.com/janeczku/docker-machine-vultr สรุปง่ายเลยไม่ต้องเขียนเองละเอามาใช้เลย

วิธีการติดตั้ง docker-machine-vultr driver 
  • ติดตั้ง docker , docker-machine ,golang
  • git clone https://github.com/janeczku/docker-machine-vultr.git
  • cd docker-machine-vultr && go get && make
  • cp build/docker-machine-vultr* /usr/local/bin/docker-machine-vultr
วิธีสร้าง consul
  • login เข้าไปใน VULTR เข้าไปที่ menu settings->API เพื่อ copy API key
  • docker-machine create -d vultr --vultr-api-key=[Your API] --vultr-os-id=193 --vultr-region-id=25 --vultr-plan-id=31 consul
    • vultr-os-id 193 = debian 8 x64
    • vultr-region-id 25 = jp
    • vultr-plan-id 31 = 5$ บน region jp

  • eval "$(docker-machine env consul)"
  • docker run -d --net=host --name=consul progrium/consul:latest -server -bootstrap-expect 1 -ui-dir /ui

วิธีสร้าง master


  • docker-machine create -d vultr --vultr-api-key=[Your API] --vultr-os-id=193 --vultr-region-id=25 --vultr-plan-id=31 --engine-opt cluster-store=consul://$(docker-machine ip consul):8500 --engine-opt cluster-advertise=eth0:2376 --swarm --swarm-master --swarm-discovery consul://$(docker-machine ip consul):8500/discovery master

  • eval $(docker-machine env --swarm master)
  • docker info

วิธีสร้าง node

  • docker-machine create -d vultr --vultr-api-key=[Your API] --vultr-os-id=193 --vultr-region-id=25 --vultr-plan-id=31 --engine-opt cluster-store=consul://$(docker-machine ip consul):8500 --engine-opt cluster-advertise=eth0:2376 --swarm --swarm-discovery consul://$(docker-machine ip consul):8500/discovery node-1

  • docker info

  • docker network create --driver overlay multihost
  • docker run -d --name=box1 --net=multihost nginx
  • docker run -d --name=box2 --net=multihost nginx
  • docker run -d --name=box3 --net=multihost nginx
  • docker ps

  • จะสังเกตว่า box1,box2 อยู่เครื่องเดียวกันส่วน box3 อยู่อีก เครื่องหนึ่ง (การเลือกเครื่องที่ติดตั้ง swarm จะเลือกให้เอง)
  • ทดสอบเข้าไปใน box1 แล้วลอง ping box2,box3 และ google ดู

ส่วนเรื่องความเร็วในการทำ provisioning นั้น อยู่ที่ประมาณ 3:30 นาทีโดยประมาณ
เรื่องความเร็วในการทำ provisioning อาจจะเป็นรอง digitalocean แต่สำหรับตอนนี้ใครที่อยากลองเล่น swarm ลองมาสมัคร VULTR ที่ให้เล่นฟรีแบบ 50$ 2 เดือนดู สามารถ create เครื่องขึ้นมาเล่นๆได้เป็น ร้อยๆเครื่องโดยไม่เสียเงินสักบาท  ส่วนเรื่อง performance ของเครื่องลองไปทดสอบกันดูครับว่าที่ผม review มานั้นจริงไหม