วาง ONLYOFFICE Docs ไว้หลัง HAProxy โดยไม่ทำให้การแก้ไขเอกสารหยุดชะงัก

ใช้งาน ONLYOFFICE Docs ผ่าน HAProxy โดยการยุติ HTTPS ที่พร็อกซี ส่งต่อโฮสต์และรูปแบบเดิม และอนุญาตการเชื่อมต่อ WebSocket ที่มีอายุการใช้งานยาวนาน เริ่มต้นด้วย Document Server ที่ทำงานได้อย่างสมบูรณ์หนึ่งเครื่อง เพิ่มแบ็กเอนด์เพิ่มเติมเฉพาะเมื่อการใช้งาน ONLYOFFICE ของคุณได้รับการกำหนดค่าสำหรับการทำงานแบบหลายโหนดที่รองรับ ไม่ใช่เพียงเพราะ HAProxy สามารถกระจายคำขอได้

HAProxy สามารถกระจายโหลดให้กับเซิร์ฟเวอร์เอกสารอิสระสองเครื่องได้หรือไม่?

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

สำหรับการติดตั้งแบบเซิร์ฟเวอร์เดี่ยวทั่วไป ให้ใช้เฉพาะdocs1ในส่วนแบ็กเอนด์ด้านล่างเท่านั้น สำหรับสองโหนด ให้ตรวจสอบสถาปัตยกรรมคลัสเตอร์ รุ่นที่รองรับ การพึ่งพาที่ใช้ร่วมกัน ความเข้ากันได้ของเวอร์ชัน และการกำหนดค่า JWT กับเอกสารการใช้งาน ONLYOFFICE หรือฝ่ายสนับสนุนของผู้จำหน่ายก่อน ตัวอย่างที่อยู่ — 10.0.10.21และ10.0.10.22— เป็นเพียงที่อยู่ IP ส่วนตัวที่ใช้เป็นตัวอย่าง ไม่ใช่โฮสต์ที่ค้นพบ

อะไรบ้างที่ต้องใช้งานได้ก่อนที่คุณจะแก้ไข HAProxy?

ชื่อสาธารณะdocs.example.comควรชี้ไปยังปลายทาง HAProxy ของคุณ HAProxy ต้องการพอร์ต TCP ขาเข้า 80 และ 443 และการเข้าถึงเครือข่ายส่วนตัวไปยัง Document Server แต่ละตัวบนพอร์ต 80 แอปพลิเคชันการจัดการเอกสารของคุณต้องสามารถเข้าถึงที่อยู่ Docs สาธารณะได้ ในขณะที่ ONLYOFFICE ต้องสามารถดึงเอกสารและส่งการเรียกกลับไปยังแอปพลิเคชันได้ รักษาความเป็นส่วนตัวของ HTTP ฝั่งแบ็กเอนด์ เข้ารหัสการเชื่อมต่อแบ็กเอนด์แยกต่างหากหากมีการข้ามเครือข่ายที่ไม่น่าเชื่อถือ

  1. ตรวจสอบเซิร์ฟเวอร์เอกสารแต่ละตัวจากโฮสต์พร็อกซีเรียกใช้คำสั่งcurl -i http://10.0.10.21/healthcheckและหากมี ให้เรียก ใช้ curl -i http://10.0.10.22/healthcheckคำสั่ง โดยปกติแล้ว เอนด์พอยต์ตรวจสอบสถานะการทำงานจะส่งคืน HTTP 200 พร้อมเนื้อหาเป็นtrueหากสิ่งใดสิ่งหนึ่งล้มเหลว ให้ตรวจสอบการกำหนดเส้นทาง ไฟร์วอลล์ หรือสถานะของเซิร์ฟเวอร์ก่อนกำหนดค่าการปรับสมดุล
  2. ยืนยันรหัสลับ JWT ที่แน่นอนเซิร์ฟเวอร์เอกสารและตัวเชื่อมต่อต้องเห็นพ้องกันเกี่ยวกับรหัสลับโทเค็น สำหรับการติดตั้ง Docker เอกสาร ONLYOFFICE ได้ระบุJWT_SECRETตัวแปรสภาพแวดล้อมไว้ ตั้งแต่ Docs 7.2 เป็นต้นไป การพึ่งพารหัสลับที่สร้างขึ้นโดยอัตโนมัติอาจทำให้เกิดความล้มเหลวในการทำงานร่วมกันหลังจากสร้างใหม่หรือรีสตาร์ท ในการใช้งานแบบหลายโหนดที่รองรับ ให้จัดเรียงรหัสลับระหว่างโหนดให้สอดคล้องกับสถาปัตยกรรมของผู้จำหน่าย
ตรวจสอบเทอร์มินัลที่ http://10.0.10.21/healthcheck และแสดงผล HTTP 200 พร้อมค่า true ในส่วนเนื้อหาของการตอบกลับ
คำขอตรวจสอบสถานะแบ็กเอนด์จะส่งคืน HTTP 200 และค่า true ก่อนที่จะเพิ่มเซิร์ฟเวอร์ลงใน HAProxy

การตรวจสอบเหล่านี้เป็นไปตาม คำแนะนำการติดตั้ง Dockerและคำแนะนำการกำหนดค่า JWTของผู้จำหน่ายอย่าปิดใช้งาน JWT เพียงเพื่อแก้ไขปัญหาข้อผิดพลาดของพร็อกซี

วิธีการตั้งค่า HTTPS และส่งต่อส่วนหัวที่ถูกต้องทำอย่างไร?

ขั้นตอนที่ 1: เตรียมใบรับรอง

ขอรับใบรับรองที่เชื่อถือได้ซึ่งครอบคลุมถึงdocs.example.com... ในตัวอย่าง Linux นี้ HAProxy จะอ่านไฟล์ PEM ที่มีห่วงโซ่ใบรับรองตามด้วยคีย์ส่วนตัว หากมีใบรับรองอยู่แล้วที่อื่น ให้แทนที่ด้วยเส้นทางเหล่านั้น จำกัดการเข้าถึงไฟล์ PEM ที่รวมกันแล้ว และจัดการให้สร้างใหม่เมื่อใบรับรองได้รับการต่ออายุ

sudo install -d -m 700 /etc/haproxy/certs
sudo sh -c 'umask 077; cat /etc/letsencrypt/live/docs.example.com/fullchain.pem /etc/letsencrypt/live/docs.example.com/privkey.pem > /etc/haproxy/certs/docs.example.com.pem'
หน้าต่างเทอร์มินัลของ Ubuntu แสดงไดเร็กทอรีใบรับรอง ไฟล์ PEM docs.example.com และสิทธิ์การเข้าถึงไฟล์ที่ถูกจำกัด
ใบรับรองและคีย์ส่วนตัวจะถูกจัดเก็บไว้ในไฟล์ PEM ที่ได้รับการป้องกันสำหรับตัวรับฟัง HTTPS

ขั้นตอนที่ 2: เพิ่มส่วนหน้า (frontend) และส่วนหลัง (backend)

สำรองข้อมูลการตั้งค่าที่มีอยู่ของคุณ/etc/haproxy/haproxy.cfgและปรับใช้ส่วนต่อไปนี้แทนที่จะแทนที่การบันทึกข้อมูลหรือการตั้งค่าบริการเฉพาะของแต่ละระบบปฏิบัติการโดยไม่ตรวจสอบให้ดีเสียก่อน นี่คือตัวอย่างการกำหนดค่าสำหรับ HAProxy รุ่นใหม่ โดยจะยอมรับเฉพาะ HTTP สำหรับการเปลี่ยนเส้นทาง ยุติ HTTPS บนพอร์ต 443 ส่งต่อโฮสต์สาธารณะและรูปแบบ และตรวจสอบเอนด์พอยต์สถานะสุขภาพของแอปพลิเคชัน

global
    log /dev/log local0

defaults
    mode http
    log global
    option httplog
    option forwardfor
    timeout connect 5s
    timeout client 60s
    timeout server 60s
    timeout tunnel 1h

frontend docs_http
    bind :80
    http-request redirect scheme https code 301

frontend docs_https
    bind :443 ssl crt /etc/haproxy/certs/docs.example.com.pem
    http-request set-header X-Forwarded-Proto https
    http-request set-header X-Forwarded-Host %[req.hdr(Host)]
    default_backend docs_nodes

backend docs_nodes
    option http-server-close
    balance roundrobin
    cookie SERVERID insert indirect nocache
    option httpchk GET /healthcheck
    http-check expect string true
    server docs1 10.0.10.21:80 check cookie docs1
    server docs2 10.0.10.22:80 check cookie docs2
โปรแกรมแก้ไขการกำหนดค่า HAProxy แสดงที่อยู่ฟรอนต์เอนด์ TLS และที่อยู่แบ็กเอนด์เซิร์ฟเวอร์เอกสารส่วนตัวสองรายการ
การกำหนดค่า HAProxy แยกตัวรับฟัง TLS สาธารณะออกจากแบ็กเอนด์เซิร์ฟเวอร์เอกสารภายใน ใช้คำสั่งทั้งหมดที่แสดงด้านบน

ลบdocs2เส้นนั้นออก เว้นแต่ว่าโหนดที่สองพร้อมใช้งานอย่างแท้จริง คุกกี้แบบคงสถานะจะช่วยให้คำขอ HTTP ครั้งถัดไปส่งกลับไปยังโหนดที่เลือกไว้ HAProxy จัดการการอัปเกรด HTTP WebSocket โดยไม่ต้องเขียน URL ใหม่เป็นพิเศษtimeout tunnel 1hอนุญาตให้การเชื่อมต่อที่อัปเกรดแล้วซึ่งไม่ได้ใช้งานเปิดอยู่ได้นานกว่าคำขอทั่วไปเอกสารประกอบ HAProxy WebSocketอธิบายพฤติกรรมนี้

การตั้งค่าX-Forwarded-Protoนี้httpsถูกต้องแล้ว เนื่องจากส่วนหน้า (frontend) นี้จะยุติการเชื่อมต่อ HTTPS สาธารณะ อย่าเชื่อถือแผนการส่งต่อ (forwarding scheme) หรือโฮสต์ที่ลูกค้าจัดหามาโดยพลการ ณ ขอบเครือข่ายที่เชื่อมต่อกับอินเทอร์เน็ตเอกสารประกอบการใช้งานพร็อกซี ONLYOFFICEระบุไว้อย่างชัดเจนX-Forwarded-Protoว่าX-Forwarded-Hostให้คงบริบทของ URL ภายนอกไว้

คุณควรทำการรีโหลดและทดสอบตัวจัดการโหลดอย่างไร?

ขั้นตอนที่ 3: ตรวจสอบความถูกต้องก่อนเปลี่ยนเส้นทางการรับส่งข้อมูล

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

sudo haproxy -c -f /etc/haproxy/haproxy.cfg
sudo systemctl reload haproxy
curl -i https://docs.example.com/healthcheck
หน้าจอเทอร์มินัลแสดงคำสั่งตรวจสอบความถูกต้องของการกำหนดค่า HAProxy และข้อความยืนยันการกำหนดค่าที่ถูกต้อง
ตรวจสอบความถูกต้องของไฟล์ haproxy.cfg ก่อนรีโหลดบริการ การตรวจสอบความถูกต้องของไวยากรณ์ที่สำเร็จไม่สามารถทดแทนการแก้ไขทดสอบได้

การตอบสนองการตรวจสอบสุขภาพสาธารณะควรแสดง HTTP 200 trueเมื่อแบ็กเอนด์ทำงานได้อย่างปกติ HAProxy ใช้ คำสั่ง option httpchk`and` http-check expectเพื่อลบโหนดที่ล้มเหลวออกจากการหมุนเวียนคำขอใหม่ โปรดดูข้อมูลอ้างอิงการตรวจสอบสุขภาพการตรวจสอบผ่านไม่ได้หมายความว่าการแก้ไขเอกสารหรือการส่งข้อความเรียกกลับทำงานได้

ขั้นตอนที่ 4: ยืนยันการแก้ไข การเชื่อมต่อ WebSockets และการบันทึก

เปิดเอกสารผ่านแอปพลิเคชันที่ผสานรวมอยู่ เช่น ระบบจัดการเอกสารที่เชื่อมต่อกับ ONLYOFFICE Docs ในเครื่องมือสำหรับนักพัฒนาของเบราว์เซอร์ ให้ใช้แผงเครือข่ายเพื่อตรวจสอบการเชื่อมต่อ WebSocket: การเชื่อมต่อการอัปเกรดควรสำเร็จ โดยทั่วไปจะมีสถานะ HTTP 101 Switching Protocolsทำการแก้ไขเล็กน้อย ปิดตัวแก้ไข เปิดเอกสารอีกครั้ง และยืนยันว่าการเปลี่ยนแปลงได้รับการบันทึกแล้ว สำหรับการใช้งานแบบสองโหนดที่ได้รับการสนับสนุนอย่างถูกต้อง ให้ทดสอบผู้ร่วมงานคนที่สองและการทดสอบการใช้งานโหนดเดียวในระหว่างช่วงเวลาการบำรุงรักษาด้วย

หากการตรวจสอบสุขภาพสาธารณะทำงานได้ แต่โปรแกรมแก้ไขเอกสารทำงานผิดปกติหรือตัดการเชื่อมต่อ ให้ตรวจสอบคำเตือนเกี่ยวกับเนื้อหาผสม การทำงานล้มเหลวของ WebSocket ความไม่ตรงกันของ JWT และตรวจสอบว่าแอปพลิเคชันเอกสารสามารถเข้าถึง URL ของ Docs ที่ประกาศไว้ได้หรือไม่ หากเอกสารเปิดได้แต่ไม่บันทึก ให้ตรวจสอบความสามารถในการเข้าถึงการเรียกกลับจาก Document Server ไปยังแอปพลิเคชันต้นทาง แทนที่จะเปลี่ยนนโยบาย round-robin ของ HAProxy เซสชัน WebSocket ที่ใช้งานอยู่ซึ่งถูกขัดจังหวะอาจยังคงต้องมีการเชื่อมต่อไคลเอ็นต์ใหม่ การตรวจสอบสุขภาพของแบ็กเอนด์ไม่ได้รับประกันการแก้ไขที่ราบรื่นในกรณีที่ระบบล้มเหลว

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

ฝากความเห็น

การตั้งค่า KVM ใน SLES 15: กำหนดให้ VM ที่เลือกเริ่มต้นทำงานเมื่อบูตเครื่อง

การตั้งค่า KVM ใน SLES 15: กำหนดให้ VM ที่เลือกเริ่มต้นทำงานเมื่อบูตเครื่อง

ติดตั้งเครื่องมือ SLES 15 KVM และ libvirt เปิดใช้งานบริการโฮสต์ที่ถูกต้อง และกำหนดค่าเครื่องเสมือนที่เลือกให้เริ่มต้นทำงานหลังจากรีบูตเครื่อง

ทำการสำรองข้อมูล Nextcloud อย่างสม่ำเสมอโดยอัตโนมัติด้วย Restic และ Cron

ทำการสำรองข้อมูล Nextcloud อย่างสม่ำเสมอโดยอัตโนมัติด้วย Restic และ Cron

สำรองข้อมูลไฟล์ของ Nextcloud และ MariaDB ไปพร้อมกัน กำหนดเวลาสร้างสแนปช็อต Restic ที่เข้ารหัสด้วย cron และตรวจสอบการกู้คืนโดยไม่ต้องเสี่ยงต่อเซิร์ฟเวอร์ที่ใช้งานอยู่

สำรองข้อมูลและกู้คืนกล่องจดหมาย Zimbra CE โดยใช้การส่งออก TGZ

สำรองข้อมูลและกู้คืนกล่องจดหมาย Zimbra CE โดยใช้การส่งออก TGZ

ส่งออกกล่องจดหมาย Zimbra Community Edition ส่วนบุคคล ตรวจสอบความถูกต้องของการสำรองข้อมูล TGZ และกู้คืนรายการที่หายไปโดยไม่เขียนทับอีเมลที่มีอยู่

อนุญาตให้ผู้ใช้ที่ได้รับอนุญาตสร้างห้อง Jitsi ด้วยการลงชื่อเข้าใช้ Keycloak

อนุญาตให้ผู้ใช้ที่ได้รับอนุญาตสร้างห้อง Jitsi ด้วยการลงชื่อเข้าใช้ Keycloak

อนุญาตเฉพาะบัญชีที่ได้รับอนุมัติเท่านั้นให้เริ่มห้องประชุม Jitsi Meet โดยใช้ Keycloak และการตรวจสอบสิทธิ์ด้วยโทเค็น ในขณะที่ยังคงเปิดให้ผู้เยี่ยมชมเข้าร่วมได้เมื่อจำเป็น

ซิงค์ผู้ใช้ Active Directory กับ ONLYOFFICE DocSpace ผ่าน LDAP

ซิงค์ผู้ใช้ Active Directory กับ ONLYOFFICE DocSpace ผ่าน LDAP

เชื่อมต่อ ONLYOFFICE DocSpace กับ Active Directory หรือ OpenLDAP นำเข้าผู้ใช้และกลุ่มได้อย่างปลอดภัย แมปฟิลด์บัญชี และกำหนดเวลาการซิงโครไนซ์ที่เชื่อถือได้

เพิ่มฟอนต์ลงใน ONLYOFFICE Document Server: Docker เทียบกับ Linux

เพิ่มฟอนต์ลงใน ONLYOFFICE Document Server: Docker เทียบกับ Linux

ติดตั้งฟอนต์แบบกำหนดเองใน ONLYOFFICE Document Server เปรียบเทียบการเมานต์ Docker แบบถาวรกับสำเนาโดยตรง สร้างรายการฟอนต์ใหม่ และตรวจสอบผลลัพธ์

วาง ONLYOFFICE Docs ไว้หลัง HAProxy โดยไม่ทำให้การแก้ไขเอกสารหยุดชะงัก

วาง ONLYOFFICE Docs ไว้หลัง HAProxy โดยไม่ทำให้การแก้ไขเอกสารหยุดชะงัก

ตั้งค่า HAProxy สำหรับ HTTPS, การส่งต่อส่วนหัว, การหมดเวลาของ WebSocket และการตรวจสอบสถานะสำหรับ ONLYOFFICE Docs จากนั้นตรวจสอบการแก้ไขและการบันทึก

ติดตั้งและลงนามโมดูลเคอร์เนลแบบกำหนดเองบน SLES 15 Secure Boot

ติดตั้งและลงนามโมดูลเคอร์เนลแบบกำหนดเองบน SLES 15 Secure Boot

โหลดโมดูลเคอร์เนล SLES 15 แบบกำหนดเองโดยไม่ต้องปิดใช้งาน Secure Boot จับคู่เคอร์เนลที่กำลังทำงานอยู่ ลงนามในไฟล์ .ko ลงทะเบียนคีย์ MOK และตรวจสอบการโหลด

การส่งต่อ Syslog ของ SLES อย่างปลอดภัยด้วย rsyslog และ Mutual TLS

การส่งต่อ Syslog ของ SLES อย่างปลอดภัยด้วย rsyslog และ Mutual TLS

ส่งบันทึกระบบ SLES ไปยังตัวเก็บรวบรวม rsyslog ระยะไกลผ่าน TLS ที่มีการตรวจสอบสิทธิ์ พร้อมด้วยการตรวจสอบใบรับรอง การบัฟเฟอร์เมื่อระบบขัดข้อง และการทดสอบการส่งมอบ

วิธีการบูต Ubuntu Server เข้าสู่โหมดฉุกเฉิน: คู่มือการกู้คืนทีละขั้นตอน

วิธีการบูต Ubuntu Server เข้าสู่โหมดฉุกเฉิน: คู่มือการกู้คืนทีละขั้นตอน

ตรวจสอบและวินิจฉัยโหมดฉุกเฉินของ Ubuntu Server อย่างปลอดภัย อ่านบันทึกการบูต ตรวจสอบการเมานต์รูทและ fstab ซ่อมแซมหน่วยที่ล้มเหลว จัดการข้อผิดพลาดของระบบไฟล์ และตรวจสอบการรีบูตที่สะอาดหมดจด