ติดตั้ง SSO ของ Apigee เพื่อให้มีความพร้อมใช้งานสูง

คุณติดตั้ง Apigee SSO หลายอินสแตนซ์เพื่อความพร้อมใช้งานสูงใน 2 สถานการณ์ต่อไปนี้

  • ในสภาพแวดล้อมศูนย์ข้อมูลเดียว ให้ติดตั้ง Apigee SSO 2 อินสแตนซ์เพื่อสร้างสภาพแวดล้อมที่มีความพร้อมใช้งานสูง ซึ่งหมายความว่าระบบจะทำงานต่อไปได้หากโมดูล SSO โมดูลใดโมดูลหนึ่งหยุดทำงาน
  • ในสภาพแวดล้อมที่มีศูนย์ข้อมูล 2 แห่ง ให้ติดตั้ง Apigee SSO ในศูนย์ข้อมูลทั้ง 2 แห่งเพื่อให้ระบบทำงานต่อไปได้หาก Apigee SSO ในศูนย์ข้อมูลแห่งใดแห่งหนึ่งหยุดทำงาน

ติดตั้งโมดูล Apigee SSO 2 โมดูลในศูนย์ข้อมูลเดียวกัน

คุณติดตั้งใช้งาน Apigee SSO 2 อินสแตนซ์ในโหนด apigee-openldap ที่ต่างกันในศูนย์ข้อมูลเดียวเพื่อรองรับ ความพร้อมใช้งานสูง ในสถานการณ์นี้จะมีผลดังต่อไปนี้

  • Apigee SSO ทั้ง 2 อินสแตนซ์ต้องเชื่อมต่อกับเซิร์ฟเวอร์ Postgres เดียวกัน Apigee ขอแนะนำให้ใช้เซิร์ฟเวอร์ Postgres ที่เฉพาะเจาะจงสำหรับ Apigee SSO และไม่ใช่เซิร์ฟเวอร์ Postgres เดียวกันกับที่คุณติดตั้งด้วย Edge ทั้ง 2 อินสแตนซ์ต้องใช้ฐานข้อมูล apigee_dex ร่วมกันเพื่อการคงสถานะ
  • ไม่จำเป็นต้องแจกจ่ายคีย์ JWT ด้วยตนเอง: Apigee SSO ที่ปรับปรุงใหม่จะจัดเก็บและซิงค์ JSON Web Key Sets (JWKS) และสถานะ OAuth2 ในฐานข้อมูล PostgreSQL ที่แชร์โดยค่าเริ่มต้น ซึ่งแตกต่างจากคอมโพเนนต์ UAA แบบเดิม คุณไม่จำเป็นต้องคัดลอกคีย์การลงชื่อในโหนดต่างๆ ด้วยตนเอง
  • การซิงโครไนซ์ข้อมูลเข้าสู่ระบบสำหรับ OpenLDAP ภายใน: หากคุณใช้ OpenLDAP ภายในเริ่มต้น Apigee SSO จะใช้บัญชีบริการแบบอ่านอย่างเดียวที่เฉพาะเจาะจง (cn=sso-reader) สำหรับ HA (โหนด 2) ผู้ดูแลระบบต้องตั้งค่า SSO_READER_PW เดียวกันใน /opt/silent.conf ในโหนดทั้ง 2 หรือคัดลอก /opt/apigee/data/apigee-openldap/sso-reader.key จากโหนด 1 ไปยังโหนด 2 ก่อนที่จะเรียกใช้ setup-sso ในโหนด 2

    หากต้องการคัดลอกไฟล์คีย์ด้วยตนเอง ให้เรียกใช้คำสั่งต่อไปนี้ในโหนด 2

    scp node1_ip:/opt/apigee/data/apigee-openldap/sso-reader.key /opt/apigee/data/apigee-openldap/sso-reader.key
    chown apigee:apigee /opt/apigee/data/apigee-openldap/sso-reader.key
    chmod 600 /opt/apigee/data/apigee-openldap/sso-reader.key
  • คุณต้องมีตัวจัดสรรภาระงานอยู่หน้า Apigee SSO 2 อินสแตนซ์ โดยทำดังนี้
    • กำหนดค่าตัวจัดสรรภาระงานให้ทำการตรวจสอบสถานะ TCP หรือ HTTP ใน SSO สำหรับ HTTP ให้ใส่ /healthz
      http_or_https://edge_sso_IP_DNS:9099/healthz

      ระบุพอร์ตตามที่ Apigee SSO ตั้งค่าไว้ โดยค่าเริ่มต้นคือพอร์ต 9099

    • การตั้งค่าตัวจัดสรรภาระงานบางอย่างจะขึ้นอยู่กับว่าคุณเปิดใช้ HTTPS ใน Apigee SSO หรือไม่ ดูข้อมูลเพิ่มเติมได้ในส่วนต่อไปนี้

การเข้าถึง Apigee SSO ผ่าน HTTP

หากใช้การเข้าถึง Apigee SSO ผ่าน HTTP ให้กำหนดค่าตัวจัดสรรภาระงานดังนี้

  • ใช้โหมด HTTP เพื่อเชื่อมต่อกับ Apigee SSO
  • รับฟังในพอร์ตเดียวกับ Apigee SSO

โดยค่าเริ่มต้น Apigee SSO จะรับฟังคำขอ HTTP ในพอร์ต 9099 หรือคุณจะใช้ SSO_PUBLIC_URL_PORT ในไฟล์ /opt/silent.conf เพื่อตั้งค่าพอร์ตก็ได้ หากใช้ SSO_PUBLIC_URL_PORT เพื่อเปลี่ยนพอร์ตจากค่าเริ่มต้น โปรดตรวจสอบว่าตัวจัดสรรภาระงานรับฟังในพอร์ตนั้น

ตัวอย่างเช่น ในอินสแตนซ์ SSO แต่ละรายการ คุณตั้งค่าพอร์ตเป็น 9033 โดยเพิ่มรายการต่อไปนี้ลงใน ไฟล์การกำหนดค่า

SSO_PUBLIC_URL_PORT=9033

จากนั้นกำหนดค่าตัวจัดสรรภาระงานให้รับฟังในพอร์ต 9033 และส่งต่อคำขอไปยังอินสแตนซ์ SSO ในพอร์ต 9033 URL ผู้ออกใบรับรองสาธารณะของ Apigee SSO ในสถานการณ์นี้คือ

http://LB_DNS_NAME:9033

การเข้าถึง Apigee SSO ผ่าน HTTPS

คุณกำหนดค่า HA ด้วย HTTPS ได้โดยใช้โหมดใดโหมดหนึ่งต่อไปนี้ ในทั้ง 2 สถานการณ์ ให้ทำตามขั้นตอนการตั้งค่าโดยละเอียดในหัวข้อ กำหนดค่า Apigee SSO สำหรับการเข้าถึง HTTPS

โหมด 1: ตัวจัดสรรภาระงานสิ้นสุด TLS (SSL_PROXY)

หากตัวจัดสรรภาระงานสิ้นสุดการเชื่อมต่อ TLS ตัวจัดสรรภาระงานจะต้องส่งต่อการรับส่งข้อมูล HTTP ธรรมดาไปยังอินสแตนซ์ Apigee SSO

  • ตั้งค่า SSO_PUBLIC_URL_SCHEME=https และ SSO_PUBLIC_URL_PORT=443 (หรือพอร์ต HTTPS สาธารณะของตัวจัดสรรภาระงาน) ในไฟล์ /opt/silent.conf
  • กำหนดค่าตัวจัดสรรภาระงานให้ใช้โหมด HTTP เพื่อเชื่อมต่อกับอินสแตนซ์ Apigee SSO แบ็กเอนด์
  • กำหนดค่าตัวจัดสรรภาระงานให้ส่งต่อคำขอไปยังอินสแตนซ์ Apigee SSO ในพอร์ต HTTP แบบผูกภายใน (ค่าเริ่มต้น: 9099)

โหมด 2: Apigee SSO สิ้นสุด TLS (SSL_TERMINATION)

หากต้องการให้อินสแตนซ์ Apigee SSO สิ้นสุดการเชื่อมต่อ TLS โดยตรง ตัวจัดสรรภาระงานจะต้องส่งต่อการรับส่งข้อมูลที่เข้ารหัสไปยังอินสแตนซ์เหล่านั้น

  • ตั้งค่า SSO_PUBLIC_URL_SCHEME=https และ SSO_PUBLIC_URL_PORT=9443 (หรือพอร์ตที่ปลอดภัยที่คุณเลือก) ในไฟล์ /opt/silent.conf
  • กำหนดค่าตัวจัดสรรภาระงานให้ใช้โหมด TCP (ไม่ใช่โหมด HTTP) เพื่อเชื่อมต่อกับแบ็กเอนด์ ซึ่งจะช่วยให้ Apigee SSO สิ้นสุด TLS ได้
  • กำหนดค่าตัวจัดสรรภาระงานให้รับฟังในพอร์ตเดียวกับ Apigee SSO และส่งต่อคำขอไปยังอินสแตนซ์ Apigee SSO ในพอร์ตที่ปลอดภัย (เช่น 9443)

ติดตั้ง Apigee SSO ในศูนย์ข้อมูลหลายแห่ง

ในสภาพแวดล้อมที่มีศูนย์ข้อมูลหลายแห่ง ให้ติดตั้ง Apigee SSO 1 อินสแตนซ์ (ผ่าน apigee-openldap) ในศูนย์ข้อมูลแต่ละแห่ง โดยอินสแตนซ์ SSO 1 รายการจะจัดการการรับส่งข้อมูลทั้งหมด หากอินสแตนซ์นั้นหยุดทำงาน คุณสามารถ เปลี่ยนการรับส่งข้อมูลไปยังอินสแตนซ์ SSO รายการที่ 2 ได้

คุณต้องมีสิ่งต่อไปนี้ก่อนที่จะติดตั้ง Apigee SSO ในศูนย์ข้อมูล 2 แห่ง

  • ที่อยู่ IP หรือชื่อโดเมนของเซิร์ฟเวอร์ Postgres หลัก

    ในสภาพแวดล้อมที่มีศูนย์ข้อมูลหลายแห่ง โดยปกติคุณจะติดตั้งเซิร์ฟเวอร์ Postgres 1 เครื่องในศูนย์ข้อมูลแต่ละแห่ง และกำหนดค่าเซิร์ฟเวอร์เหล่านั้นในโหมดการจำลองแบบหลัก-สำรอง ในตัวอย่างนี้ ศูนย์ข้อมูล 1 มีเซิร์ฟเวอร์ Postgres หลัก และศูนย์ข้อมูล 2 มีเซิร์ฟเวอร์ Postgres สำรอง ดูข้อมูลเพิ่มเติมได้ที่หัวข้อ ตั้งค่าการจำลองแบบหลัก-สำรองสำหรับ Postgres

  • รายการ DNS รายการเดียวที่ชี้ไปยังอินสแตนซ์ SSO 1 รายการ ตัวอย่างเช่น คุณสร้างรายการ DNS ในรูปแบบต่อไปนี้ ซึ่งชี้ไปยังอินสแตนซ์ SSO ในศูนย์ข้อมูล 1
    my-sso.domain.com => apigee-sso-dc1-ip-or-lb
  • ข้อมูลเข้าสู่ระบบของผู้อ่าน OpenLDAP ที่ซิงค์แล้ว หากคุณใช้ OpenLDAP ภายใน คุณต้องตรวจสอบว่าศูนย์ข้อมูลทั้ง 2 แห่งใช้ SSO_READER_PW เดียวกันหรือแชร์ไฟล์ sso-reader.key เดียวกันเพื่อป้องกันไม่ให้คลัสเตอร์ไม่ซิงค์กันระหว่างการตั้งค่า

เมื่อกำหนดค่า Apigee SSO ในศูนย์ข้อมูลแต่ละแห่ง ให้กำหนดค่าทั้ง 2 รายการให้ชี้ไปยัง Postgres หลัก ในศูนย์ข้อมูล 1

## Postgres configuration
PG_HOST=IP_or_DNS_of_PG_Master_in_DC1
PG_PORT=5432

นอกจากนี้ คุณต้องกำหนดค่าศูนย์ข้อมูลทั้ง 2 แห่งให้ใช้รายการ DNS ที่แชร์เป็น URL ผู้ออกใบรับรองที่เข้าถึงได้แบบสาธารณะ เนื่องจากสคริปต์ setup-sso จะสร้าง URL ผู้ออกใบรับรองและต่อท้ายพอร์ตโดยอัตโนมัติ คุณจึงต้องตั้งค่า URL ที่แน่นอนโดยตรงใน /opt/apigee/customer/application/openldap.properties แทนที่จะตั้งค่าใน /opt/silent.conf เพื่อป้องกันไม่ให้ระบบต่อท้ายพอร์ตหากไม่จำเป็น

# Externally accessible URL of the Apigee SSO
etc_sso_config_issuer_url=https://my-sso.domain.com

การจัดการการเฟลโอเวอร์ของ SSO

หากอินสแตนซ์ Apigee SSO (หรือ Postgres หลัก) ในศูนย์ข้อมูล 1 หยุดทำงาน คุณสามารถเปลี่ยนไปใช้อินสแตนซ์ SSO ในศูนย์ข้อมูล 2 ได้โดยไม่สูญเสียเซสชัน OAuth ที่ใช้งานอยู่ โดยทำดังนี้

  1. แปลงเซิร์ฟเวอร์ Postgres สำรองในศูนย์ข้อมูล 2 เป็นเซิร์ฟเวอร์หลักตามที่อธิบายไว้ใน หัวข้อการจัดการการเฟลโอเวอร์ของฐานข้อมูล PostgreSQL
  2. อัปเดตระเบียน DNS ให้ชี้ my-sso.domain.com ไปยังอินสแตนซ์ SSO ใน ศูนย์ข้อมูล 2 โดยทำดังนี้
    my-sso.domain.com => apigee-sso-dc2-ip-or-lb
  3. อัปเดตไฟล์ /opt/silent.conf สำหรับ Apigee SSO ในศูนย์ข้อมูล 2 ให้ชี้ไปยังเซิร์ฟเวอร์ Postgres หลัก ใหม่ในศูนย์ข้อมูล 2 โดยทำดังนี้
    ## Postgres configuration
    PG_HOST=IP_or_DNS_of_PG_Master_in_DC2
  4. กำหนดค่าและรีสตาร์ท Apigee SSO ในศูนย์ข้อมูล 2 อีกครั้งเพื่ออัปเดตการเชื่อมต่อโดยค่าเริ่มต้น โดยทำดังนี้
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap setup-sso -f /opt/silent.conf