ครั้งที่แล้วพาเล่น HA MQTT Broker ด้วย Docker Compose ครั้งนี้มาแนะนำวิธีการ Reconfig HAProxy ในกรณีที่มีการ Scale In, Scale Out จากการใช้ Docker Compose Scale ขอเปลี่ยนตัวอย่างเป็น WebApp จะได้เข้าใจง่ายๆ WebApp ตัวนี้ expose port 8080 เราสามารถใช้ Interlock ช่วยในการ reconfig HAProxy ในกรณีที่มีการ Scale ไม่ว่าจะ Scale in หรือ Scale out ได้ ครั้งนี้เราจะใช้ Docker Machine, Docke Swarm, Docker Compose และ Interlock

มาลงมือติดตั้ง Docker กันก่อน

wget -qO- https://get.docker.com/ | sh

ตามด้วย Docker Compose

curl -L https://github.com/docker/compose/releases/download/1.3.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose


Continue reading

Docker ประกาศออกรุ่นใหม่ของ Docker Registry พร้อมเปลี่ยนชื่อโครงการเป็น Docker Distribution เพื่อไม่ให้สับสนขอเรียกเป็น Registry 2 ก็แล้วกันครับ สำหรับท่านที่ใช้ Docker 1.6+ จะรองรับ Registry 2 แล้วสำหรับรุ่นต่ำกว่านั้นใช้งานด้วยกันไม่ได้ครับ ในรุ่นใหม่นี้ออกแบบมาเพื่อรองรับ plugin สำหรับ storage แบบต่างๆ ซึ่งแต่ก่อนเน้นที่ Amazon S3 ในรุ่นใหม่นี้รองรับ storage หลายแบบ เช่น file system, Azure Blob Storage, AWS S3, Rados, Redis เป็นต้น ดู configuration เพิ่มเติมได้ครับ

มาลองเล่นกันอันดับแรกติดตั้ง Docker, Docker Compose ให้เรียบร้อยก่อน

wget -qO- https://get.docker.com/ | sh

curl -L https://github.com/docker/compose/releases/download/1.3.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

มาลองติดตั้งแบบใช้ Docker กันก่อน ใช้คำสั่งดังนี้

docker run -d -p 5000:5000 --restart=always --name registry registry:2


Continue reading

ครั้งที่แล้วแนะนำ High Availability MQTT Cluster แบบ Back to Basic ไว้เนื่องจากจะได้เข้าใจว่าหลักการเป็นอย่างไร ได้ลองติดตั้ง Ponte ตั้งค่า HA Proxy ฯลฯ ครั้งนี้เราจะใช้ Docker Compose ในการสร้าง Container ในส่วน MQTT Broker, HAProxy และ MongoDB สั่งงานครั้งเดียวจบ ตัวอย่างนี้เหมาะสำหรับศึกษาเท่านั้น หากต้องการเอาไปใช้งานควรแยก data volume ของ mongodb ออกมาด้วยครับ

จากภาพเดิมเราจะใช้ Docker Compose สร้าง Container ทั้งหมดขึ้นมาซึ่งประกอบไปด้วย

  • HA Proxy
  • MQTT Broker 1
  • MQTT Broker 2
  • MongoDB


Continue reading

เมื่อครั้งที่แล้วพาเล่น OpenShift Hub ซึ่งคุณสามารถสั่ง Lauch Application จากหน้าเว็บของ OpenShift Hub ได้เลย ซึ่งใช้ควมสามารถของ Web-Based App Creation Workflow URL อารมณ์เดียวกับ AWS Marketplace ที่เรากดแล้วได้ Application มาใช้งานได้เลย มีนักพัฒนาเว็บสร้างปุ่ม Launch Service สำหรับ Application ต่างๆ เอาไว้ทดสอบโดยที่ไม่จำเป็นต้องใส่ลง OpenShift Hub

เมื่อกรอกรายละเอียด Cartridge, Git Repository ของ Application ที่ต้องการ Deploy เราจะได้ Code HTML กับ Markdown เอาไปแปะหน้าเว็บได้ :)

Continue reading

ครั้งที่แล้วพาเล่น MQTT Cluster กันไปบ้างแล้ว ครั้งนี้เรามาลองวิธีง่ายๆ โดยใช้บริการของ AWS กันบ้าง AWS เครื่องมือพร้อมสำหรับการทำ Load Balance และการทำ Auto Scaling มาให้ด้วย เพราะฉนั้นการทำ Horizontal Scaling จะทำได้ง่ายมากๆ เพียงแค่คลิกเท่านั้นเอง จากภาพเดิมเราจะ Scale MQTT Broker โดยใช้ Elastic Scaling ของ AWS กัน

เนื้อหาไม่รวม Authentication, Secure Connection สำหรับ Persistance Storage คุณอาจเลือกใช้ DynamoDB หรือ RDS ได้ หากต้องการใช้ MongoDB Cluster อ่าน Reference Guide เพิ่มเติมได้ที่ MongoDB บน AWS Cloud

ขั้นตอนมีดังนี้

  • สร้าง instance พร้อม private network 2 เครื่อง
  • ติดตั้ง MongoDB ไปยังเครื่องที่ 1 เพื่อใช้เป็น Persistent Storage
  • ติดตั้ง Ponte ไปยังเครื่องที่ 2 ตั้งค่าเก็บข้อมูลมายังเครื่องที่ 1
  • สร้าง Snapshot ของเครื่องที่ 2
  • สร้าง Scaling Groups กำหนดขนาดของและเงื่อนไขในการ Scale
  • สร้าง Load Balancer และเพิ่ม instance ที่ Scaling Groups สร้างมาให้
  • กำหนด Load Balancer ให้ Scaling Groups ใช้เป็น Elastic Scaling


Continue reading

เนื่องจากจำไม่ได้ว่าใครถามเรื่อง High Availability MQTT Cluster แต่ที่จำได้ผมบอกไปว่า Mosca + Haproxy น่าจะจบก็ไม่ได้ทำอะไรต่อเพราะน่าจะเข้าใจแล้ว แต่ก็คิดไปคิดมาก็เลยลองดูสักหน่อยว่าใช้ได้หรือเปล่า T_T จาก Blog ของ Lelylan อธิบายเรื่อง High Availability MQTT Cluster ไว้ได้ดีในเรื่องของการประยุกต์ใช้ Docker และ MQTT Broker ซึ่งถือว่าเป็น Micro Service ถ้าสนใจก็ลองไปอ่านได้ครับ

กลับมา Back to Basic เราจะไม่ใช้ Docker เพื่อให้เกิดความเข้าใจเรื่อง HA กับ MQTT Broker ในเบื้องต้นก่อนครั้งหน้า (ถ้าไม่ลืม) เราจะมาเล่น Docker Machine + Swarm + Compose ทำ High Availability MQTT Cluster กันอีกรอบ

Continue reading

OpenWeatherMap เป็นเว็บให้ข้อมูลสภาพอากาศ ข้อมูลการพยากรณ์อากาศทั่วโลก ข้อมูลสภาพอากาศย้อนหลัง แผนที่อากาศ ฯลฯ การใช้ง่ายมากๆ เพียงแค่ใส่ชื่อเมืองและประเทศลงไปเท่านั้นก็ได้ข้อมูลสภาพอากาศมาแล้ว นอกจากจะให้ข้อมูลสภาพอากาศแล้ว OpenWeatherMap ยังเปิดข้อมูลให้เรียกใช้งานผ่าน API ได้ด้วย สำหรับค่าใช้จ่ายมีทั้งแบบฟรีและจ่ายเงินแบ่งเป็น Plan ต่างๆ ขึ้นอยู่กับจำนวนการใช้งานและจำนวนข้อมูลที่ต้องการใช้งาน

สำหรับการใช้งาน API มีให้เรียกใช้หลายแบบ เช่น ข้อมูลตามสถานีตรวจอากาศ, ข้อมูลตามเมืองและประเทศ เป็นต้น สำหรับผู้ใช้ทั่วไปอย่างเราก็เรียกใช้ฟรีละกัน เข้าไปที่หน้า API เราจะพบว่า มี service หลายตัวให้เรียก มาลอง service ง่ายๆ อย่างเช่นข้อมูลตามเมืองและประเทศกัน วิธีการก็ง่ายมาก เรียก URL ดังนี้

api.openweathermap.org/data/2.5/weather?q={city name}

api.openweathermap.org/data/2.5/weather?q={city name},{country code}


Continue reading

น้อง Wasin แห่ง Chiang Mai Maker Club แนะนำเรื่องการวาด Bitmap บนจอ OLED โดยใช้เครื่องมือยอดฮิตชื่อ LCD Assistant ช่วยให้เราแปลงภาพ Bitmap เป็นโค้ดตัวแปร Array ในภาษา C++ จากนั้นเราก็เอาโค้ดที่ได้นี้เอาไปใช้งาน แต่… ผมไม่มี Windows ก็เลยต้องหาวิธีอื่น T_T

หลังจากที่ค้นจาก Google ไปพักใหญ่ ก็ได้เครื่องมือเหมือนกับ LCD Assistant แต่เป็นบริการแบบออนไลน์ สามารถเลือกไฟล์จากเครื่องของเราแล้วสั่งแปลงได้เลย เครื่องมือชื่อ Image to Byte array ลองกดเข้าไปดู

Continue reading

หลังจากที่ NodeMCU เปิดตัวไปเมื่อปีที่แล้วก็ประสบความสำเร็จอย่างมาก ทั้ง Firmware ของ NodeMCU และ NodeMCU DevKit ปีนี้ก็มี DevKit รุ่นใหม่ออกมาเป็น NodeMCU DevKit v1.0 ตัวเก่าเป็นรุ่น 0.9 นะครับ บางคนเรียก DevKit ตัวใหม่ว่า V2 ก็ไม่ต้องตกใจ อีกอย่างจะได้ไม่สับสนด้วย DevKit ตัวนี้ได้มาจากพี่ช้างแห่ง Ayarafun ครับใครสนใจก็ติดต่อไปได้ครับ มาดูหน้าตากันก่อน


Continue reading

จำได้ว่าเคยเขียนเรื่องนี้ไว้เมื่อนานมาแล้ว มีคนถามเรื่องนี้อีกครั้งก็เลยมาเขียน How-To ไว้สักหน่อย ปัญหาเดิมจากครั้งที่แล้ว เราต้องการเว็บไซต์หลายๆ เว็บโดยใช้ Drupal ตัวเดียว ซึ่ง Drupal เองก็รองรับการทำ Multi Site อยู่แล้ว ยกตัวอย่าง ต้องการสร้างเว็บโดยใช้ Drupal Multi Site

  • www.fffee.org
  • site1.fffee.org
  • site2.fffee.org

วิธีการง่ายๆ ให้คุณตั้งค่า domain www.fffee.org, site1.fffee.org และ site2.fffee.org ชี้ไปยังเครื่องเดียวกัน เพราะเราจะใช้ค่า ServerAlias สำหรับ virtualhost เข้าช่วย มาติดตั้งสิ่งที่จำเป็นแบบเร็วๆ กันก่อน


Continue reading