Computer >> คอมพิวเตอร์ >  >> ซอฟต์แวร์ >> เครื่องเสมือน

โหมด Docker swarm - บทช่วยสอนการเพิ่มโหนดผู้ปฏิบัติงาน

ให้เราขยายความเกี่ยวกับสิ่งที่เราเริ่มต้นกับ CentOS 7.2 เมื่อหลายสัปดาห์ก่อน ในคู่มือนี้ เราได้เรียนรู้วิธีเริ่มต้นและเริ่มการทำงานของคลัสเตอร์ดั้งเดิมและฟังก์ชันการประสานที่รวมอยู่ใน Docker 1.12 แต่เรามีเพียงโหนดผู้จัดการและไม่มีพนักงานคนอื่น วันนี้เราจะมาขยายความกัน

ฉันจะแสดงวิธีเพิ่มโหนดที่ไม่สมมาตรในกลุ่ม เช่น Fedora 24 ที่จะอยู่ข้างกล่อง CentOS ของเรา และทั้งสองจะเข้าร่วมในคลัสเตอร์ พร้อมด้วยโหลดบาลานซ์แฟนซีที่เกี่ยวข้องทั้งหมดและอะไรก็ตาม แน่นอนว่านี่ไม่ใช่เรื่องเล็กน้อย และเราจะพบกับอุปสรรค์บางอย่าง ดังนั้นมันจึงน่าสนใจทีเดียว หลังจากฉัน.

ข้อกำหนดเบื้องต้น

มีหลายสิ่งที่เราต้องทำก่อนที่เราจะสามารถรวมโหนดเพิ่มเติมเข้ากับฝูงได้สำเร็จ ตามหลักการแล้ว โหนดทั้งหมดควรใช้งาน Docker เวอร์ชันเดียวกัน และควรมีอย่างน้อย 1.12 เพื่อรองรับการประสานเสียงแบบเนทีฟ เช่นเดียวกับ CentOS Fedora ไม่มี repo ในตัวล่าสุด ดังนั้นคุณจะต้องเพิ่มและติดตั้งซอฟต์แวร์เวอร์ชันที่ถูกต้องด้วยตนเอง ไม่ว่าจะด้วยตนเองหรือใช้ที่เก็บ Docker จากนั้นแก้ไขข้อขัดแย้งในการพึ่งพาเล็กน้อย ฉันได้แสดงวิธีการทำเช่นนี้กับ CentOS และแบบฝึกหัดก็เหมือนกัน

นอกจากนี้ โหนดทั้งหมดของคุณจะต้องสามารถสื่อสารกันได้ จะต้องมีกฎการกำหนดเส้นทางและไฟร์วอลล์ในสถานที่เพื่อให้ผู้จัดการและพนักงานสามารถพูดคุยกันได้ มิฉะนั้นคุณจะไม่สามารถรวมโหนดเข้ากับฝูงได้ วิธีที่ง่ายที่สุดในการแก้ปัญหาคือการล้างกฎไฟร์วอลล์ชั่วคราว (iptables -F) แต่วิธีนี้อาจทำให้ความปลอดภัยของคุณลดลง ตรวจสอบให้แน่ใจว่าคุณเข้าใจอย่างถ่องแท้ว่าคุณกำลังทำอะไรอยู่ และสร้างกฎที่ถูกต้องสำหรับโหนดและพอร์ตของคุณ

การตอบสนองข้อผิดพลาดจาก daemon:หมดเวลาก่อนที่จะเข้าร่วมโหนด ความพยายามที่จะเข้าร่วมฝูงจะดำเนินต่อไปในพื้นหลัง ใช้คำสั่ง "docker info" เพื่อดูสถานะ swarm ปัจจุบันของโหนดของคุณ

คุณต้องมีอิมเมจ Docker เดียวกันกับโฮสต์ของคุณ ในบทช่วยสอนก่อนหน้านี้ เราสร้างอิมเมจ Apache และคุณจะต้องทำเช่นเดียวกันกับโหนดผู้ปฏิบัติงานของคุณ หรือแจกจ่ายอิมเมจที่สร้างขึ้น หากคุณไม่ทำคุณจะพบข้อผิดพลาด หากคุณต้องการความช่วยเหลือในการตั้งค่า Docker โปรดอ่านคู่มือแนะนำและบทช่วยสอนเกี่ยวกับเครือข่าย

7vwdxioopmmfp3amlm0ulimcu   \_ websky.11    my-apache2:ล่าสุด
localhost.localdomain ปิดระบบ   ถูกปฏิเสธเมื่อ 7 นาทีที่แล้ว
"ไม่มีภาพดังกล่าว:my-apache2:lat&"

เริ่มกันเลย

ดังนั้นเราจึงมีกล่อง CentOS และทำงาน และมันวางไข่คอนเทนเนอร์ได้สำเร็จ คุณสามารถเชื่อมต่อกับบริการโดยใช้พอร์ตโฮสต์ และทุกอย่างก็ดูเป็นสีพีช ในขณะนี้ฝูงของคุณมีผู้จัดการเท่านั้น

เข้าร่วมคนงาน

หากต้องการเพิ่มโหนดใหม่ คุณจะต้องใช้คำสั่งเข้าร่วม แต่ก่อนอื่นคุณต้องค้นหาโทเค็น ที่อยู่ IP และพอร์ตใดที่คุณต้องระบุบนโหนดผู้ปฏิบัติงานเพื่อให้พวกเขาตรวจสอบความถูกต้องอย่างถูกต้องกับผู้จัดการฝูง จากนั้นดำเนินการ (บน Fedora)

[root@localhost ~]# นักเทียบท่าจับกลุ่มผู้ปฏิบัติงานโทเค็น
หากต้องการเพิ่มผู้ปฏิบัติงานในกลุ่มนี้ ให้รันคำสั่งต่อไปนี้:

ฝูงนักเทียบท่าเข้าร่วม \
--โทเค็น SWMTKN-1-0xvojvlza90nrbihu6gfu3qm34ari7lwnza ... \
192.168.2.100:2377

หากคุณไม่แก้ไขไฟร์วอลล์และกฎการกำหนดเส้นทาง คุณจะได้รับข้อผิดพลาดการหมดเวลา หากคุณเข้าร่วมฝูงแล้ว การทำซ้ำคำสั่งเข้าร่วมจะสร้างเสียงของมันเอง:

การตอบสนองข้อผิดพลาดจาก daemon:โหนดนี้เป็นส่วนหนึ่งของฝูงแล้ว ใช้ "docker swarm leave" เพื่อออกจากฝูงนี้และเข้าร่วมฝูงอื่น

หากมีข้อสงสัย คุณสามารถออกจากฝูงแล้วลองอีกครั้ง:

[root@localhost ~]# นักเทียบท่าออกจากฝูง
โหนดออกจากฝูง

นักเทียบท่า Swarm เข้าร่วม --token
SWMTKN-1-0xvojvlza90nrbihu6gfu3qnza4 ... 192.168.2.100:2377
โหนดนี้เข้าร่วมฝูงในฐานะคนงาน

บนโหนดผู้ปฏิบัติงาน คุณสามารถใช้ข้อมูลนักเทียบท่าเพื่อตรวจสอบสถานะ:

ฝูง:ใช้งานอยู่
NodeID:2i27v3ce9qs2aq33nofaon20k
เป็นผู้จัดการ:เท็จ
ที่อยู่โหนด:192.168.2.103

ในทำนองเดียวกันในผู้จัดการ:

ฝูง:ใช้งานอยู่
รหัสโหนด:cneayene32jsb0t2inwfg5t5q
เป็นผู้จัดการ:จริง
รหัสคลัสเตอร์:8degfhtsi7xxucvi6dxvlx1n4
ผู้จัดการ:1
โหนด:3
การประสานเสียง:
ขีดจำกัดการรักษาประวัติงาน:5
แพ:
ช่วงเวลาสแนปชอต:10,000
ขีดการเต้นของหัวใจ:1
ติ๊กเลือก:3
ผู้มอบหมายงาน:
ระยะเวลาการเต้นของหัวใจ:5 วินาที
การกำหนดค่า CA:
ระยะเวลาหมดอายุ:3 เดือน
ที่อยู่โหนด:192.168.2.100

สร้างหรือปรับขนาดบริการ

ตอนนี้เราต้องดูว่า Docker กระจายคอนเทนเนอร์ระหว่างโหนดหรือไม่และอย่างไร การทดสอบของฉันแสดงอัลกอริธึมการปรับสมดุลที่ค่อนข้างง่ายภายใต้ภาระที่เบามาก หนึ่งหรือสองครั้ง Docker ไม่ได้พยายามแจกจ่ายบริการที่กำลังทำงานอยู่ให้กับพนักงานใหม่ แม้ว่าฉันจะพยายามปรับขนาดและอัปเดตแล้วก็ตาม ในทำนองเดียวกัน มีอยู่ครั้งหนึ่งที่สร้างบริการใหม่ทั้งหมดบนโหนดผู้ปฏิบัติงาน บางทีมันอาจเป็นทางเลือกที่ดีที่สุด

บริการใหม่ที่สร้างขึ้นบนโหนดผู้ปฏิบัติงานทั้งหมด

หลังจากนั้นไม่นาน มีการแจกจ่ายคอนเทนเนอร์ใหม่สำหรับบริการที่มีอยู่ระหว่างสองบริการนี้ แต่ต้องใช้เวลาสักระยะหนึ่ง บริการใหม่ทำงานได้ดี นี่เป็นข้อสังเกตเบื้องต้นเท่านั้น ดังนั้นฉันจึงไม่สามารถพูดอะไรมากไปกว่านี้ได้ในตอนนี้ สำหรับตอนนี้ นี่เป็นจุดเริ่มต้นที่ดีในการเริ่มสำรวจและปรับแต่ง

โหลดบาลานซ์จะเริ่มขึ้นหลังจากนั้นไม่นาน

สรุป

นักเทียบท่าเป็นสัตว์ร้ายตัวน้อยที่เรียบร้อย และมันมีแต่จะขยายใหญ่ขึ้น ซับซ้อนขึ้น มีพลังมากขึ้น และแน่นอนว่าสง่างามมากขึ้น เป็นเพียงเรื่องของเวลาก่อนที่องค์กรใหญ่และฉ่ำจะถูกกิน เมื่อพูดถึงการประสานแบบเนทีฟ โหมด swarm ทำงานได้ค่อนข้างดี แต่ต้องใช้คอนเทนเนอร์มากกว่าสองสามคอนเทนเนอร์จึงจะใช้ประโยชน์จากพลังของอัลกอริธึมและความสามารถในการปรับขนาดได้อย่างเต็มที่

บทช่วยสอนของฉันแสดงวิธีเพิ่มโหนด Fedora ให้กับคลัสเตอร์ที่รันโดยกล่อง CentOS และทั้งสองทำงานได้ดีเคียงข้างกัน มีคำถามเกี่ยวกับโหลดบาลานซ์ แต่นี่คือสิ่งที่ฉันจะสำรวจในบทความต่อๆ ไป สรุปแล้ว ฉันหวังว่านี่เป็นบทเรียนที่คุ้มค่า เราได้จัดการกับข้อกำหนดเบื้องต้นและปัญหาทั่วไปที่คุณอาจพบเมื่อพยายามตั้งค่าฝูง เราเริ่มการทำงานของคอนเทนเนอร์จำนวนมาก และเรายังได้สัมผัสกับวิธีปรับขนาดและกระจายบริการโดยสังเขป และจำไว้ว่านี่เป็นเพียงจุดเริ่มต้นเท่านั้น

ไชโย