กงสุล - ทำงานกับไมโครเซอร์วิส

ในบทนี้เราจะทำความเข้าใจว่า 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