‫ข้อกำหนดสำหรับงานนี้คล้ายกับการมอบหมายครั้งสุดท้าย คุณจะต้องรู้วิธีเข้าไปในเปลือกของคอนเทนเนอร์เมื่อคุณเรียกใช้หรือหลังจากใช้งานจริง
‫และรู้พื้นฐานบางอย่างเกี่ยวกับลีนุกซ์ดิสทริบิวชันและสิ่งที่เหมือนอูบุนตูอาจแตกต่างไปจากอัลไพน์หรือ
‫CentOS และแน่นอนว่าต้องใช้คอนเทนเนอร์ ข้อมูลพื้นฐานเกี่ยวกับวิธีที่ระเบียน DNS
‫อาจทำงาน เช่น ระเบียนชื่อแทนหรือวิธีสร้างระเบียน
‫นั่นจะเป็นประโยชน์เพราะคุณกำลังจะทำการทดสอบ DNS สำหรับการมอบหมายครั้งต่อไปของคุณ
‫เราจะทำการทดสอบ DNS แบบวนรอบ
‫และถ้าคุณไม่คุ้นเคยกับ DNS round robin ก็คือแนวคิดที่ว่าคุณสามารถมีโฮสต์ที่แตกต่างกันสองโฮสต์ที่มีชื่อแทน
‫DNS ที่ตอบสนองต่อชื่อ DNS เดียวกันได้
‫เมื่อคุณนึกถึงบางอย่างเช่น google com เห็นได้ชัดว่าพวกเขามีเซิร์ฟเวอร์มากกว่าหนึ่งเครื่อง
‫ดังนั้น หนึ่งในเทคนิคที่บริษัทใหญ่ ๆ ใช้เพื่อให้แน่ใจว่าพวกเขาจะทำงานตลอด 24/7 คือการใช้ DNS Round robin
‫เป็นส่วนหนึ่งของกลยุทธ์ของพวกเขา เพื่อให้มีที่อยู่ IP หลายรายการในระเบียน DNS อยู่เบื้องหลังชื่อที่คุณใช้
‫อินเตอร์เนต.
‫ตอนนี้ในคอนเทนเนอร์ มันง่ายกว่ามากจริงๆ
‫ที่นี่เรามีฟีเจอร์นี้ใน Docker Engine 1 11 และใหม่กว่า
‫เรามีคุณลักษณะที่หากเราสร้างเครือข่ายที่กำหนดเอง เราสามารถกำหนดนามแฝงเพื่อให้คอนเทนเนอร์หลายตัวสามารถตอบสนองต่อชื่อ
‫DNS เดียวกันได้
‫ดังนั้นสำหรับสิ่งนี้ คุณจะต้องสร้างเครือข่ายเสมือนใหม่ก่อน เรียกมันว่าอะไรก็ได้ที่คุณต้องการ
‫และคุณจะตั้งค่าคอนเทนเนอร์สองคอนเทนเนอร์โดยใช้อิมเมจใหม่ที่เรียกว่า Elasticsearch และโดยเฉพาะเวอร์ชัน
‫2 ของ Elasticsearch
‫ดังนั้น Elasticsearch ไม่ได้เป็นส่วนหนึ่งของหลักสูตรนี้จริงๆ แต่กำลังกลายเป็นที่เก็บข้อมูลยอดนิยมสำหรับ... ดีจริง ๆ สำหรับการค้นหา
‫จึงได้ชื่อว่า
‫ถูกต้อง.
‫ดังนั้นมันจึงอยู่ในรูปแบบ JSON เมื่อคุณกดจาก curl สิ่งที่เราจะทำคือ เราจะใช้มันเป็นการทดสอบอย่างรวดเร็วจริง
‫ๆ เพราะว่ามันใช้งานง่ายมากในสถานการณ์นี้
‫คุณต้องการวิจัยและตรวจสอบคำสั่ง --net-alias
‫นั่นเป็นตัวเลือกสำหรับการรันนักเทียบท่า
‫และเมื่อคุณเริ่มคอนเทนเนอร์ คุณจะต้องบอกมันว่า ฉันต้องการนามแฝง DNS อื่นเพื่อเรียกใช้คอนเทนเนอร์นี้
‫ไม่ใช่แค่ชื่อคอนเทนเนอร์
‫สิ่งนี้จะทำให้เกิดปัญหาเล็กน้อยว่า ถ้าคุณเคยใช้ Docker ในการผลิต และคุณเริ่มเพิ่มคอนเทนเนอร์จำนวนมาก
‫คุณตระหนักดีว่าคุณไม่สามารถเพิ่มคอนเทนเนอร์หลายรายการที่มีชื่อเดียวกัน...
‫แต่ฉันจะแก้ไข DNS บนเครือข่ายของฉันได้อย่างไร และอาจมีแอปเดียวกันติดตั้งสองครั้ง
‫บางทีฉันอาจมี dev และสภาพแวดล้อมการทดสอบบนเซิร์ฟเวอร์เดียวกัน และฉันต้องเรียกการค้นหาบางอย่างใน
‫DNS ในทั้งสองอย่าง
‫นี่คือวิธีที่คุณหลีกเลี่ยงข้อจำกัดนั้น
‫คุณสามารถเพิ่มนามแฝงในคอนเทนเนอร์ของคุณต่อไปได้เมื่อสร้างและคุณจะพบว่าพวกเขาสามารถตอบสนองได้จริงเช่นเดียวกับ
‫DNS Round robin
‫ดังนั้น เมื่อคุณเริ่มใช้งานแล้ว คุณสามารถใช้อิมเมจอัลไพน์เพื่อทำ nslookup
‫และนั่นจะส่งคืนรายการที่อยู่ DNS สำหรับการค้นหาชื่อให้กับคุณ
‫และจำไว้ว่าคุณจะต้องตรวจสอบให้แน่ใจว่าได้ลงนามกับ --net ในเครือข่ายเดียวกันกับที่คุณกำหนดให้กับคอนเทนเนอร์สองตัวแรก
‫หลังจากที่คุณได้ทั้งสองคอนเทนเนอร์ที่แก้ไขเป็นชื่อการค้นหาเดียวกัน คุณสามารถใช้คำสั่ง
‫curl เพื่อรับเอาต์พุตอย่างรวดเร็วของเซิร์ฟเวอร์ elasticsearch
‫และนี่คือเคล็ดลับเล็กๆ น้อยๆ ของ elasticsearch และเหตุใดจึงควรใช้ในการสาธิตนี้ คำสั่ง curl มาพร้อมกับอิมเมจ
‫CentOS
‫ดังนั้นจึงง่ายที่จะใช้ CentOS ในกรณีนี้แทน Alpine หรือ Ubuntu และ elasticsearch
‫ยังทำงานบนพอร์ต 9200
‫และเนื่องจากส่งกลับผลลัพธ์ JSON สั้นๆ ที่ง่ายและรวดเร็ว การทดสอบนี้จึงง่ายและรวดเร็ว
‫และสุดท้าย elasticsearch จะให้ชื่อแบบสุ่มแก่ตัวเองภายในการกำหนดค่าเมื่อเริ่มทำงานครั้งแรก
‫คล้ายกับที่คอนเทนเนอร์ให้ชื่อแบบสุ่มถ้าคุณไม่ระบุ
‫สิ่งที่เราสามารถทำได้ที่นี่คือถ้าคุณยังคงเรียกใช้คำสั่ง curl นั้นซ้ำแล้วซ้ำอีก
‫คุณจะสังเกตเห็นว่าผลลัพธ์... แม้ว่าคุณจะใช้ชื่อ DNS การค้นหาเดียวกันเพื่อทำ curl... คุณจะพลิกกลับไปกลับมาระหว่างคอนเทนเนอร์
‫elasticsearch ที่แตกต่างกันสองอัน
‫มันอาจจะไม่ใช่ด้วยซ้ำ
‫มันจะไม่เป็นที่หนึ่ง แล้วก็อีกอัน แล้วก็อันแรก แล้วก็อันที่สอง มันจะออกน้อยไปหน่อยเพราะนั่นเป็นข้อเสียอย่างหนึ่งของ
‫DNS Round robin มันไม่ใช่ตัวโหลดบาลานซ์ที่แท้จริง
‫ฉันชอบเรียกมันว่าผู้บาลานซ์ต่ำของคนจน
‫แต่ในกรณีนี้ จะทำให้คุณเข้าใจถึงวิธีการใช้เครือข่ายเสมือนที่มี DNS ในตัว เพื่อให้ง่ายต่อการใช้งานหลายคอนเทนเนอร์ที่มีชื่อเดียวกัน
‫และเช่นเคย คุณสามารถข้ามไปยังการบรรยายถัดไปเพื่อดูฉันเดินผ่านมันเหมือนอย่างที่ฉันจะทำ
‫แต่คุณอาจได้ผลลัพธ์ที่เหมือนกันด้วยการพิมพ์คำสั่งที่แตกต่างกันเล็กน้อยหรือเปิดคอนเทนเนอร์ของคุณในแบบที่ต่างออกไปเล็กน้อย