Wordpress บน IIS การจำลองแบบด้วย robocopy


10

เราตั้งค่าสภาพแวดล้อม wordpress บนเซิร์ฟเวอร์ 4 IIS เรากำลังพิจารณาใช้งานที่กำหนดเวลาเพื่อเรียกใช้สคริปต์ robocopy เพื่อทำซ้ำไดเรกทอรี wordpress ทุก 5 นาที

อะไรคือความคิดเห็นเกี่ยวกับวิธีการดังกล่าว? มีใครเคยใช้สิ่งนี้หรือคล้ายกันบ้าง


เซิร์ฟเวอร์ IIS 4 phyical หรือ VM คืออะไร คุณกำลังจำลองข้อมูลหรือฐานข้อมูลและการตั้งค่าคืออะไร ไม่แน่ใจว่าทำไมคุณถึงมี 4 เซิร์ฟเวอร์ 1 เป็นผู้เชี่ยวชาญ (ฉันกำลังสมมติ) และอีกคนหนึ่งอยู่เฉยๆถ้าคุณพยายามที่จะทำให้ HA ที่จะไม่ทำงาน
Anthony Fornito

1
คำถามที่สอง (และอาจสำคัญที่สุด) ทำไมคุณถึงเรียกใช้เวิร์ดเพรสบน windows?
Anthony Fornito

ขอบคุณ @AnthonyFornito สำหรับคำตอบของคุณ ใช้ wordpress บน windows เพื่อเหตุผลภายใน ฉันแค่พยายามที่จะทำงานกับมัน ฉันหลังจากการจำลองแบบของไฟล์เว็บไซต์ (การจำลองแบบฐานข้อมูลได้รับการจัดการผ่านทาง MySQL) ปลายด้านหน้าคือ VMs บน Azure ฉันเป็นหลักหลังจากแก้ปัญหาที่ปลายด้านหน้าทั้งหมดแบ่งปันไฟล์เว็บไซต์เดียวกัน มีอะไรที่คุณอยากจะแนะนำ?
joebegborg07

คำตอบ:


12

การมีเซิร์ฟเวอร์ส่วนหน้า 4 ตัวที่ใช้ไฟล์เดียวกันในเวลาเดียวกันและแต่ละไฟล์สามารถเขียนได้โดยไม่ต้องใช้ DFS หรือโปรแกรมของบุคคลที่สามที่ทุ่มเทให้กับการทำข้อมูลไดเรกทอรีให้ตรงกัน

ด้วยสีฟ้าคุณสามารถดู 3 สิ่ง

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

  2. Azure DFS, DFS เป็นเครื่องมือการซิงโครไนซ์ไดเรกทอรีที่ใช้ windows ซึ่งทำงานได้ค่อนข้างดีและไม่แน่ใจเกี่ยวกับค่าใช้จ่าย แต่การกำหนดค่าอาจทำได้ง่ายกว่าเล็กน้อย DFS ทำงานแบบอะซิงโครนัสดังนั้นจึงมีความล่าช้าเล็กน้อย แต่ไม่มาก

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

ตัวเลือกอย่างใดอย่างหนึ่งจากด้านบนจะทำงานถ้างานของคุณขึ้นอยู่กับงานนี้ฉันขอแนะนำให้คุณหลีกเลี่ยงตัวเลือก 3

ที่ถูกกล่าวและคุณไม่ได้พยายามใช้เงินทำตามขั้นตอนด้านล่าง

  1. ดูโปรแกรมที่เรียกว่า "ซิงค์ไฟล์ฟรี" มีบางคุณสมบัติที่ดีจริง ๆ กับรุ่นฟรีฉันเชื่อว่ามีการจ่ายเงินสำหรับรุ่น แต่ฉันไม่แน่ใจในการปรับปรุงที่คุณได้รับ ฉันได้ใช้มันในสภาพแวดล้อมการพัฒนาของฉันจำนวนมากเมื่อพยายามทำสิ่งที่คล้ายกับสิ่งที่คุณต้องการทำและขี้เกียจที่จะติดตั้ง DFS

  2. สร้างเซิร์ฟเวอร์เดียวที่เขียนได้นี้สามารถทำได้ง่าย ๆ โดยกำหนดค่า URI บนแต่ละเซิร์ฟเวอร์ที่ระบุว่าถ้าสร้างบทความไปที่ ServerA หรือ URL เขียนใหม่ใน web.config ของคุณหรือว่า WordPress ใช้ php:

    header ('ตำแหน่ง: http://myhost.com/mypage.php ');

แต่ละคนจะใช้เวลาเล็กน้อยในการเขียนโค้ดและความรู้เกี่ยวกับ PHP, IIS

  1. ส่วนที่สนุกจริง ๆ โดยที่ ServerA เป็นเซิร์ฟเวอร์ผู้เขียน (เซิร์ฟเวอร์ที่เขียนได้เท่านั้น) เราจะส่งทราฟฟิกไปยัง ServerB, ServerC และ ServerD สำหรับการอ่านได้อย่างไรโดยไม่ต้องโหลดบาลานเซอร์?

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

ดูว่าคุณไม่สามารถกำหนดค่า Network Load Balancing บนเซิร์ฟเวอร์ได้หรือไม่จะต้องมี IP เพิ่มเติม แต่จะมีการเปลี่ยนแปลง DNS เพียงรายการเดียวและปริมาณการใช้งานสามารถแจกจ่ายเพื่อการอ่านผ่านเซิร์ฟเวอร์ 3 เครื่อง

โชคดี!


ขอบคุณมากสำหรับคำแนะนำของคุณ ที่เก็บข้อมูลส่วนกลางอันเดียวเป็นคอขวดสำหรับเราเนื่องจากเรามีการตั้งค่านั้นมาก่อน แต่ไม่ได้รับมือกับปริมาณการใช้งานสูง เราต้องการโซลูชันที่รวดเร็วเนื่องจากกำหนดเวลา ในที่สุดเราใช้ resilio ซึ่งเป็นโซลูชันการซิงค์ตามเวลาจริงแบบ peer-to-peer ซึ่งตรวจจับการเปลี่ยนแปลงในเซิร์ฟเวอร์ใด ๆ และทำซ้ำกับเซิร์ฟเวอร์อื่น ฉันหวังว่าทุกคนที่มีปัญหาเดียวกันหรือคล้ายคลึงกันอาจมีวิธีนี้แก้ปัญหาแบบเดียวกับที่เราทำ ฉันกำลังทดสอบข้อเสนอแนะของคุณเกี่ยวกับ URL เขียนใหม่สำหรับ WP backend และผลักดันการเปลี่ยนแปลงไปยังเครื่องอื่น ขอบคุณอีกครั้ง.
joebegborg07

NLB ไม่ทำงานบน Azure (ไม่มีเลเยอร์ 2 ถ้าคุณต้องการฝันร้ายที่น่ากลัวจริงๆลองดูตาราง ARP บน Azure VM)
Massimo

12

ขอบคุณสำหรับคำแนะนำทุกคน

โซลูชันของเราใช้วิธีการซิงโครไนซ์แบบ peer-to-peer โดยใช้เครื่องมือที่เรียกว่า resilio

Resilio ช่วยให้เราสามารถกำหนดค่าคอมพิวเตอร์จำนวนหนึ่ง (ในกรณีนี้ IIS Front ลงท้ายด้วย) ในคลัสเตอร์การประสานแบบ peer-to-peer โฟลเดอร์จะถูกเลือกจากคอมพิวเตอร์แต่ละเครื่องในคลัสเตอร์ที่จะใช้สำหรับกระบวนการซิงโครไนซ์

บริการ resilio (บริการ windows ที่ทำงานในพื้นหลัง) ตรวจสอบโฟลเดอร์เหล่านี้สำหรับการเปลี่ยนแปลงใด ๆ และหากมีการเปลี่ยนแปลงใด ๆ กับโฟลเดอร์ที่ระบุที่อยู่ด้านหน้าสุดคำถาม resilio จะผลักดันการเปลี่ยนแปลงนั้นไปยังเซิร์ฟเวอร์อื่น ๆ

ฉันหวังว่าสิ่งนี้จะช่วยให้ผู้อื่นประสบปัญหาที่คล้ายกันในอนาคต


11

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

การวางเนื้อหา wp ของคุณหรืออาจแค่แค่ไฟล์ wp-content / uploads ไปยังไดรฟ์ที่แชร์นั้นเป็นวิธีที่ดีกว่า อีกวิธีในการดูที่นี่คือการมีเซิร์ฟเวอร์โฮสต์โฮสต์โฟลเดอร์นั้นและให้คนอื่นแบ่งปัน ด้วยการแคชดิสก์การโหลดบนเซิร์ฟเวอร์ไม่ควรสูงกว่าเซิร์ฟเวอร์อื่นมากนัก

ปรับปรุง

ดูบทความนี้สำหรับแนวคิดเกี่ยวกับการแคชหน้าและอีกหนึ่งสำหรับ CDN มันเกี่ยวกับ Nginx ดังนั้นคุณจะต้องใช้มันกับ IIS แต่ทฤษฏีเบื้องหลังมันใช้ได้กับเว็บเซิร์ฟเวอร์ใด ๆ


ขอบคุณสำหรับคำแนะนำของคุณ @Tim ดังที่คุณกล่าวว่าเว็บไซต์นั้นเป็นแบบไดนามิกโดยมีการอัปเดตไฟล์เล็กน้อยเป็นประจำเนื่องจากมีปลั๊กอินเวิร์ดเพรสอยู่ นั่นหมายความว่าทุกส่วนหน้าอาจมีไฟล์ต่างกันในบางครั้ง คุณเคยทดสอบสภาพแวดล้อมการใช้งานจริง (มีผู้ใช้งานพร้อมกันประมาณ 500 - 1,000 คน); คือการจัดเก็บไฟล์เว็บไซต์ในที่เก็บส่วนกลางและแมปผ่านไดรฟ์ที่ใช้ร่วมกัน? ถ้าใช่ประสบการณ์เป็นอย่างไร
joebegborg07

ไม่ฉันไม่ได้ทดสอบสถานการณ์นั้น - ฉันไม่จำเป็นเพราะฉันแคชและใช้ CDN คุณจะต้องโหลดทดสอบเซิร์ฟเวอร์ส่วนหน้ารวมถึงไฟล์เซิร์ฟเวอร์ด้านหลัง อย่างไรก็ตามหากหน้าเว็บของคุณไม่ได้ถูก cutomised สำหรับการแคชหน้าผู้ใช้แต่ละครั้งสามารถลดภาระของคุณได้อย่างหนาแน่นเช่นเดียวกับการใช้การกระจายเนื้อหา - CloudFlare มีระดับที่ฟรี สิ่งนี้เป็นจริงแม้ว่าคุณจะอัพเดททุก 5 นาที Google "Nginx Microcaching" สำหรับทฤษฎีที่อยู่เบื้องหลัง แต่คุณจะต้องใช้มันอย่างแตกต่างบน IIS ส่วนหัวการแคชค่อนข้างสำคัญหากคุณไปเส้นทางนี้ ดูการอัปเดตข้างต้นด้วย
ทิม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.