ประสานชั้น Web, App และ DB
จัดลำดับการนำระบบหลายชั้นออกใช้
ประสานชั้น Web, App และ DB เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
แอปจริงมีหลายชั้น
สแตกทั่วไปจะแบ่งออกเป็นชั้นต่าง ๆ ได้แก่ เซิร์ฟเวอร์เว็บ เซิร์ฟเวอร์แอป และฐานข้อมูล แต่ละชั้นมีบทบาทและลำดับการนำไปใช้งานเป็นของตนเอง 🏗️
ลำดับมีความสำคัญ
โดยทั่วไปคุณจะเริ่มเปิดใช้งานฐานข้อมูลก่อน จากนั้นจึงเป็นแอป แล้วจึงเป็นชั้นเว็บ การกำหนดค่าชั้นต่าง ๆ ผิดลำดับจะทำให้การเปิดตัวล้มเหลว
หนึ่งเพลย์ต่อหนึ่งชั้น
กำหนดเพลย์ของตนเองให้แต่ละชั้นภายในเพลย์บุ๊กเดียวกัน เพลย์จะทำงานจากบนลงล่าง ดังนั้นลำดับของเพลย์จึงกำหนดลำดับการนำไปใช้งาน
- hosts: db
roles: [postgres]
- hosts: app
roles: [backend]
- hosts: web
roles: [nginx]กลุ่มสอดคล้องกับชั้นต่าง ๆ
กลุ่มในคลังโฮสต์ของคุณ เช่น db, app และ web จะสอดคล้องกับโฮสต์ที่แต่ละเพลย์กำหนดเป้าหมาย คลังโฮสต์คือโครงสร้างหลักของการประสานงาน
[db]
db01
[app]
app01
app02
[web]
web01
web02ส่งข้อมูลระหว่างชั้น
ชั้นเว็บมักต้องใช้ IP ของเซิร์ฟเวอร์แอป อ่านข้อมูลเหล่านี้ด้วย hostvars และกลุ่ม เพื่อเชื่อมชั้นหนึ่งเข้ากับอีกชั้นหนึ่ง
backends: "{{ groups['app'] | map('extract', hostvars, 'ansible_host') | list }}"รอให้ชั้นหนึ่งพร้อมใช้งาน
ก่อนเริ่มแอป ให้ยืนยันว่าพอร์ตฐานข้อมูลเปิดอยู่ด้วย wait_for วิธีนี้ช่วยป้องกันไม่ให้การทำงานดำเนินเร็วกว่าบริการที่เริ่มช้า
- ansible.builtin.wait_for:
host: db01
port: 5432
timeout: 60เรียกใช้การย้ายข้อมูลเพียงครั้งเดียว
การเปลี่ยนแปลงโครงสร้างฐานข้อมูลควรเกิดขึ้นเพียงครั้งเดียว ใช้ run_once ร่วมกับการมอบหมาย เพื่อให้โหนดแอปหนึ่งโหนดทำการย้ายข้อมูลของฐานข้อมูลที่ใช้ร่วมกัน
- ansible.builtin.command: ./migrate.sh
run_once: true
delegate_to: app01ข้ามชั้นด้วย delegate_to
เพลย์ของแอปสามารถดำเนินการกับชั้นเว็บได้โดยมอบหมายงานไปยังโฮสต์เว็บ เพลย์บุ๊กหนึ่งชุดสามารถประสานงานทุกชั้นได้
กำหนดแท็กให้ชั้นต่าง ๆ เพื่อการทำงานแบบเจาะจง
เพิ่มแท็ก เช่น db, app และ web ให้กับเพลย์ เพื่อให้คุณนำชั้นเดียวกลับไปใช้งานใหม่ด้วย --tags เมื่อมีการเปลี่ยนแปลงเพียงชั้นเดียว
- hosts: web
tags: web
roles: [nginx]หยุดอย่างรวดเร็วเมื่อเกิดข้อผิดพลาดในทั้งสแตก
ตั้งค่า any_errors_fatal เพื่อให้ข้อผิดพลาดในชั้น db หยุดการทำงานทั้งหมด ก่อนที่ชั้นแอปจะถูกนำไปใช้งานกับชั้นที่เสียหาย
- hosts: db
any_errors_fatal: true
roles: [postgres]สแตกทั้งหมดในไฟล์เดียว
เพลย์บุ๊กที่มีหลายเพลย์จะกลายเป็นสูตรการนำไปใช้งานของคุณ ซึ่งรวมทุกชั้นตามลำดับ พร้อมการเชื่อมต่อข้ามชั้นไว้ในที่เดียว
ตรวจสอบความเข้าใจอย่างรวดเร็ว
มาดูกันว่าชั้นต่าง ๆ ถูกจัดลำดับอย่างไร
สรุปทบทวน
ประสานงานชั้นต่าง ๆ ด้วยเพลย์หนึ่งรายการต่อหนึ่งชั้นตามลำดับการนำไปใช้งาน และเชื่อมโยงกันผ่านกลุ่ม hostvars, wait_for และการมอบหมาย ✅
คำถามที่พบบ่อย
บทเรียน “ประสานชั้น Web, App และ DB” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ประสานชั้น Web, App และ DB” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ประสานชั้น Web, App และ DB”
จัดลำดับการนำระบบหลายชั้นออกใช้ คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “ประสานชั้น Web, App และ DB” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ทำระบบอุปกรณ์เครือข่ายอัตโนมัติด้วย cli_command
- delegate_to และ run_once สำหรับการประสานงาน
- ประสานชั้น Web, App และ DB
- นำโหนดออกจาก Load Balancer แล้วนำกลับเข้า