หุ่นเชิดจริง ๆ แล้วยืมตัวสวยดีกับสภาพแวดล้อม multi-master กับ caveats ตัวหลัก? หุ่นส่วนต่าง ๆ จำนวนมากต้องการรวมศูนย์ ผู้ให้บริการออกใบรับรอง, คลังโฆษณาและบริการแดชบอร์ด / รายงาน, การกำหนดค่าแฟ้มและการจัดเก็บ - พวกเขาทั้งหมดอยู่ในที่ที่ดีที่สุดในการตั้งค่า (หรือเพียงแค่ต้องการ) ที่มีเพียงที่เดียวสำหรับพวกเขา
แม้ว่ามันจะใช้การได้ค่อนข้างมากในการทำให้ชิ้นส่วนที่เคลื่อนไหวเหล่านั้นทำงานในสภาพแวดล้อมแบบ multi-master ถ้าคุณตกลงกับการสูญเสียฟังก์ชันบางอย่างเมื่อคุณทำเว็บไซต์หลักหายไป
เริ่มจากฟังก์ชั่นพื้นฐานเพื่อรับการรายงานโหนดกับต้นแบบ:
โมดูลและการแสดงออก
ส่วนนี้ง่าย เวอร์ชันควบคุมพวกเขา หากเป็นระบบควบคุมเวอร์ชันแบบกระจายให้ทำการรวมศูนย์และทำให้ข้อมูลตรงกันและปรับเปลี่ยนโฟลว์ push / pull ตามต้องการในไซต์ failover หากเป็นการโค่นล้มคุณอาจต้องการsvnsync
repo ไปยังไซต์ failover ของคุณ
ผู้ออกใบรับรอง
ทางเลือกหนึ่งที่นี่คือการซิงค์ไฟล์หน่วยงานผู้ออกใบรับรองระหว่างผู้ดูแลระบบเพื่อให้ทุกคนแบ่งปันใบรับรองหลักที่เหมือนกันและสามารถลงชื่อใบรับรองได้ สิ่งนี้ทำให้ฉันหลงทางว่า "ทำผิด";
- ต้นแบบหนึ่งควรเห็นใบรับรองของตนเองที่นำเสนอในการรับรองความถูกต้องของลูกค้าสำหรับการเชื่อมต่อขาเข้าจากต้นแบบอื่นว่าถูกต้องหรือไม่
- สิ่งนี้จะทำงานได้อย่างน่าเชื่อถือสำหรับบริการสินค้าคงคลังแดชบอร์ด ฯลฯ หรือไม่
- คุณจะเพิ่มชื่อ DNS alt ที่ถูกต้องได้อย่างไร
ฉันไม่สามารถพูดได้อย่างตรงไปตรงมาว่าฉันได้ทำการทดสอบตัวเลือกนี้อย่างละเอียดเนื่องจากมันดูน่ากลัว แต่ก็ดูเหมือนว่าหุ่น Labs ไม่ได้มองเพื่อส่งเสริมให้ตัวเลือกนี้ต่อโน้ตที่นี่
ดังนั้นสิ่งที่เหลือไว้ก็คือจะต้องมีผู้เชี่ยวชาญหลักของแคลิฟอร์เนีย ความสัมพันธ์ที่เชื่อถือได้ทั้งหมดยังคงใช้งานได้เมื่อ CA หยุดทำงานเนื่องจากไคลเอนต์และผู้เชี่ยวชาญอื่น ๆ แคชใบรับรอง CA และ CRL (แม้ว่าพวกเขาจะไม่รีเฟรช CRL บ่อยเท่าที่ควร) แต่คุณจะไม่สามารถลงชื่อใบรับรองใหม่ได้จนกว่า คุณได้รับไซต์หลักสำรองหรือคืนค่าต้นแบบ CA จากการสำรองข้อมูลที่ไซต์ failover
คุณจะเลือกนายหนึ่งคนเพื่อทำหน้าที่เป็น CA และปิดการใช้งานปริญญาโทอื่น ๆ ทั้งหมด:
[main]
ca_server = puppet-ca.example.com
[master]
ca = false
จากนั้นคุณจะต้องการให้ระบบส่วนกลางนั้นรับปริมาณการรับส่งข้อมูลที่เกี่ยวข้องทั้งหมด มีตัวเลือกน้อยสำหรับสิ่งนี้;
- ใช้การ
SRV
สนับสนุนบันทึกใหม่ใน 3.0 เพื่อชี้โหนดเอเจนต์ทั้งหมดไปยังสถานที่ที่เหมาะสมสำหรับ CA -_x-puppet-ca._tcp.example.com
- ตั้งค่า
ca_server
ตัวเลือกการกำหนดค่าในpuppet.conf
ตัวแทนทั้งหมด
พร็อกซีการรับส่งข้อมูลทั้งหมดสำหรับคำขอที่เกี่ยวข้องกับ CA จากตัวแทนไปยังต้นแบบที่ถูกต้อง ตัวอย่างเช่นหากคุณใช้งานปรมาจารย์ใน Apache ผ่านทาง Passenger ให้กำหนดค่านี้ใน non-CAs:
SSLProxyEngine On
# Proxy on to the CA.
ProxyPassMatch ^/([^/]+/certificate.*)$ https://puppet-ca.example.com:8140/$1
# Caveat: /certificate_revocation_list requires authentication by default,
# which will be lost when proxying. You'll want to alter your CA's auth.conf
# to allow those requests from any device; the CRL isn't sensitive.
และควรทำเช่นนั้น
ก่อนที่เราจะไปยังบริการเสริมข้อความด้านข้าง
ชื่อ DNS สำหรับใบรับรองหลัก
ฉันคิดว่านี่ตรงนี้เป็นเหตุผลที่น่าสนใจที่สุดที่จะย้ายมาที่ 3.0 สมมติว่าคุณต้องการชี้โหนดไปที่ "any ol 'working master"
ภายใต้ 2.7 คุณจะต้องมีชื่อ DNS ทั่วไปเช่นpuppet.example.com
และผู้เชี่ยวชาญทุกคนต้องการสิ่งนี้ในใบรับรอง นั่นหมายถึงการตั้งค่าdns_alt_names
ในการกำหนดค่าการออกใบรับรองที่พวกเขามีก่อนที่จะถูกกำหนดค่าเป็นต้นแบบการออกใบรับรองอีกครั้งเมื่อคุณต้องการเพิ่มชื่อ DNS ใหม่ลงในรายการ (เช่นถ้าคุณต้องการชื่อ DNS หลายชื่อเพื่อ มีตัวแทนชอบปริญญาโทในเว็บไซต์ของพวกเขา) .. น่าเกลียด
ด้วย 3.0 คุณสามารถใช้SRV
บันทึก มอบสิ่งนี้ให้กับลูกค้าของคุณ
[main]
use_srv_records = true
srv_domain = example.com
จากนั้นไม่จำเป็นต้องมีใบรับรองพิเศษสำหรับผู้เชี่ยวชาญเพียงแค่เพิ่มระเบียนใหม่ลงในSRV
RR ของคุณที่_x-puppet._tcp.example.com
และคุณได้รับการตั้งค่าให้เป็นมาสเตอร์สดในกลุ่ม ยังดีกว่าคุณสามารถทำให้ตรรกะการเลือกหลักมีความซับซ้อนมากขึ้น "ต้นแบบการทำงานของ ol ใด ๆ แต่ต้องการหนึ่งในไซต์ของคุณ" โดยการตั้งค่าชุดSRV
ระเบียนที่แตกต่างกันสำหรับเว็บไซต์ที่แตกต่างกัน ไม่dns_alt_names
จำเป็น
รายงาน / แดชบอร์ด
อันนี้ทำงานได้ดีที่สุดจากส่วนกลาง แต่ถ้าคุณสามารถอยู่ได้โดยปราศจากมันเมื่อไซต์หลักของคุณหยุดทำงานแสดงว่าไม่มีปัญหา เพียงแค่กำหนดค่าอาจารย์ทั้งหมดของคุณด้วยตำแหน่งที่ถูกต้องในการจัดทำรายงาน ..
[master]
reports = http
reporturl = https://puppetdash.example.com/reports/upload
.. และคุณพร้อมแล้ว ความล้มเหลวในการอัปโหลดรายงานนั้นไม่ร้ายแรงสำหรับการรันการกำหนดค่า มันจะหายไปถ้าขนมปังของเซิร์ฟเวอร์แดชบอร์ด
สินค้าคงคลังข้อเท็จจริง
อีกสิ่งที่ดีในการติดตั้งแดชบอร์ดของคุณคือการบริการสินค้าคงคลัง ด้วยการfacts_terminus
ตั้งค่าให้rest
เป็นที่แนะนำในเอกสารประกอบสิ่งนี้จะเป็นการทำลายการกำหนดค่าจริง ๆ เมื่อบริการสินค้าส่วนกลางหยุดทำงาน เคล็ดลับที่นี่คือใช้inventory_service
เทอร์มินัสกับผู้เชี่ยวชาญที่ไม่ใช่ศูนย์กลางซึ่งทำให้เกิดความล้มเหลวอย่างงดงาม ..
facts_terminus = inventory_service
inventory_server = puppet-ca.example.com
inventory_port = 8140
ตั้งค่าเซิร์ฟเวอร์สินค้าคงคลังส่วนกลางของคุณเพื่อจัดเก็บข้อมูลสินค้าคงคลังผ่าน ActiveRecord หรือ PuppetDB และควรปรับปรุงให้ทันสมัยเมื่อใดก็ตามที่มีบริการ
ดังนั้น - หากคุณตกลงกับสภาพแวดล้อมการจัดการการกำหนดค่าแบบเปลือยเปล่าที่คุณไม่สามารถใช้ CA เพื่อลงนามในใบรับรองของโหนดใหม่จนกว่าจะได้รับการกู้คืนแล้วสิ่งนี้สามารถใช้ได้ดี - แม้ว่ามันจะดีจริงๆ ถ้าบางส่วนของเหล่านี้เป็นบิตเป็นมิตรมากขึ้นที่จะถูกกระจาย