วิธีสร้าง Docker Swarm

หลายคนคงจะได้ใช้งาน Docker มาแล้ว แต่อาจจะลองใช้งานบน 1 Physical Server กล่าวคือ สร้างหลายๆ container อยู่บนเครื่องคอมพิวเตอร์เครื่องเดียว >> ติดตั้ง docker 17.06.0 CE บน Ubuntu Docker Swarm เป็นเครื่องมือที่ติดมากับ Docker รุ่นตั้งแต่ 1.12 เป็นต้นมา (ปัจจุบัน ชื่อรุ่นคือ 17.06.0 CE) ก่อนอื่น มาตรวจสอบว่า เรากำลังใช้ Docker รุ่นไหนด้วยคำสั่ง docker version Docker Swarm ประกอบไปด้วย Master Node และ Worker Node โดยใน 1 Swarm สามารถมีได้ หลาย Master และ หลาย Worker ในตัวอย่างนี้ จะแสดงการเชื่อมต่อ Ubuntu 16.04 ทั้งหมด 4 เครื่อง เข้าไปใน 1 Swarm (ทุกเครื่องสามารถเชื่อมต่อถึงกันได้ และต่อ Internet ได้ และติดตั้ง Docker ไว้เรียบร้อยแล้ว) [Master Node] ใช้คำสั่งต่อไปนี้ เพื่อสร้าง Swarm Master Node บนเครื่องนี้ docker swarm init จะได้ผลดังภาพ ให้ Copy คำสั่ง ตั้งแต่ “docker swarm join –token …..” เป็นต้นไป เพื่อเอาไปสั่งให้ Work Node เข้ามา Join ใน Swarm [Worker Node] นำคำสั่งจาก Master Node ข้างต้น มาใช้ จากนั้น ทำเช่นเดียวกันนี้ กับ Worker Node ที่เหลือ (และหากในอนาคตต้องการเพิ่ม Worker Node อีก ก็เอาคำสั่งนี้ไปใช้) ตัวอย่างการนำไปใช้ (หากสนใจ ลอง git clone https://github.com/nagarindkx/elk ไปดูได้) สร้าง “Stack File” ซึ่งจะคล้ายๆกับการสร้าง Compose File แต่มีรายละเอียดต่างกันเล็กน้อย ใช้คำสั่ง ต่อไปนี้ เพื่อสร้าง Stack ของ Software ให้กระจายไปใน Worker Nodes docker stack deploy -c $(pwd)/elk.yml k1 ผลที่ได้ วิธีดูว่า ตอนนี้มี Stack อะไรอยู่บ้าง ใช้คำสั่ง docker stack ls ผลที่ได้ วิธีดูว่า ตอนนี้มีการไปสร้าง Container ไว้ที่ใดใน Docker Swarm บ้าง ด้วยคำสั่ง (สั่งการได้บน Master Node เท่านั้น) docker service ps k1 ผลที่ได้ ต่อไป อยากจะเพิ่ม Scale ให้บาง Service ใน Stack ใช้คำสั่ง docker service scale k1_elasticsearch=4 ผลที่ได้   ในตัวอย่างนี้ จะสามารถใช้งาน Kibana ซึ่งจากภาพจะเห็นได้ว่า อยู่ที่ Node “docker04” แต่เราสามารถเรียกใช้งานได้ที่ Master Node “docker01” ได้เลย เช่น

Read More »

ติดตั้ง docker 17.06.0 CE บน Ubuntu

ล่าสุด วิธีการติดตั้ง Docker รุ่น 17.06.0 CE ซึ่งรองรับ docker-compose version 3.3 ให้ติดตั้งด้วยวิธีนี้ sudo add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” sudo apt update sudo apt-get install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add – sudo apt-get update sudo apt-get install docker-ce

Read More »

ELK #03

วิธีการติดตั้ง Kibana บน Ubuntu 16.04 ก่อนอื่น Update sudo apt -y update ; sudo apt -y upgrade ติดตั้ง Java JDK sudo apt -y install default-jdk Download และติดตั้ง wget https://artifacts.elastic.co/downloads/kibana/kibana-5.4.2-amd64.deb sudo dpkg -i kibana-5.4.2-amd64.deb จากนั้นแก้ไขไฟล์ /etc/kibana/kibana.yml เพิ่มบรรทัดสุดท้าย server.host: “192.168.xxx.yyy” elasticsearch.url: “http://your.elastic.host:9200” จากนั้น Start Service sudo service kibana start เปิด Web Browser ไปที่ http://192.168.xxx.yyy:5601

Read More »

ELK #02

ขั้นตอนการติดตั้ง Logstash บน Ubuntu 16.04 ก่อนอื่น Update sudo apt -y update ; sudo apt -y upgrade ติดตั้ง Java JDK sudo apt -y install default-jdk Download และติดตั้ง wget https://artifacts.elastic.co/downloads/logstash/logstash-5.4.2.deb sudo dpkg -i logstash-5.4.2.deb Start Logstash Service sudo service logstash start ต่อไป สร้าง Configuration ไว้ใน /etc/logstash/conf.d/ เช่น จะสร้าง Pipeline ที่อ่านจาก File /tmp/test.log แล้ว ส่งไปที่ Elasticsearch โดยตรง ให้สร้างไฟล์ /etc/logstash/conf.d/file.conf ดังนี้ input { file { path => “/tmp/test.log” type=> “test” } } output { file { path => “/tmp/output.txt” } } เมื่อลองใช้คำสั่ง echo “$(date): New World” >> /tmp/test.log ก็จะปรากฏไฟล์ /tmp/output.txt ขึ้น ต่อไป ลองเปลี่ยน Output เป็น Elasticsearch โดยการสร้างไฟล์ /etc/logstash/conf.d/es.conf input { file { path => “/tmp/test.log” type=> “test” } } output { elasticsearch { hosts => [“http://your.elastic.host:9200”] } } เมื่อลองใช้คำสั่ง echo “$(date): New World” >> /tmp/test.log ก็จะปรากฏบรรทัดใหม่ใน /tmp/output.txt และ มีการเขียนไปบน Elasticsearch ด้วย ลองเปิด Web Browser แล้วใช้คำสั่งต่อไปนี้ http://your.elastic.host:9200/_cat/indices?v ก็จะได้ผลลัพธ์ประมาณนี้ จากนั้น วิธีที่จะแสดงผลที่เก็บไว้ใน Elasticsearch ให้เปิด URL นี้ http://your.elastic.host:9200/logstash-2017.06.24/_search?q=* ก็จะได้ผลลัพธ์ประมาณนี้ แล้วยังไง ??? รอดูตอนต่อไป

Read More »

ELK #01

ELK = ElasticSearch + LogStash + Kibana วิธีการติดตั้ง ElasticSearch บน Ubuntu 16.04 ก่อนอื่น Update sudo apt -y update ; sudo apt -y upgrade ติดตั้ง Java JDK sudo apt -y install default-jdk Download และติดตั้ง wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.2.deb sudo dpkg -i elasticsearch-5.4.2.deb sudo update-rc.d elasticsearch defaults 95 10 แก้ไขไฟล์ /etc/elasticsearch/elasticsearch.yml โดยเพิ่มบรรทัดสุดท้าย cluster.name: my-cluster-name network.host: [_site_] node.name: ${HOSTNAME} เริ่มทำงาน sudo -i service elasticsearch start ทดสอบการทำงาน โดยใช้คำสั่ง curl -XGET “${HOSTNAME}:9200/?pretty” ดู Log ได้ที่ sudo tail -f /var/log/elasticsearch/my-cluster-name.log

Read More »