Score:0

การเมานต์ไฟล์ Azure ใน Azure App Service

ธง kh

สรุป

ฉันมี Azure App Service ที่ใช้งานคอนเทนเนอร์แบบกำหนดเอง เมื่อฉันผูกพาธไปยังไฟล์ Azure ที่แชร์คอนเทนเนอร์ของฉันหยุดทำงาน มองไปที่ ปัญหาคอนเทนเนอร์ บันทึก ฉันเห็นข้อผิดพลาด: [BYOS] ไดรฟ์ข้อมูลพื้นที่เก็บข้อมูลแบบกำหนดเองไม่สามารถเริ่มต้นได้: [/var/LWASFiles/Sites/my-app/a3484543-39f9-45a3-816b-9524640dfd50].

รายละเอียด

  • คอนเทนเนอร์แบบกำหนดเองของฉันมีปริมาณที่กำหนด /var/www/html/v3/uploads.

  • ฉันกำลังพยายามแมปสิ่งนี้กับการแชร์ไฟล์ Azure ซึ่งอยู่ในบัญชีที่เก็บข้อมูลใน vnet เดียวกับโฮสติ้ง ASE โดยมีกฎอนุญาตการรับส่งข้อมูลระหว่างซับเน็ตของ ASE และการแชร์ไฟล์บนพอร์ต 137, 138, 138 และ 445 .

  • ASE ที่โฮสต์นั้นได้รับการกำหนดค่าด้วยโหลดบาลานเซอร์ภายใน (เช่น เป็น ASE ส่วนตัว)

  • บัญชีที่เก็บข้อมูลมีการกำหนดค่าปลายทางส่วนตัว

  • ปริมาณจะถูกแมปภายใต้ App Service's Settings > Configuration > Path mappings โดยใช้คีย์ที่ถูกต้องและพาธเมานต์ซึ่งตรงกับพาธวอลุ่มบนคอนเทนเนอร์

  • ก่อนที่จะเพิ่มการแมปเส้นทาง บริการแอปจะทำงานตามที่คาดไว้

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

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

  • เชื่อมต่อกับ MySql DB (ฐานข้อมูล Azure สำหรับเซิร์ฟเวอร์ MySQL) ได้สำเร็จผ่านจุดสิ้นสุดส่วนตัว

  • โดยใช้ ขุด {privateEndpointFqdn} ฉันสามารถพิสูจน์ได้ว่าจุดสิ้นสุดส่วนตัวของบัญชี Storage ได้รับการแก้ไขอย่างถูกต้อง (เช่นเดียวกับ MySQL ตามที่คุณคาดหวัง)

  • โดยใช้ tcptraceroute {privateEndpointFqdn} {ปลายทาง} ฉันสามารถพิสูจน์ได้ว่าฉันสามารถเชื่อมต่อกับบัญชีที่เก็บข้อมูลบนพอร์ต 445 (และกับ MySQL DB บนพอร์ต 3306)

  • หมายเหตุ: ฉันไม่สามารถเชื่อมต่อกับบัญชีที่เก็บข้อมูลบนพอร์ต 137, 138 หรือ 139 ได้ แม้จะได้รับอนุญาตผ่าน NSG ในกฎขาเข้าและขาออกเดียวกันกับที่ใช้กับ 445 ข้างต้น แม้ว่าฉันสงสัยว่าพอร์ตเหล่านั้นไม่จำเป็นสำหรับ CIFS อีกต่อไป (ฉันเพิ่มสิ่งเหล่านี้เป็นมาตรการในกรณีฉุกเฉินเท่านั้นหลังจากพบปัญหาครั้งแรกในกรณีที่พวกเขาเกี่ยวข้องอย่างใดตามที่กล่าวไว้ในบางโพสต์)

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

  • ฉันเพิ่มขึ้น WEBSITES_CONTAINER_START_TIME_LIMIT เป็นค่าสูงสุด: 1800

  • คอนเทนเนอร์ของฉันเปิดเผยพอร์ต 80 (เช่น หนึ่งในพอร์ตเริ่มต้นที่รองรับโดย App Service สำหรับคอนเทนเนอร์) และเว็บไซต์จะทำงานเมื่อไม่มีการแมปเส้นทาง ดังนั้นจึงไม่ควรเป็นปัญหา ฉันยังตั้งค่า WEBSITES_PORT ถึง 80เฉพาะสำหรับเข็มขัดและสายรัด

  • WEBSITES_ENABLE_APP_SERVICE_STORAGE ถูกตั้งค่าเป็น เท็จ (แม้ว่าฉันจะทดลองตั้งค่าเป็น จริงในกรณี / มันไม่สร้างความแตกต่างดังนั้นฉันจึงเปลี่ยนกลับเป็น เท็จ).

  • การแชร์ไฟล์ของฉันมีข้อมูลหลาย GB ฉันได้ลองสร้างการแชร์ไฟล์ที่เหมือนกันโดยไม่มีเนื้อหาและจับคู่กับสิ่งนั้น (ทันทีหลังจากสร้างบริการแอพใหม่และพิสูจน์ว่าใช้งานได้ เพื่อให้แน่ใจว่าการทดสอบของฉันไม่ได้รับผลกระทบจากการค้างของไฟล์แชร์ขนาดใหญ่) สิ่งนี้ให้ปัญหาเดียวกันกับการแชร์ไฟล์ที่ใหญ่ขึ้น

  • กำลังโหลดอิมเมจสำหรับคอนเทนเนอร์ของฉันจาก Azure Container Repo

  • ภาพอ้างอิงจาก อูบุนตู:21.04

  • ฉันได้รวม สีฟ้า-cli และ ยูทิลิตี้ cifs แพ็คเกจ (ฉันคิดว่านี่จำเป็นเฉพาะเมื่อดำเนินการเมานต์จากคอนเทนเนอร์แทนที่จะมาจากการกำหนดค่าของ AppService แต่ฉันต้องการครอบคลุมสมมติฐานทั้งหมด)

  • ASE โฮสติ้งอยู่ใน ทางใต้ของสหราชอาณาจักร ภูมิภาค (เช่นเดียวกับบัญชีพื้นที่เก็บข้อมูล / ทรัพยากรทั้งหมด)

หมายเหตุ: นี่เป็นประสบการณ์ครั้งแรกของฉันกับการเรียกใช้คอนเทนเนอร์ใน App Service; ดังนั้น PEBKAC จึงมีความเป็นไปได้อย่างแน่นอน

คำแนะนำหรือคำแนะนำในการแก้ไขปัญหาใด ๆ ที่จะได้รับการชื่นชมมาก ขอขอบคุณ.

ng flag
เพื่อยืนยันว่านี่คือการติดตั้งการแชร์ Azure Files SMB ไม่ใช่ NFS ใช่ไหม
kh flag
ถูกต้อง; SMB/CIFS
Score:0
ธง kh

ฉันแก้ไขปัญหาโดยเปลี่ยนเครือข่ายของบัญชีที่เก็บข้อมูลจาก เครือข่ายที่เลือก (ซึ่งฉันอนุญาตพิเศษโดย VNet ของ ASE และ IP ขาออกสำหรับเว็บแอป) เป็น ทุกเครือข่าย ผ่านพอร์ทัล:

https://portal.azure.com/#@<myTentantName>.onmicrosoft.com/resource/subscriptions/<mySubscrption>/resourceGroups/<myStorageAccountsResourceGroup>/providers/Microsoft.Storage/storageAccounts/<myStorageAccountName>/networking

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

#หยุดเว็บแอป
az webapp หยุด \
    --สมัครสมาชิก <sub id> \
    -g <กลุ่มทรัพยากร> \
    -n <ชื่อเว็บไซต์> 

# ละทิ้งการแมปเส้นทางที่มีอยู่
az webapp config บัญชีที่เก็บข้อมูลลบ \
    --สมัครสมาชิก <sub id> \
    -g <กลุ่มทรัพยากร> \
    -n <ชื่อเว็บไซต์> \
    --custom-id <ชื่อเส้นทางการแมป> \

# เพิ่มการแมปเส้นทางอีกครั้ง
az webapp config บัญชีที่เก็บข้อมูลเพิ่ม \
    --สมัครสมาชิก <sub id> \
    -g <กลุ่มทรัพยากร> \
    -n <ชื่อเว็บไซต์> \
    --custom-id <ชื่อเส้นทางการแมป> \
    --Storage ประเภท AzureFiles \
    --ชื่อบัญชี [ชื่อบัญชีที่เก็บข้อมูล Azure] \
    --share-name [ชื่อที่เก็บข้อมูล Azure ที่ใช้ร่วมกัน] \
    --access-key [รหัสการเข้าถึงที่เก็บข้อมูล] \
    --mount-path [/ เส้นทาง/ถึง/เมานต์ภายในคอนเทนเนอร์] 

# รีสตาร์ทเว็บแอป
az webapp เริ่มต้น \
    --สมัครสมาชิก <sub id> \
    -g <กลุ่มทรัพยากร> \
    -n <ชื่อเว็บไซต์> 

โพสต์คำตอบ

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