Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

มาลอง Scale Elasticsearch ด้วย Docker Swarm Mode กันหน่อย

$
0
0

docker-000

docker-000 ติดตามข่าวสารเกี่ยวกับ Docker 1.12 มานิดหน่อย มีความสามารถใหม่ ๆ เพียบเลย นั่นคือเรื่องของ Docker Swarm Mode ทำให้เราจัดการได้ง่ายขึ้น ดังนั้นเพื่อให้เข้าใจจึงลองนำมาใช้งานกับ Elasticsearch กันดีกว่า เพราะว่า การลงมือทำน่าจะทำให้เราเข้าใจและแก้ไขปัญหาไปพร้อม ๆ กัน

โดย Software ที่ใช้งานคือ Docker for Mac 1.12 beta

docker-00

สิ่งที่ต้องการคือทำการ Scale Elasticsearch จาก 1 node ไปสัก 10 node กัน

ทุกอย่างทำบน Local หรือเครื่อง Mac นี่แหละนะ ยังไม่ได้ไปใช้ Cloud อะไรเลย
มีเป้าหมายเพื่อให้ Elasticsearch มี 10 node ให้ใช้บริการ โดยจัดการผ่าน Docker Swarm
ปล. ลอง 20 node แล้วเครื่องร้อนมาก ๆ !! และยังไม่ทำ Cluster ของ Elasticsearch นะ มาเริ่มกันเลย

1. ทำการสร้าง Swarm cluster ก่อน

ด้วยคำสั่ง [code] $docker swarm init [/code]

2. ทำการสร้าง Elasticsearch cluster ขึ้นมา 1 node ด้วย Docker service

ชื่อ service คือ elasticsearch ด้วยคำสั่ง [code] $docker network create -d overlay mynet $docker service create --name elasticsearch --network mynet --publish 9200:9200 elasticsearch [/code] ลองดูสถานะของ service เป็นอย่างไรด้วยคำสั่งดังนี้ รอไปจนกว่า REPLICAS จะเป็น 1/1 นะครับ ไม่นาน โดยจะทำการ join node ให้เองนะ [code] $docker service ls ID NAME REPLICAS IMAGE COMMAND 97dpatv5dvky elastic search 1/1 elasticsearch [/code] หรือดูสถานะของแต่ละ task ใน service ชื่อว่า elasticsearch ได้ [code] $docker service tasks elasticsearch ID NAME SERVICE IMAGE LAST STATE DESIRED STATE NODE eb5sbk8gi3mg8e9hwt4i7jshm elasticsearch.1 elasticsearch elasticsearch Running 5 minutes ago Running moby [/code] เมื่อทุกอย่างพร้อมลองเข้าไปดูหน้าแรกของ Elasticsearch หน่อยสิ จะ curl หรือเปิดหน้า web ก็ได้นะครับ docker-01

3. ทำการ Scale Elasticsearch ไปเป็น 10 node กันเลยดีกว่า

ด้วยคำสั่งที่ง่ายมาก ๆ คือ [code] $docker service scale elasticsearch=10 [/code] จากนั้นก็รอสักครู่ ใจเย็น ๆ หน่อยนะครับ รอให้ REPLICAS เป็น 10/10 เมื่อทุกอย่างพร้อมก็เป็นดังรูป ได้ Elasticsearch จำนวน 10 node มาให้ใช้แล้ว docker-02 โดยทุก ๆ task ที่เราเห็นนั้น มันคือ container นั่นเอง ตรวจสอบโดยใช้คำสั่ง [code] $docker ps [/code] แสดงดังรูป docker-03

4. ยังไม่พอนะถ้ามี node ใดก็ตาม fail หรือถูกลบไป

Docker จะทำการ restart ขึ้นมาให้เอง ดังนั้นลองมาลบ node ที่ 1 กัน ด้วยคำสั่ง [code] $docker rm -f d0d128565d3e [/code] ลองไปดูค่า REPLICAS จะเหลือ 9/10 แต่เมื่อเวลาผ่านไปสักครู่จะกลับมาเป็น 10/10 ให้เองโดยอัตโนมัติ ในระหว่างที่รอ ให้ทำการ access มายัง Elasticsearch จะพบว่าชื่อ node จะเปลี่ยนไป นั่นแสดงว่า Docker Swarm มี Load balance ในตัวให้นั่นเอง แสดงดังรูป docker-04

ด้วยความสามารถพื้นฐานต่าง ๆ เหล่านี้

มันทำให้เราจัดการ service ต่าง ๆ บน Cluster ด้วย Swarm Mode อย่างง่ายดาย ดูแล้วชีวิตน่าจะดีขึ้นมาก ส่วนรายละเอียดไว้ไปอ่านเพิ่มเติมในเอกสารต่อไปสำหรับ Docker Swarm Mode docker-05

ปล. ถ้าอยากลบ service ก็ใช้คำสั่ง

[code] $docker service scale elasticsearch=0 [/code] หรือถ้าต้องการลบ service ทิ้งไปเลยใช้คำสั่ง [code] $docker service rm elasticsearch [/code] Reference Websites https://blog.docker.com/2016/06/docker-1-12-built-in-orchestration/ https://medium.com/@LachlanEvenson/15-minutes-with-docker-swarm-mode-e6c38b9dafa0#.v9tovb8g7

Viewing all articles
Browse latest Browse all 1997

Trending Articles