กงสุล - ทำงานกับไมโครเซอร์วิส
ในบทนี้เราจะทำความเข้าใจว่า Microservices ทำงานร่วมกับกงสุลอย่างไร นอกจากนี้เรายังจะได้เรียนรู้ว่าส่วนประกอบต่อไปนี้มีผลต่อกงสุลอย่างไร
- ใช้นักเทียบท่า
- ผู้ลงทะเบียนอาคารสำหรับการค้นพบบริการ
- ใช้ rkt และ Nomad
ตอนนี้ให้เราคุยรายละเอียดแต่ละเรื่องเหล่านี้
ใช้ Docker
ก่อนเริ่ม please do not use this setup in productionเนื่องจากใช้เพื่อการสาธิตเท่านั้น Docker เป็นบริการที่ใช้คอนเทนเนอร์ซึ่งเราสามารถปรับใช้แอปพลิเคชันของเราได้อย่างง่ายดาย สำหรับการใช้งานกงสุลเราจะใช้ภาพที่ลิงค์ต่อไปนี้ –0
https://hub.docker.com/r/progrium/consul/.
ระบบของคุณมีการติดตั้ง Docker และกำหนดค่าไว้อย่างเหมาะสม ให้เราลองดึงภาพจาก Docker hub โดยเรียกใช้คำสั่งต่อไปนี้ -
$ docker pull progrium/consul
ผลลัพธ์จะเป็นดังที่แสดงในภาพหน้าจอต่อไปนี้
เรากำลังจะเผยแพร่อินเทอร์เฟซบางส่วนกับพอร์ตของพวกเขา (โดยใช้ตัวเลือก -p บน Docker) ในลักษณะต่อไปนี้
- 8400 (RPC)
- 8500 (HTTP)
- 8600 (DNS)
ตามการดึงเราจะตั้งชื่อของชื่อโฮสต์เป็น node1คุณสามารถเปลี่ยนเป็นอะไรก็ได้ที่คุณต้องการโดยใช้ไฟล์ -h flag ด้วยชื่อโฮสต์ของคุณเองตามที่แสดงด้านล่าง
$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap
ผลลัพธ์จะเป็นดังที่แสดงในภาพหน้าจอต่อไปนี้
คุณยังสามารถเปิดใช้งานโหมด UI สำหรับกงสุลโดยใช้ -
$ docker run -p 8400:8400 -p 8500:8500 -p 8600:53/udp -h node1 progrium/consul
-server -bootstrap -ui-dir /ui
คุณสามารถตรวจสอบผลลัพธ์ตาม UI บน http://localhost:8500. ภาพหน้าจอต่อไปนี้ช่วยให้คุณมีแนวคิดที่ดีขึ้นเกี่ยวกับเอาต์พุตที่ใช้ UI
สำหรับการใช้กงสุลบนคอนเทนเนอร์นักเทียบท่าต่างๆบนโหนดต่างๆเราสามารถรันคำสั่งต่อไปนี้บนโหนดต่างๆ -
บน Node1
$ docker run -d --name node1 -h node1 progrium/consul -server -bootstrap-expect 3
ที่ไหน -bootstrap-expect 3 หมายความว่าเซิร์ฟเวอร์กงสุลจะรอจนกว่าจะมี 3 เพียร์เชื่อมต่อก่อนที่จะบูตตัวเองและกลายเป็นคลัสเตอร์ที่ใช้งานได้
ก่อนที่จะดำเนินการต่อไปเราจำเป็นต้องได้รับ IP ภายในของคอนเทนเนอร์โดยการตรวจสอบคอนเทนเนอร์ สำหรับการใช้งานของเราวัตถุประสงค์ของกรณีเราจะประกาศ$ JOIN_IP.
$ JOIN_IP = "$(docker inspect -f '{{.NetworkSettings.IPAddress}}' node1)"
บน Node2
ดังนั้นให้เราเริ่ม Node2 และบอกให้เข้าร่วม Node1 โดยใช้ตัวแปรที่ประกาศในโปรแกรมที่ให้ไว้ด้านบน
$docker run -d --name node2 -h node2 progrium/consul -server -join $JOIN_IP
บน Node3
$ docker run -d --name node3 -h node3 progrium/consul -server -join $JOIN_IP
ผู้ลงทะเบียนอาคารสำหรับการค้นพบบริการ
ผู้ลงทะเบียนจะลงทะเบียนและยกเลิกการลงทะเบียนบริการสำหรับคอนเทนเนอร์ Docker โดยอัตโนมัติโดยการตรวจสอบคอนเทนเนอร์ในขณะที่ออนไลน์ ผู้ลงทะเบียนที่เรากำลังจะใช้ในขณะนี้สนับสนุนการลงทะเบียนบริการแบบเสียบได้ซึ่งในปัจจุบันรวมถึงConsul, Etcd และ SkyDNS2. ขอแนะนำให้ใช้ Registrator เมื่อเราโต้ตอบกับบริการต่างๆผ่านเครือข่าย
$ docker pull gliderlabs/registrator:latest
ผลลัพธ์จะเป็นดังที่แสดงในภาพหน้าจอต่อไปนี้
$ docker run -d \
--name = registrator \
--net = host \
--volume = /var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator:latest \
consul://localhost:8500
ผลลัพธ์จะเป็นดังที่แสดงในภาพหน้าจอต่อไปนี้
ผลลัพธ์ที่คุณได้รับคือ ID ของ Docker Container ที่คุณเพิ่งเริ่มต้น คุณสามารถตรวจสอบว่าคอนเทนเนอร์กำลังทำงานอยู่หรือไม่โดยใช้คำสั่ง -
$ docker ps -a
ผลลัพธ์ของเขาจะเป็นดังที่แสดงในภาพหน้าจอต่อไปนี้
คุณยังสามารถดูบันทึกของ Registrator ได้โดยใช้คำสั่งต่อไปนี้
$ docker logs registrator
ใช้ rkt และ Nomad
rkt เป็นบริการที่ใช้คอนเทนเนอร์อื่นซึ่งคุณสามารถใช้ได้ในสภาพแวดล้อมของคุณ มันถูกสร้างขึ้นโดยCoreOS. เหตุผลหลักในการสร้าง rkt คือการปรับปรุงความปลอดภัยซึ่งเป็นหนึ่งในปัญหาวิกฤตของ Docker เมื่อมันยังอยู่ในการพัฒนาในปี 2013-14
สำหรับกงสุลเราสามารถใช้ Rkt Registrator เพื่อทำงานเกี่ยวกับการค้นพบบริการกับกงสุล โครงการ Registrator เฉพาะนี้ซึ่งครอบคลุมสำหรับ rkt อยู่ระหว่างการพัฒนาและอยู่ระหว่างการพัฒนาnot recommended for production level use.
คุณสามารถตรวจสอบว่า rkt ได้รับการติดตั้งหรือไม่โดยไปที่พา ธ และรันคำสั่งต่อไปนี้
$ ./rkt
คุณสามารถตรวจสอบผลลัพธ์เพื่อตรวจสอบว่าติดตั้งถูกต้องหรือไม่ตามที่แสดงในภาพหน้าจอต่อไปนี้
สำหรับการทดลองใช้ rkt และกงสุลโปรดตรวจสอบ - https://github.com/r3boot/rkt-registrator.
Nomad Tool
หนึ่งในตัวเลือกที่นิยมใช้กันมากที่สุดคือ Nomad tool Nomad เป็นเครื่องมือสำหรับจัดการกลุ่มเครื่องจักรและเรียกใช้แอปพลิเคชันบนเครื่องเหล่านั้น มันคล้ายกับMesos หรือ Kubernetes. ตามค่าเริ่มต้น Nomad จะครอบคลุมไดรเวอร์ Docker และ rkt ภายในตัวมันเอง ดังนั้นหากคุณกำลังมองหาการติดตั้งตู้คอนเทนเนอร์ขนาดใหญ่กับกงสุล เร่ร่อนอาจเป็นทางออกที่ดี ตรวจสอบ -https://www.nomadproject.io/docs/drivers/rkt.html สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Nomad