DNS Hostnames for Direct Connection to Containers

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

โดยขึ้นอยู่กับชนิดของโหนดที่สร้างขึ้นและเซตของชื่อโฮสต์สำหรับโหนดนั้นอาจแตกต่างกัน ในส่วนของด้านล่างนี้จะพิจารณาวิธีการอ้างอิงโหนดโดยเฉพาะสำหรับโฮสต์ที่ Ruk-Com Cloud ภายใน (เช่น เมื่อจัดการผ่าน SSH Gate) หรือภายนอก Cloud:

  • ชื่อโฮสต์สำหรับคอนเทนเนอร์โดยเฉพาะ
  • ชื่อโฮสต์เสริมสำหรับประเภทโหนดเฉพาะ
  • ชื่อโฮสต์สำหรับเลเยอร์โดยเฉพาะ
  • ชื่อโฮสต์แบบสั้นสำหรับคอนเทนเนอร์ภายในหนึ่ง environment
  • ชื่อโฮสต์สำหรับการเชื่อมโยงคอนเทนเนอร์

ชื่อโฮสต์สำหรับคอนเทนเนอร์โดยเฉพาะ

แต่ละคอนเทนเนอร์ที่แพลตฟอร์มสามารถเข้าถึงได้โดย IP address ภายในด้วย URL ในรูปแบบใดรูปแบบหนึ่งต่อไปนี้:

  • node${nodeId}-${envName}.${platformDomain}
  • node${nodeId}.${envName}.${platformDomain}

ในกรณีนี้ แทนที่ค่าตัวยึดตําแหน่งด้วยค่าต่อไป:

  • ${nodeId} – การสร้างตัวเลขที่ไม่ซ้ำกันโดยอัตโนมัติซึ่งถูกกำหนดให้กับทุกคอนเทนเนอร์ภายในแพลตฟอร์ม
  • ${envName} – ชื่อ environment (ไม่ใช่ alias) ที่ระบุในระหว่างการสร้าง
  • ${platformDomain} – ชื่อโดเมนของการติดตั้ง Ruk-Com Cloud ผู้ให้บริการโฮสต์

ตัวแปรทั้งสองสามารถใช้เพื่ออ้างถึงโหนดจากภายในหรือภายนอกแพลตฟอร์ม (เช่น อนุญาตให้สร้างการเชื่อมต่อทั้งภายในและภายนอก)

ชื่อโฮสต์เสริมสำหรับประเภทโหนดเฉพาะ

สแต็กที่ผ่านการรับรองจะมีคำนำหน้าชื่อโฮสต์เพิ่มเติม (เช่น ใช้ชื่อสแต็กที่เหมาะสมแทนโหนดสตริง) เพื่อให้การจัดการมีความสะดวกยิ่งขึ้น

หมายเหตุ: คำนำหน้าดังกล่าวใช้ได้เฉพาะโดเมนที่มี hyphen (-) เป็นตัวคั่นเท่านั้น

ประเภทโหนด สแต็ก ชื่อโฮสต์เพิ่มเติม
Custom Docker Сontainers docker${nodeId}-${envName}.${platformDomain}
Cassandra 1/2 cassandra${nodeId}-${envName}.${platformDomain}
CouchDB couchdb${nodeId}-${envName}.${platformDomain}
MariaDB 5/10 mariadb${nodeId}-${envName}.${platformDomain}
Memcached memcached${nodeId}-${envName}.${platformDomain}
DatabaseMongoDB 2/3 mongodb${nodeId}-${envName}.${platformDomain}
DatabaseMSSQL mssql${nodeId}-${envName}.${platformDomain}
MySQL 5.6/5.7
mysql${nodeId}-${envName}.${platformDomain}
Neo4j 1/2 neo4j${nodeId}-${envName}.${platformDomain}
OrientDB orientdb${nodeId}-${envName}.${platformDomain}
PostgreSQL 8/9 postgres${nodeId}-${envName}.${platformDomain}
Redis
redis${nodeId}-${envName}.${platformDomain}
VPS vps${nodeId}-${envName}.${platformDomain}

โดเมนสำรองทั้งหมดที่แสดงในตารางด้านบสามารถใช้เหมือนกับชื่อโฮสต์สำหรับคอนเทนเนอร์เฉพาะ

ชื่อโฮสต์สำหรับเลเยอร์โดยเฉพาะ

สำหรับ environment ใหม่คุณสามารถรับที่อยู่ IP ภายในของคอนเทนเนอร์ในโหนดเลเยอร์เดียวกันได้โดยใช้ชื่อโฮสต์ต่อไปนี้:

  • ${nodeGroup}.${envName}.${platformDomain}

${nodeGroup} คือชื่อของเลเยอร์เฉพาะที่คอนเทนเนอร์ต้องการอยู่ โดยค่าเริ่มต้น เลเยอร์จะถูกตั้งชื่อตามบทบาทเฉพาะของ nodeGroup ที่เหมาะสม

หมายเหตุ: กลุ่มโหนดที่เพิ่มผ่านเลเยอร์พิเศษใน topology wizard มีชื่อในลักษณะเดียวกันแต่มี ${N} index ที่เหมาะสม อีกทั้งเลเยอร์เริ่มต้นใน topology wizard (เช่น bl, cp, sqldb เป็นต้น) ถือเป็น index แรกดังนั้นการนับเลเยอร์เพิ่มเติมจะเริ่มต้นด้วยอันที่สอง เช่น cp2, cp3, cp4, … (ยกเว้น extra, extra2, extra3, …) ตัวอย่างเช่น:



ยกตัวอย่าง คำสั่งนี้สามารถใช้เพื่อรับรายการแอปพลิเคชันเซิร์ฟเวอร์สำหรับ environment ใดๆภายในแพลตฟอร์ม:

เคล็ดลับ: หากต้องการรับรายการคอนเทนเนอร์สำหรับ environment ปัจจุบันคุณสามารถใช้ได้เพียงชื่อโฮสต์แบบสั้นเท่านั้น

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

ชื่อโฮสต์แบบสั้นสำหรับคอนเทนเนอร์ภายในหนึ่ง environment

Docker คอนเทนเนอร์ที่สร้างขึ้นใหม่ทั้งหมดและสแต็กที่จัดการด้วย Ruk-Com Cloud ได้จัดเตรียมกฏสำหรับ DNS โดยเฉพาะที่อนุญาตให้ใช้ชื่อโฮสต์แบบง่ายเพิ่มเติมได้:

  • node${nodeId} – นามแฝงเพื่ออ้างอิงถึงคอนเทนเนอร์ในขอบเขตของ environment เดียว
  • ${nodeGroup} – นามแฝงเพื่ออ้างอิงถึงขอบเขตของเลเยอร์ environment เดียว

การใช้ชื่อโฮสต์สั้นๆ ดังกล่าวในไฟล์การกำหนดค่าเซิร์ฟเวอร์ source code ของแอปพลิเคชันและ SSH console (คำสั่งภายในที่ใช้บ่อย เช่น ping, host, dig ฯลฯ) ทำให้การทำงานกับ Dockerized stacks ผ่านเครือข่ายภายในของแพลตฟอร์มสะดวกยิ่งขึ้น นอกจากนี้วิธีการดังกล่าวยังช่วยให้การย้าย environment ไปยัง hardware region อื่นนั้นไม่ยากและไม่จำเป็นต้องปรับเปลี่ยนโค้ดของคุณเนื่องจากตำแหน่งเซิร์ฟเวอร์ที่เปลี่ยนไป

ชื่อโฮสต์สำหรับการเชื่อมโยงคอนเทนเนอร์

เมื่อเชื่อมโยง environment layer ที่ใช้สอง Docker เซตของ DNS records จะถูกเพิ่มไปยังฐานข้อมูล Ruk-Com Cloud ทั่วโลกโดยอัตโนมัติ ซึ่งจะช่วยอ้างอิงถึงโหนดภายในเลเยอร์เป้าหมายจากโหนดต้นทาง (แต่ไม่ใช่ในทางกลับกัน) เมื่อทำงานในขอบเขตของสองเลเยอร์โดยใช้ชื่อโฮสต์แฝงต่อไปนี้:

  • ${linkAlias} – อ้างอิงถึงโหนดสุ่มภายในเลเยอร์เป้าหมาย โหนดที่ถูกต้องที่จะตอบสนองนั้นถูกเลือกโดยใช้ Round-Robin algorithm – สิ่งนี้ทำให้มั่นใจได้ถึงการกระจายโหลด
  • ${linkAlias}_${N} – เพื่อเข้าถึงคอนเทนเนอร์เฉพาะภายในเลเยอร์เป้าหมาย ตัวยึดตำแหน่งที่เหมาะสมจะถูกแทนที่ด้วย
  • ${linkAlias} – ชื่อลิงก์ที่ระบุระหว่างการตั้งค่า (เช่น tomcat ในภาพด้านล่าง)
  • ${N} – หมายเลขในช่วง (1…N) ของคอนเทนเนอร์เฉพาะภายในเป้าหมายเลเยอร์ที่เชื่อมโยง (เช่น tomcat_1, tomcat_2) เป็นต้น พร้อมกันนี้ คอนเทนเนอร์หลักถือเป็นอินสแตนซ์ที่ 1 เสมอ ในขณะที่โหนดเลเยอร์ที่เหลือจะได้รับการกำหนดหมายเลขตามค่า nodeID โดยจะเรียงลำดับจากน้อยไปมาก (เริ่มต้นด้วย index _2 จากนั้น _3, _4 เป็นต้น)

ตัวอย่างเช่น หากมีคอนเทนเนอร์ 3 รายการบนเลเยอร์ – ด้วย ID 123, 124 (master) และ 125 ตามการใช้งานที่อธิบายไว้ข้างต้น นามแฝงจะถูกกำหนดดังนี้:

  • alias_1 – ลิงก์ไปยังคอนเทนเนอร์ 124 เป็นโหนดหลัก
  • alias_2 – จะชี้ไปที่อินสแตนซ์ 123 เนื่องจากมี ID ต่ำสุดในบรรดาคอนเทนเนอร์ที่เหลืออยู่
  • alias_3 – อ้างอิงถึงคอนเทนเนอร์ 125 เป็นรายการถัดไปที่มี nodeID ต่ำสุด

เคล็ดลับ: เมื่อเชื่อมต่อ environment domain เข้ากับ alias ${linkAlias}.${envName}.${platformDomain} ชื่อเลเยอร์ที่เชื่อมโยงเกี่ยวข้องจะสามารถแก้ไขได้และเข้าถึงได้จากภายนอก กล่าวคือ เข้าถึงจากที่ใดก็ได้ทางอินเทอร์เน็ตและ ${linkAlias}_${N} คอนเทนเนอร์ที่สอดคล้องกันของเลเยอร์ที่เชื่อมโยงสามารถแก้ไขได้ภายในเท่านั้น

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