เอเจนต์การจำลองแบบ push และ pull ข้าม VPN ระหว่างไซต์
ตำแหน่งของเอเจนต์ของการสมัครใช้บริการเป็นตัวกำหนดว่าเครื่องใดเปิดการเชื่อมต่อข้าม VPN เลือก push หรือ pull จากผู้ที่เป็นเจ้าของงาน ไม่ใช่จากลูกศรในแผนภาพ
ตำแหน่งของเอเจนต์ ไม่ใช่ตำแหน่งของข้อมูล คือการตัดสินใจที่กำหนดรูปร่างของการสมัครใช้บริการ SQL Server เครื่องที่รันเอเจนต์เป็นผู้เปิดการเชื่อมต่อ ทำงานภายใต้บัญชีที่เจาะจง และรับผิดชอบเมื่อการซิงโครไนซ์หยุดชะงัก บน VPN ระหว่างไซต์ ความต่างนั้นคือการออกแบบ ไม่ใช่รายละเอียด วาดการเชื่อมต่อของเอเจนต์ก่อนวาดเครือข่าย
สามบทบาท ไม่ใช่สอง
Publisher เป็นเจ้าของข้อมูลบทความ Distributor เป็นเจ้าของฐานข้อมูลการกระจาย และ Subscriber รับการเปลี่ยนแปลง Log Reader Agent ทำงานที่ Distributor สำหรับการจำลองแบบธุรกรรม Distribution Agent คือตัวที่ตำแหน่งเปลี่ยนตามประเภทการสมัครใช้บริการ จึงเป็นตัวกำหนดการออกแบบเครือข่าย ทำความเข้าใจบทบาทเหล่านี้ก่อนพูดถึงกฎของ VPN
การสมัครใช้บริการ push รัน Distribution Agent ที่ Distributor และการสมัครใช้บริการ pull รันที่ Subscriber ตามที่ เอกสารการสมัครใช้บริการ ของ Microsoft ระบุ ทุกอย่างในบทสนทนาของเครือข่ายขึ้นอยู่กับว่าเป็นเครื่องใด เขียนข้อเท็จจริงสี่ข้อสำหรับแต่ละการสมัครใช้บริการ ได้แก่ โฮสต์ของเอเจนต์ อัตลักษณ์ของโพรเซส บัญชีเข้าถึงฐานข้อมูลที่ใช้ และทรัพยากรที่ต้องเข้าถึง ลูกศรในแผนภาพไม่ใช่คำตอบ ข้อเท็จจริงเหล่านี้ต่างหากที่บอกว่าทิศทางใดต้องทำงาน
push หมายความว่าเอเจนต์อาศัยอยู่ที่ Distributor
ในการสมัครใช้บริการ push นั้น Distributor เปิดการเชื่อมต่อไปยัง Subscriber ผ่าน VPN ตัวรับฟัง ไฟร์วอลล์ และการเข้าสู่ระบบ SQL ฝั่งผู้ใช้บริการต้องยอมรับการเชื่อมต่อที่มาจากฝั่งไกล บัญชีบริการของ Distributor ก็ต้องการสิทธิ์บนฐานข้อมูลของผู้ใช้บริการด้วย วางแผนเส้นทางขาเข้านี้ก่อนสร้างการสมัครใช้บริการ เพราะการค้นพบภายหลังมักหมายถึงการสร้างใหม่
การส่งมอบสแนปช็อตเพิ่มเส้นทางที่การจำลองแบบตามปกติไม่เคยใช้ หากสแนปช็อตถูกวางไว้บนไฟล์แชร์ Distribution Agent จะอ่านจากแชร์นั้นและบัญชีของผู้ใช้บริการต้องเข้าถึงเส้นทาง UNC เดียวกัน สตรีมการเปลี่ยนแปลงที่ไหลต่อเนื่องหลายสัปดาห์ไม่ได้บอกอะไรว่าการเริ่มต้นใหม่จะได้ผลหรือไม่ นั่นคือเหตุผลที่ไฟล์แชร์ของสแนปช็อตต้องอยู่ในแผนตั้งแต่ต้น
อย่าอ่าน push เป็นการรับส่งทางเดียว เอเจนต์ต้องการการตอบกลับ การยืนยัน และการแลกเปลี่ยนการรับรองความถูกต้องของตัวเอง เส้นทางต้องเป็นสองทางในระดับการเชื่อมต่อ แม้ข้อมูลจะเคลื่อนที่ไปทางเดียว
pull หมายความว่าเอเจนต์อาศัยอยู่ที่ Subscriber
การสมัครใช้บริการ pull กลับด้านการเชื่อมต่อ ผู้ใช้บริการจะรัน Distribution Agent และติดต่อไปยัง Distributor การจัดวางนี้เหมาะกับนโยบาย VPN ที่อนุญาตการเชื่อมต่อขาออกจากสาขาและปิดกั้นการเชื่อมต่อขาเข้า อีกทั้งยังมอบการตัดสินใจเรื่องตารางเวลาให้ผู้ดูแลเซิร์ฟเวอร์ของสาขา เลือกรูปแบบนี้เมื่อทีมสาขาควรเป็นเจ้าของการซิงโครไนซ์ของตนเองและสังเกตความล้มเหลวของตนเอง
บัญชีบริการ SQL Server Agent ของผู้ใช้บริการต้องการสิทธิ์อ่านบนฐานข้อมูลการกระจายและบนไฟล์แชร์ของสแนปช็อต บัญชีนั้นคืออัตลักษณ์ที่ปรากฏในข้อผิดพลาดของการจำลองแบบ และบัญชีบริการภายในที่ไม่มีสิทธิ์โดเมนจะล้มเหลว ณ จุดที่ดูเหมือนความขัดข้องของเครือข่ายแต่จริง ๆ แล้วเป็นความขัดข้องของข้อมูลรับรอง ตรวจสอบบัญชีก่อนแก้ไขปัญหาอุโมงค์ การแก้ไขการเข้าสู่ระบบมักเร็วกว่าการพิสูจน์ว่าเครือข่ายบริสุทธิ์
ความเป็นเจ้าของตามเอเจนต์ไป เลือก push เมื่อทีมกลางควรเป็นเจ้าของทั้งตารางเวลาและความล้มเหลว ไม่ว่าจะเลือกสิ่งใด ให้จดไว้ข้างการสมัครใช้บริการเพื่อให้วิศวกรคนถัดไปรู้ว่าควรมองที่ใดก่อน
การเผยแพร่ซ้ำเปลี่ยนการกระจาย ไม่ใช่ความเป็นเจ้าของ
ผู้ใช้บริการสามารถกำหนดค่าให้เผยแพร่ซ้ำไปยังผู้ใช้บริการรายอื่นได้ ทำให้ฐานข้อมูลสาขาเดียวให้บริการผู้บริโภคภายในหลายรายโดยที่แต่ละรายไม่ต้องดึงข้าม WAN ฐานข้อมูลตรงกลางตอนนี้เก็บสิ่งพิมพ์และเอเจนต์ของตัวเองไว้ อีกทั้งยังสืบทอดสิทธิ์ การเฝ้าติดตาม และแผนการกู้คืนที่เดิมไม่มี บทบาทเพิ่มเติมนั้นคือราคาของการขจัดการส่งมอบผ่าน WAN ที่ซ้ำซาก
ลำดับที่บันทึกไว้มีความสำคัญ เริ่มต้นการสมัครใช้บริการขาเข้าก่อนสร้างสิ่งพิมพ์ปลายทาง ให้ถือเป็นขั้นตอนของวงจรชีวิตที่มีการตรวจสอบ ไม่ใช่เอกสารที่ข้ามได้ หากกลับลำดับจะได้ห่วงโซ่ที่ดูเหมือนกำหนดค่าไว้แต่ไม่ส่งมอบอะไรเลย
ระบุรูปแบบการเขียนอย่างชัดเจน การจำลองแบบชุดข้อมูลที่อ่านอย่างเดียวไปยังผู้บริโภคภายในเป็นการออกแบบที่ต่างจากการรับการเขียนในหลายไซต์ และห่วงโซ่ลูกศรไม่ได้สร้างการแก้ไขความขัดแย้ง หากสาขาต้องเขียน นั่นคือการตัดสินใจแยกต่างหากที่มีโทโพโลยีของตัวเอง ทำให้การพึ่งพาเห็นได้ชัดด้วย เมื่อผู้เผยแพร่ซ้ำหยุดทำงาน ผู้บริโภคทุกรายใต้ตัวมันจะล้าสมัย
พิสูจน์ตำแหน่งตั้งแต่ต้นจนจบ
อ่านประเภทการสมัครใช้บริการจากฐานข้อมูลการกระจายแทนการเชื่อถือความจำ จากนั้นตรวจสอบว่าการเปลี่ยนแปลงมาถึงจริงหรือไม่
USE distribution;
SELECT publication, subscriber_db, subscription_type
FROM dbo.MSsubscriptions;
EXEC sp_replmonitorsubscriptionpendingcmds
@publisher = 'PUB1', @publisher_db = 'Sales',
@publication = 'SalesPub', @subscriber = 'BR1',
@subscriber_db = 'Sales';
subscription_type ที่มีค่า 0 คือ push และ 1 คือ pull และไม่สามารถเปลี่ยน ณ ที่ได้ ดังนั้นความไม่ตรงกันหมายถึงการสร้างการสมัครใช้บริการใหม่ ไม่ใช่การแก้ไข การเรียกคำสั่งที่รอดำเนินการบอกคุณว่าเอเจนต์ที่เลือกกำลังเคลื่อนย้ายงานหรือเพียงแค่ทำงานอยู่ การสมัครใช้บริการที่รายงานคำสั่งรอดำเนินการเป็นศูนย์ในขณะที่ตารางของผู้ใช้บริการยังว่างอยู่เป็นความขัดข้องที่ต่างจากการรายงานคิวที่เพิ่มขึ้น และทั้งสองนำไปสู่เจ้าของที่ต่างกัน
จบด้วยการเปลี่ยนแปลงจริง ใส่หรืออัปเดตหนึ่งแถวที่ Publisher รอรายงานจากเอเจนต์ แล้วอ่านแถวนั้นที่ Subscriber ทำอีกครั้งระหว่างการหยุดชะงักของ VPN สั้น ๆ เพื่อดูว่าเอเจนต์ฟื้นตัวอย่างไร การสมัครใช้บริการที่ผ่านการทดสอบนั้นมีตำแหน่งที่คุณสามารถบันทึกและปกป้องได้