การเลิกใช้งานศูนย์ข้อมูล

บางครั้งคุณอาจต้องเลิกใช้งานศูนย์ข้อมูล เช่น หากอัปเกรดระบบปฏิบัติการ คุณจะต้อง ติดตั้งระบบปฏิบัติการใหม่ในศูนย์ข้อมูลใหม่ แล้วเลิกใช้งานศูนย์ข้อมูลเก่า ส่วนต่อไปนี้แสดงตัวอย่างการเลิกใช้งานศูนย์ข้อมูล ซึ่งมีศูนย์ข้อมูล 2 แห่ง ได้แก่ dc-1 และ dc-2 ในการติดตั้งแบบคลัสเตอร์ 12 โหนด

  • dc-1 คือศูนย์ข้อมูลที่จะเลิกใช้งาน
  • dc-2 คือศูนย์ข้อมูลแห่งที่ 2 ซึ่งใช้ในขั้นตอนการเลิกใช้งาน

หากคุณกำลังอัปเกรด ระบบปฏิบัติการ dc-2 อาจเป็นศูนย์ข้อมูลที่คุณติดตั้ง ระบบปฏิบัติการ (OS) เวอร์ชันใหม่ อย่างไรก็ตาม คุณไม่จำเป็นต้องติดตั้งระบบปฏิบัติการใหม่ เพื่อเลิกใช้งานศูนย์ข้อมูล

ข้อควรพิจารณาก่อนเลิกใช้งานศูนย์ข้อมูล

โปรดคำนึงถึงข้อควรพิจารณาต่อไปนี้เมื่อเลิกใช้งานศูนย์ข้อมูล

  • บล็อกการเข้าชมรันไทม์และการจัดการทั้งหมดไปยังศูนย์ข้อมูลที่เลิกใช้งานแล้ว และเปลี่ยนเส้นทางไปยังศูนย์ข้อมูลอื่นๆ
  • หลังจากเลิกใช้งานศูนย์ข้อมูลแล้ว คุณจะมีคลัสเตอร์ Apigee ที่มีความจุลดลง เพื่อชดเชยการสูญเสียนี้ ให้พิจารณาเพิ่มความจุในศูนย์ข้อมูลที่เหลือหรือเพิ่มศูนย์ข้อมูลหลังจากเลิกใช้งาน
  • ในระหว่างกระบวนการเลิกใช้งาน อาจมีการสูญเสียข้อมูลวิเคราะห์ ทั้งนี้ขึ้นอยู่กับคอมโพเนนต์การวิเคราะห์ที่ติดตั้งในศูนย์ข้อมูลที่เลิกใช้งาน ดูรายละเอียดเพิ่มเติมได้ที่หัวข้อเพิ่มหรือนำโหนด Qpid ออก
  • ก่อนที่จะเลิกใช้งานศูนย์ข้อมูล คุณควรทำความเข้าใจวิธีกำหนดค่าคอมโพเนนต์ทั้งหมดในศูนย์ข้อมูลทั้งหมด โดยเฉพาะเซิร์ฟเวอร์ SymasLDAP, ZooKeeper, Cassandra และ Postgres นอกจากนี้ คุณควรสำรองข้อมูลคอมโพเนนต์ทั้งหมดและการกำหนดค่าของคอมโพเนนต์ด้วย

ก่อนจะเริ่มต้น

  • เซิร์ฟเวอร์การจัดการ: ขั้นตอนการเลิกใช้งานทั้งหมดขึ้นอยู่กับเซิร์ฟเวอร์การจัดการเป็นอย่างมาก หากมีเซิร์ฟเวอร์การจัดการเพียงเครื่องเดียว เราขอแนะนำให้คุณติดตั้งคอมโพเนนต์เซิร์ฟเวอร์การจัดการใหม่ ในศูนย์ข้อมูลอื่นที่ไม่ใช่ dc-1 ก่อนที่จะเลิกใช้งานเซิร์ฟเวอร์การจัดการ ใน dc-1 และตรวจสอบว่า เซิร์ฟเวอร์การจัดการเครื่องใดเครื่องหนึ่งพร้อมใช้งานอยู่เสมอ
  • เราเตอร์: ก่อนที่จะเลิกใช้งานเราเตอร์ ให้ปิดใช้ความสามารถในการเข้าถึงเราเตอร์โดยบล็อกพอร์ต 15999 ตรวจสอบว่าไม่มีการนำการรับส่งข้อมูลรันไทม์ ไปยังเราเตอร์ที่เลิกใช้งาน
  • Cassandra และ ZooKeeper: ส่วนด้านล่างจะอธิบายวิธีเลิกใช้งาน dc-1 ในการตั้งค่าศูนย์ข้อมูล 2 แห่ง

    หากคุณมีศูนย์ข้อมูลมากกว่า 2 แห่ง โปรดตรวจสอบว่าได้นำการอ้างอิงทั้งหมดไปยังโหนดที่จะเลิกใช้งาน (ในกรณีนี้คือ dc-1) ออกจากไฟล์การกำหนดค่าแบบเงียบทั้งหมดในศูนย์ข้อมูลที่เหลือทั้งหมด สำหรับโหนด Cassandra ที่จะเลิกใช้งาน ให้ยกเลิกการเชื่อมต่อโฮสต์เหล่านั้นจาก CASS_HOSTS โหนด Cassandra ที่เหลือควรยังคงอยู่ในลำดับเดิมของ CASS_HOSTS

  • Postgres: หากเลิกใช้งานมาสเตอร์ Postgres ให้ตรวจสอบว่าได้เลื่อนระดับโหนดสแตนด์บายที่พร้อมใช้งานเป็นมาสเตอร์ Postgres ใหม่ แม้ว่าเซิร์ฟเวอร์ QPID จะเก็บข้อมูลบัฟเฟอร์ไว้ในคิว แต่หาก Postgres หลักไม่พร้อมใช้งานเป็นเวลานาน คุณอาจเสี่ยงต่อการสูญเสียข้อมูลวิเคราะห์

ข้อกำหนดเบื้องต้น

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

  • ตรวจสอบว่า Edge ทำงานอยู่ก่อนที่จะเลิกใช้งาน โดยใช้คำสั่งต่อไปนี้
    /opt/apigee/apigee-service/bin/apigee-all status
  • ตรวจสอบว่าไม่มีการเข้าชมรันไทม์ที่กำลังมาถึงศูนย์ข้อมูลที่คุณกำลังเลิกใช้งาน

ลำดับการเลิกใช้งานคอมโพเนนต์

หากติดตั้ง Edge สำหรับ Private Cloud ในหลายโหนด คุณควรเลิกใช้งานคอมโพเนนต์ Edge ในโหนดเหล่านั้นตามลำดับต่อไปนี้

  1. UI ใหม่ของ Edge (edge-management-ui และ edge-management-ui-static)
  2. เซิร์ฟเวอร์การจัดการ (edge-management-server)
  3. Symas LDAP (apigee-openldap)
  4. เราเตอร์ (Edge Router)
  5. Message Processor (edge-message-processor)
  6. เซิร์ฟเวอร์ Qpid และ Qpidd (edge-qpid-server และ apigee-qpidd)
  7. ฐานข้อมูล Postgres และ PostgreSQL (edge-postgres-server และ apigee-postgresql)
  8. ZooKeeper (apigee-zookeeper)
  9. Cassandra (apigee-cassandra)

ส่วนต่อไปนี้จะอธิบายวิธีเลิกใช้งานคอมโพเนนต์แต่ละรายการ

UI ใหม่ของ Edge

หากต้องการหยุดและถอนการติดตั้งคอมโพเนนต์ UI ของ Edge ใหม่ของ dc-1 ให้ป้อนคำสั่งต่อไปนี้

/opt/apigee/apigee-service/bin/apigee-service edge-management-ui stop
/opt/apigee/apigee-service/bin/apigee-service edge-management-ui uninstall
/opt/apigee/apigee-service/bin/apigee-service edge-management-ui-static uninstall

เซิร์ฟเวอร์การจัดการ

หากต้องการเลิกใช้งานเซิร์ฟเวอร์การจัดการใน dc-1 ให้ทำตามขั้นตอนต่อไปนี้

  1. หยุดเซิร์ฟเวอร์การจัดการใน dc-1 โดยทำดังนี้
    apigee-service edge-management-server stop
  2. ค้นหา UUID ของเซิร์ฟเวอร์การจัดการที่ลงทะเบียนใน dc-1 โดยทำดังนี้
    curl -u <AdminEmailID>:'<AdminPassword>' -X GET “http://{MS_IP}:8080/v1/servers?pod=central&region=dc-1&type=management-server”
  3. ประเภทของเซิร์ฟเวอร์ที่ยกเลิกการลงทะเบียน:
    curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://{MS_IP}:8080/v1/servers -d "type=management-server&region=dc-1&pod=central&uuid=UUID&action=remove"
  4. ลบเซิร์ฟเวอร์ หมายเหตุ: หากมีการติดตั้งคอมโพเนนต์อื่นๆ ในเซิร์ฟเวอร์นี้ด้วย ให้ยกเลิกการลงทะเบียนคอมโพเนนต์ทั้งหมดก่อนที่จะลบ UUID
    curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://{MS_IP}:8080/v1/servers/{UUID}
  5. ถอนการติดตั้งคอมโพเนนต์ Management Server ใน dc-1:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server uninstall

Symas LDAP

ส่วนนี้จะอธิบายวิธีเลิกใช้งาน SymasLDAP ใน dc-1

หมายเหตุ: หากคุณมีศูนย์ข้อมูลมากกว่า 2 แห่ง โปรดดูหัวข้อการตั้งค่าที่มีศูนย์ข้อมูลมากกว่า 2 แห่งด้านล่าง

หากต้องการเลิกใช้งาน SymasLDAP ใน dc-1 ให้ทำตามขั้นตอนต่อไปนี้

  1. สำรองข้อมูลโหนด dc-1 SymasLDAP โดยทำตามขั้นตอนใน วิธีสำรองข้อมูล
  2. หยุดการจำลองข้อมูลระหว่างศูนย์ข้อมูล 2 แห่ง ได้แก่ dc-1 และ dc-2 โดยทำตามขั้นตอนต่อไปนี้ในศูนย์ข้อมูลทั้ง 2 แห่ง

    1. ตรวจสอบสถานะปัจจุบัน ดังนี้
            /opt/symas/bin/ldapsearch -H ldap://{HOST}:{PORT} -LLL -x -b "cn=config" -D "cn=admin,cn=config" -w {credentials} -o ldif-wrap=no 'olcSyncRepl' | grep olcSyncrepl

      เอาต์พุตควรมีลักษณะคล้ายกับตัวอย่างต่อไปนี้

      olcSyncrepl: {0}rid=001 provider=ldap://{HOST}:{PORT}/ binddn="cn=manager,dc=apigee,dc=com" bindmethod=simple credentials={credentials} searchbase="dc=apigee,dc=com" attrs="*,+" type=refreshAndPersist retry="60 1 300 12 7200 +" timeout=1
    2. สร้างไฟล์ break_repl.ldif ที่มีคำสั่งต่อไปนี้
      dn: olcDatabase={2}mdb,cn=config
      changetype: modify
      delete: olcSyncRepl
      
      dn: olcDatabase={2}mdb,cn=config
      changetype: modify
      delete: olcMirrorMode
    3. เรียกใช้คำสั่ง ldapmodify
            /opt/symas/bin/ldapmodify -x -w {credentials} -D "cn=admin,cn=config" -H "ldap://{HOST}:{PORT}/" -f path/to/file/break_repl.ldif

      เอาต์พุตควรมีลักษณะคล้ายกับตัวอย่างต่อไปนี้

      modifying entry "olcDatabase={2}mdb,cn=config"
      modifying entry "olcDatabase={2}mdb,cn=config"
  3. คุณสามารถยืนยันว่า dc-2 ไม่ได้จำลองไปยัง dc-1 อีกต่อไปโดยสร้างรายการใน LDAP ของ dc-2 และตรวจสอบว่ารายการดังกล่าวไม่ปรากฏใน LDAP ของ dc-1

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

    1. สร้างไฟล์ readonly-user.ldif ใน dc-2 โดยมีเนื้อหาต่อไปนี้
      dn: uid=readonly-user,ou=users,ou=global,dc=apigee,dc=com
      objectClass: organizationalPerson
      objectClass: person
      objectClass: inetOrgPerson
      objectClass: top
      cn: readonly-user
      sn: readonly-user
      userPassword: {testPassword}
    2. เพิ่มผู้ใช้ด้วยคำสั่ง `ldapadd` ใน dc-2:
      /opt/symas/bin/ldapadd -H ldap://{HOST}:{PORT} -w {credentials} -D "cn=manager,dc=apigee,dc=com" -f path/to/file/readonly-user.ldif

      เอาต์พุตจะมีลักษณะคล้ายกับตัวอย่างต่อไปนี้

      adding new entry "uid=readonly-user,ou=users,ou=global,dc=apigee,dc=com"
    3. ค้นหาผู้ใช้ใน dc-1 เพื่อให้แน่ใจว่าไม่มีการจำลองผู้ใช้ หากผู้ใช้ ไม่อยู่ใน dc-1 คุณจะมั่นใจได้ว่า LDAP ทั้ง 2 รายการจะไม่จำลองแบบอีกต่อไป
      /opt/symas/bin/ldapsearch -H ldap://{HOST}:{PORT} -x -w {credentials} -D "cn=manager,dc=apigee,dc=com" -b uid=readonly-user,ou=users,ou=global,dc=apigee,dc=com -LLL

      เอาต์พุตควรมีลักษณะคล้ายกับตัวอย่างต่อไปนี้

      No such object (32)
      Matched DN: ou=users,ou=global,dc=apigee,dc=com
    4. นำผู้ใช้ที่มีสิทธิ์อ่านอย่างเดียวที่คุณเพิ่มไว้ก่อนหน้านี้ออก โดยทำดังนี้
      /opt/symas/bin/ldapdelete -v -H ldap://{HOST}:{PORT} -w {credentials} -D "cn=manager,dc=apigee,dc=com" "uid=readonly-user,ou=users,ou=global,dc=apigee,dc=com"
  4. หยุด SymasLDAP ใน dc-1
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
  5. ถอนการติดตั้งคอมโพเนนต์ SymasLDAP ใน dc-1
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap uninstall

เราเตอร์

ส่วนนี้จะอธิบายวิธีเลิกใช้งานเราเตอร์ ดูรายละเอียดเพิ่มเติมเกี่ยวกับการนำเราเตอร์ออกได้ที่ นำเซิร์ฟเวอร์ออก

ขั้นตอนต่อไปนี้จะเลิกใช้งานเราเตอร์จาก dc-1 หากมีการกำหนดค่าโหนดเราเตอร์หลายรายการใน dc-1 ให้ทำตามขั้นตอนในโหนดเราเตอร์ทั้งหมด ทีละรายการ

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

หากต้องการเลิกใช้งานเราเตอร์ ให้ทำตามขั้นตอนต่อไปนี้

  1. ปิดใช้ความสามารถในการเข้าถึงของเราเตอร์โดยบล็อกพอร์ต 15999 ซึ่งเป็นพอร์ตการตรวจสอบประสิทธิภาพการทำงาน ตรวจสอบว่ามีการบล็อกการรับส่งข้อมูลรันไทม์ในศูนย์ข้อมูลนี้

    iptables -A INPUT -i eth0 -p tcp --dport 15999 -j REJECT
  2. ตรวจสอบว่าเข้าถึงเราเตอร์ได้โดยทำดังนี้

    curl -vvv -X GET http://{ROUTER_IP}:15999/v1/servers/self/reachable

    เอาต์พุตควรมีลักษณะคล้ายกับตัวอย่างต่อไปนี้

    About to connect() to 10.126.0.160 port 15999 (#0)
    Trying 10.126.0.160...
    Connection refused
    Failed connect to 10.126.0.160:15999; Connection refused
    Closing connection 0
    curl: (7) Failed connect to 10.126.0.160:15999; Connection refused
  3. รับ UUID ของเราเตอร์ตามที่อธิบายไว้ในรับ UUID
  4. หยุดเราเตอร์
    /opt/apigee/apigee-service/bin/apigee-service edge-router stop
  5. แสดงรายการพ็อดเกตเวย์ที่พร้อมใช้งานในองค์กรโดยใช้คำสั่งต่อไปนี้
    curl -u  <AdminEmailID>:'<AdminPassword>' -X GET "http://{MS_IP}:8080/v1/organizations/{ORG}/pods"

    ดู เกี่ยวกับพ็อด

  6. ยกเลิกการลงทะเบียนประเภทของเซิร์ฟเวอร์โดยทำดังนี้
    curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://{MS_IP}:8080/v1/servers -d "type=router&region=dc-1&pod=gateway-1&uuid=UUID&action=remove"
  7. ยกเลิกการลงทะเบียนเซิร์ฟเวอร์โดยทำดังนี้
    curl -u <AdminEmailID>:'<AdminPassword>’ -X DELETE http://{MS_IP}:8080/v1/servers/UUID
  8. ถอนการติดตั้ง edge-router
    /opt/apigee/apigee-service/bin/apigee-service edge-router uninstall
    ดู นำเซิร์ฟเวอร์ออก
  9. ล้างกฎ iptables เพื่อเปิดใช้พอร์ต 15999 ที่ถูกบล็อก
    iptables -F

Message Processor

ส่วนนี้จะอธิบายวิธีเลิกใช้งาน Message Processor จาก dc-1 ดูรายละเอียดเพิ่มเติมเกี่ยวกับการนำ Message Processor ออกได้ที่ นำเซิร์ฟเวอร์ออก

เนื่องจากเราสมมติว่า dc-1 มีการติดตั้งแบบคลัสเตอร์ 12 โหนด จึงมีการกำหนดค่าโหนด Message Processor 2 โหนดใน dc-1 เรียกใช้คำสั่งต่อไปนี้ในทั้ง 2 โหนด

  1. รับ UUID ของ Message Processor ตามที่อธิบายไว้ในรับ UUID
  2. หยุด Message Processor โดยทำดังนี้
    apigee-service edge-message-processor stop
  3. ยกเลิกการลงทะเบียนประเภทของเซิร์ฟเวอร์โดยทำดังนี้
    curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://{MS_IP}:8080/v1/servers -d "type=message-processor&region=dc-1&pod=gateway-1&uuid=UUID&action=remove"
  4. ยกเลิกการเชื่อมโยงสภาพแวดล้อมจาก Message Processor
    curl -H "Content-Type:application/x-www-form-urlencoded" <AdminEmailID>:'<AdminPassword>’  \
    -X POST http://{MS_IP}:8080/v1/organizations/{ORG}/environments/{ENV}/servers \
    -d "action=remove&uuid=UUID"
  5. ยกเลิกการลงทะเบียนประเภทของเซิร์ฟเวอร์
    curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://{MS_IP}:8080/v1/servers -d "type=message-processor&region=dc-1&pod=gateway-1&uuid=UUID&action=remove"
  6. ถอนการติดตั้ง Message Processor
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor uninstall
  7. ยกเลิกการลงทะเบียนเซิร์ฟเวอร์โดยทำดังนี้
    curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://{MS_IP}:8080/v1/servers/UUID

เซิร์ฟเวอร์ Qpid และ Qpidd

ส่วนนี้จะอธิบายวิธีเลิกใช้งานเซิร์ฟเวอร์ Qpid (edge-qpid-server) และ Qpidd (apigee-qpidd) มีโหนด Qpid 2 โหนดที่กำหนดค่าใน dc-1 ดังนั้นคุณต้องทำตามขั้นตอนต่อไปนี้สำหรับทั้ง 2 โหนด

  1. รับ UUID สำหรับ Qpidd ตามที่อธิบายไว้ในรับ UUID
  2. หยุดedge-qpid-serverและapigee-qpidd:
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server stop
    /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd stop
  3. รับรายชื่อกลุ่มข้อมูลวิเคราะห์และกลุ่มผู้บริโภค
    curl -u <AdminEmailID>:'<AdminPassword>' -X GET http://{MS_IP}:8080/v1/analytics/groups/ax
  4. นำ Qpid ออกจากกลุ่มผู้บริโภคโดยทำดังนี้
    curl -u <AdminEmailID>:'<AdminPassword>' -H "Content-Type: application/json"  -X DELETE \ "http://{MS_IP}:8080/v1/analytics/groups/ax/{ax_group}/consumer-groups/{consumer_group}/consumers/{QPID_UUID}"
  5. นำ Qpid ออกจากกลุ่ม Analytics
    curl -v -u <AdminEmailID>:'<AdminPassword>' \
    -X DELETE "http://{MS_IP}:8080/v1/analytics/groups/ax/{ax_group}/servers?uuid={QPID_UUID}&type=qpid-server"
  6. ยกเลิกการลงทะเบียนเซิร์ฟเวอร์ Qpid จากการติดตั้ง Edge โดยทำดังนี้
    curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://{MS_IP}:8080/v1/servers \
    -d "type=qpid-server&region=dc-1&pod=central&uuid={QPID_UUID}&action=remove"
  7. นำเซิร์ฟเวอร์ Qpid ออกจากการติดตั้ง Edge โดยทำดังนี้
    curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://{MS_IP}:8080/v1/servers/UUID
  8. รีสตาร์ทคอมโพเนนต์ edge-qpid-server ทั้งหมดในทุกโหนดเพื่อให้แน่ใจว่าคอมโพเนนต์เหล่านั้นจะรับการเปลี่ยนแปลง
    $ /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
    $ /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server wait_for_ready
  9. ถอนการติดตั้ง edge-qpid-server และ apigee-qpidd
    $ /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server uninstall
    $ /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd uninstall

Postgres และ Postgresql

ศูนย์ข้อมูลที่คุณกำลังเลิกใช้งานอาจมี Postgres หลักหรือ Postgres สำรอง ส่วนต่อไปนี้จะอธิบายวิธีเลิกใช้งาน

การเลิกใช้งานมาสเตอร์ Postgres

หมายเหตุ: หากเลิกใช้งานมาสเตอร์ Postgres โปรดตรวจสอบว่าได้เลื่อนโหนดสแตนด์บายที่พร้อมใช้งานโหนดใดโหนดหนึ่งเป็นมาสเตอร์ Postgres ใหม่ แม้ว่าคิว QPID จะบัฟเฟอร์ข้อมูล แต่หากมาสเตอร์ Postgres ไม่พร้อมใช้งานเป็นเวลานาน คุณก็อาจเสี่ยงต่อการสูญเสียข้อมูลวิเคราะห์

วิธีเลิกใช้งาน Postgres Master

  1. สำรองข้อมูลโหนดหลัก Postgres ของ dc-1 โดยทำตามวิธีการในลิงก์ต่อไปนี้
  2. รับ UUID ของเซิร์ฟเวอร์ Postgres ตามที่อธิบายไว้ในรับ UUID
  3. ใน dc-1 ให้หยุด edge-postgres-server และ apigee-postgresql ในมาสเตอร์ปัจจุบัน โดยทำดังนี้
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
  4. ในโหนดสแตนด์บายบน dc-2 ให้ป้อนคำสั่งต่อไปนี้เพื่อทำให้เป็นโหนดหลัก
    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql promote-standby-to-master <IP of OLD Progress master>

    หมายเหตุ: หากคุณมีโหนด Postgres สำรองมากกว่า 1 โหนด คุณต้องเพิ่มรายการโฮสต์ในมาสเตอร์ใหม่และอัปเดตการตั้งค่าการจำลองสำหรับโหนด Postgres สำรองที่ใช้ได้ทั้งหมด

    หากต้องการเพิ่มรายการโฮสต์ไปยัง Postgres Master ใหม่ ให้ทำตามขั้นตอนในส่วนที่เหมาะสมด้านล่าง

    หากเหลือโหนดสแตนด์บายเพียงโหนดเดียว

    ตัวอย่างเช่น สมมติว่าก่อนที่จะเลิกใช้งาน มีการกำหนดค่าโหนด Postgres 3 รายการ คุณเลิกใช้งานมาสเตอร์ที่มีอยู่และเลื่อนโหนดสแตนด์บาย postgres ที่เหลือ รายการใดรายการหนึ่งเป็นมาสเตอร์ กำหนดค่าโหนดสแตนด์บายที่เหลือโดยทำตามขั้นตอนต่อไปนี้

    1. ในมาสเตอร์ใหม่ ให้แก้ไขไฟล์การกำหนดค่าเพื่อตั้งค่าต่อไปนี้
      PG_MASTER=IP_or_DNS_of_new_PG_MASTER
      PG_STANDBY=IP_or_DNS_of_PG_STANDBY
    2. เปิดใช้การจำลองแบบในมาสเตอร์ใหม่
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFIle

    หากมีโหนดสแตนด์บายเหลืออยู่มากกว่า 1 รายการ

    1. เพิ่มการกำหนดค่าต่อไปนี้ใน /opt/apigee/customer/application/postgresql.properties
      conf_pg_hba_replication.connection=host replication apigee standby_1_ip/32 trust \n host replication apigee standby_2_ip/32 trust
    2. ตรวจสอบว่าไฟล์ /opt/apigee/customer/application/postgresql.properties เป็นของ ผู้ใช้ apigee:
      chown apigee:apigee /opt/apigee/customer/application/postgresql.properties
    3. รีสตาร์ท apigee-postgresql:
      apigee-service apigee-postgresql restart
    4. วิธีอัปเดตการตั้งค่าการจำลองในโหนดสแตนด์บาย

      1. แก้ไขไฟล์การกำหนดค่า /opt/silent.conf และอัปเดตช่อง PG_MASTER ด้วยที่อยู่ IP ของ Postgres Master ใหม่
      2. นำข้อมูล Postgres เก่าออกด้วยคำสั่งต่อไปนี้
        rm -rf /opt/apigee/data/apigee-postgresql/
      3. ตั้งค่าการจำลองในโหนดสแตนด์บายโดยทำดังนี้
        /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
    5. ยืนยันว่าตั้งค่า Postgres Master อย่างถูกต้องแล้วโดยป้อนคำสั่งต่อไปนี้ใน dc-2
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
    6. นำเซิร์ฟเวอร์ Postgresql ออกและเพิ่มเซิร์ฟเวอร์ Postgresql จากกลุ่ม Analytics และกลุ่มผู้ใช้
      1. นำเซิร์ฟเวอร์ Postgres เก่าออกจากกลุ่มการวิเคราะห์โดยทำตามวิธีการในหัวข้อ นำเซิร์ฟเวอร์ Postgres ออกจากกลุ่มการวิเคราะห์
      2. เพิ่มเซิร์ฟเวอร์ Postgres ใหม่ลงในกลุ่ม Analytics โดยทำตามวิธีการในหัวข้อ เพิ่มเซิร์ฟเวอร์ Postgres ที่มีอยู่ลงในกลุ่ม Analytics
    7. ยกเลิกการลงทะเบียนเซิร์ฟเวอร์ postgres เก่าจาก dc-1 โดยทำดังนี้
      curl -u <AdminEmailID>:<AdminPassword> -X POST http://{MS_IP}:8080/v1/servers \
      -d "type=postgres-server®ion=dc-1&pod=analytics&uuid=UUID&action=remove"
            
    8. ลบเซิร์ฟเวอร์ postgres เก่าออกจาก dc-1
      curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://{MS_IP}:8080/v1/servers/UUID
    9. ตอนนี้คุณสามารถเลิกใช้งาน Postgres Master เก่าได้อย่างปลอดภัยแล้ว ถอนการติดตั้ง edge-postgres-server และ apigee-postgresql โดยทำดังนี้
      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server uninstall
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql uninstall

    การเลิกใช้งาน Postgres สแตนด์บาย

    หมายเหตุ: เอกสารประกอบสำหรับการติดตั้งคลัสเตอร์แบบ 12 โหนดแสดงโหนด postgresql ของ dc-1 เป็นโหนดหลัก แต่เพื่อความสะดวก ในส่วนนี้จะถือว่าโหนด postgresql ของ dc-1 เป็นโหนดสแตนด์บาย และโหนด postgresql ของ dc-2 เป็นโหนดหลัก

    หากต้องการเลิกใช้งาน Postgres Standby ให้ทำตามขั้นตอนต่อไปนี้

    1. รับ UUID ของเซิร์ฟเวอร์ Postgres โดยทำตามวิธีการในหัวข้อรับ UUID
    2. หยุด apigee-postgresql ในโหนดสแตนด์บายปัจจุบันใน dc-1:
      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
    3. นําเซิร์ฟเวอร์ Postgresql ออกจากกลุ่มการวิเคราะห์และกลุ่มผู้ใช้ แล้วเพิ่มเซิร์ฟเวอร์
      1. นำเซิร์ฟเวอร์ Postgres เก่าออกจากกลุ่มการวิเคราะห์โดยทำตามวิธีการในหัวข้อ นำเซิร์ฟเวอร์ Postgres ออกจากกลุ่มการวิเคราะห์
      2. เพิ่มเซิร์ฟเวอร์ Postgres ใหม่ลงในกลุ่มการวิเคราะห์โดยทำตามวิธีการใน เพิ่มเซิร์ฟเวอร์ Postgres ที่มีอยู่ลงในกลุ่มการวิเคราะห์
    4. ยกเลิกการลงทะเบียนเซิร์ฟเวอร์ postgres เก่าจาก dc-1 โดยทำดังนี้
      curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://{MS_IP}:8080/v1/servers \
      -d "type=postgres-server&region=dc-1&pod=analytics&uuid=UUID&action=remove"
    5. ลบเซิร์ฟเวอร์ postgres เก่าออกจาก dc-1
      curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://{MS_IP}:8080/v1/servers/UUID
    6. ตอนนี้คุณสามารถเลิกใช้งานมาสเตอร์ Postgres เวอร์ชันเก่าได้อย่างปลอดภัยแล้ว ถอนการติดตั้ง edge-postgres-server และ apigee-postgresql โดยทำดังนี้
      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server uninstall
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql uninstall

    ZooKeeper และ Cassandra

    ส่วนนี้จะอธิบายวิธีเลิกใช้งานเซิร์ฟเวอร์ ZooKeeper และ Cassandra ในการตั้งค่าศูนย์ข้อมูล 2 แห่ง

    หากคุณมีศูนย์ข้อมูลมากกว่า 2 แห่ง โปรดตรวจสอบว่าได้นำการอ้างอิงทั้งหมดไปยังโหนดที่เลิกใช้งาน (dc-1 ในกรณีนี้) ออกจากไฟล์การกำหนดค่าแบบไม่มีการโต้ตอบทั้งหมดในศูนย์ข้อมูลที่เหลือทั้งหมด สำหรับโหนด Cassandra ที่จะเลิกใช้งาน ให้ยกเลิกการเชื่อมต่อโฮสต์เหล่านั้นจาก CASS_HOSTS โหนด Cassandra ที่เหลือควรยังคงอยู่ในลำดับเดิมของ CASS_HOSTS

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

    วิธีเลิกใช้งานเซิร์ฟเวอร์ ZooKeeper และ Cassandra

    1. สำรองข้อมูลโหนด Cassandra และ ZooKeeper ของ dc-1 โดยทำตามวิธีการในลิงก์ต่อไปนี้
    2. แสดงรายการ UUID ของเซิร์ฟเวอร์ ZooKeeper และ Cassandra ในศูนย์ข้อมูลที่โหนด Cassandra กำลังจะเลิกใช้งาน

      apigee-adminapi.sh servers list -r dc-1 -p central -t application-datastore --admin <AdminEmailID> --pwd '<AdminPassword>' --host localhost
    3. ยกเลิกการลงทะเบียนประเภทของเซิร์ฟเวอร์โดยทำดังนี้
      curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://MS_IP:8080/v1/servers -d "type=cache-datastore&type=user-settings-datastore&type=scheduler-datastore&type=audit-datastore&type=apimodel-datastore&type=application-datastore&type=edgenotification-datastore&type=identityzone-datastore&type=user-settings-datastore&type=auth-datastore&region=dc-1&pod=central&uuid=UUID&action=remove"
    4. ยกเลิกการลงทะเบียนเซิร์ฟเวอร์โดยทำดังนี้
      curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://MS_IP:8080/v1/servers/UUID
    5. อัปเดตไฟล์การกำหนดค่าโดยนำ IP ของโหนดที่เลิกใช้งานแล้วออกจาก ZK_HOSTS และ CASS_HOSTS

      ตัวอย่าง: สมมติว่าคุณมี IP $IP1 $IP2 $IP3 ใน dc-1 และ $IP4 $IP5 $IP6 ใน dc-2 และคุณ กำลังเลิกใช้งาน dc-1 จากนั้นคุณควรนำ IP $IP1 $IP2 $IP3 ออกจากไฟล์การกำหนดค่า

      • รายการไฟล์การกำหนดค่าที่มีอยู่
        ZK_HOSTS="$IP1 $IP2 $IP3 $IP4 $IP5 $IP6"
        CASS_HOSTS="$IP1:1,1 $IP2:1,1 $IP3:1,1, $IP4:2,1 $IP5:2,1 $IP6:2,1”
      • รายการไฟล์การกำหนดค่าใหม่
        ZK_HOSTS="$IP4 $IP5 $IP6"
        CASS_HOSTS="$IP4:2,1 $IP5:2,1 $IP6:2,1"
    6. อัปเดตไฟล์การกำหนดค่าแบบไม่มีการโต้ตอบ (แก้ไขในขั้นตอน e) ด้วย IP ของโหนดที่เลิกใช้งานซึ่งถูกนำออกแล้ว และเรียกใช้โปรไฟล์เซิร์ฟเวอร์การจัดการในโหนดทั้งหมดที่โฮสต์เซิร์ฟเวอร์การจัดการ โดยทำดังนี้
      /opt/apigee/apigee-setup/bin/setup.sh -p ms -f updated_config_file
    7. อัปเดตไฟล์การกำหนดค่าด้วย IP ของโหนดที่เลิกใช้งานซึ่งถูกนำออกแล้ว และเรียกใช้โปรไฟล์ MP/RMP ในโหนดเราเตอร์และ Message Processor ทั้งหมด โดยทำดังนี้
      • หากกำหนดค่า Edge Router และ Message Processor ในโหนดเดียวกัน ให้ป้อนค่าต่อไปนี้
        /opt/apigee/apigee-setup/bin/setup.sh -p rmp -f updated_config_file
      • หากกำหนดค่า Edge Router และ Message Processor ในโหนดแยกกัน ให้ป้อนข้อมูลต่อไปนี้

        สำหรับเราเตอร์

        /opt/apigee/apigee-setup/bin/setup.sh -p r -f updated_config_file

        สำหรับ Message Processor

        /opt/apigee/apigee-setup/bin/setup.sh -p mp -f updated_config_file
    8. กำหนดค่าโหนด Qpid ทั้งหมดใหม่ โดยนำ IP ของโหนดที่เลิกใช้งานออกจากไฟล์คำตอบ ดังนี้
      /opt/apigee/apigee-setup/bin/setup.sh -p qs -f updated_config_file
    9. กำหนดค่าโหนด Postgres ทั้งหมดใหม่ โดยนำ IP ของโหนดที่เลิกใช้งานออกจากไฟล์การตอบกลับ
      /opt/apigee/apigee-setup/bin/setup.sh -p ps -f updated_config_file
    10. แก้ไขคีย์สเปซ system_auth หากคุณเปิดใช้การตรวจสอบสิทธิ์ Cassandra ในโหนด Cassandra ที่มีอยู่ ให้อัปเดตปัจจัยการจำลองของคีย์สเปซ system_auth โดยเรียกใช้คำสั่งต่อไปนี้
      ALTER KEYSPACE system_auth WITH replication = {'class': 'NetworkTopologyStrategy', 'dc-2': '3'};

      คำสั่งนี้จะตั้งค่าปัจจัยการจำลองเป็น '3' ซึ่งหมายถึงโหนด Cassandra 3 โหนดในคลัสเตอร์ แก้ไขค่านี้ตามที่จำเป็น

      หลังจากทำขั้นตอนนี้เสร็จแล้ว โทโพโลยี Cassandra ไม่ควรมี dc-1 ในคีย์สเปซใดๆ

    11. เลิกใช้งานโหนด Cassandra ใน dc-1 ทีละโหนด

      หากต้องการเลิกใช้งานโหนด Cassandra ให้ป้อนคำสั่งต่อไปนี้

      /opt/apigee/apigee-cassandra/bin/nodetool -h cassIP -u cassandra -pw '<AdminPassword>' decommission
    12. ตรวจสอบการเชื่อมต่อของโหนด Cassandra จาก dc-1 โดยใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้
      /opt/apigee/apigee-cassandra/bin/cqlsh cassIP 9042 -u cassandra -p '<AdminPassword>'

      หรือคำสั่งการยืนยันรองที่จะเรียกใช้ในโหนดที่เลิกใช้งานแล้ว

      /opt/apigee/apigee-cassandra/bin/nodetool netstats

      คำสั่งข้างต้นควรแสดงผลดังนี้

      Mode: DECOMMISSIONED
    13. เรียกใช้โปรไฟล์ DS สำหรับโหนด Cassandra และ ZooKeeper ทั้งหมดใน dc-2 โดยทำดังนี้
      /opt/apigee/apigee-setup/bin/setup.sh -p ds -f updated_config_file
    14. หยุด apigee-cassandra และ apigee-zookeeper ใน dc-1:
      apigee-service apigee-cassandra stop
      apigee-service apigee-zookeeper stop
    15. ถอนการติดตั้ง apigee-cassandra และ apigee-zookeeper ใน dc-1:
      apigee-service apigee-cassandra uninstall
      apigee-service apigee-zookeeper uninstall

    ลบการเชื่อมโยงออกจาก dc-1

    หากต้องการลบการเชื่อมโยงจาก dc-1 ให้ทำตามขั้นตอนต่อไปนี้

    1. ลบการเชื่อมโยงออกจาก dc-1
      1. แสดงรายการพ็อดทั้งหมดที่มีในองค์กร
        curl -v -u  <AdminEmailID>:'<AdminPassword>' -X GET "http://MS_IP:8080/v1/o/ORG/pods"
      2. หากต้องการตรวจสอบว่าได้นำการเชื่อมโยงทั้งหมดออกแล้วหรือไม่ ให้รับ UUID ของเซิร์ฟเวอร์ที่เชื่อมโยงกับพ็อดโดยทำดังนี้
        curl -v -u  <AdminEmailID>:'<AdminPassword>' \
        -X GET "http://MS_IP:8080/v1/regions/dc-1/pods/gateway-1/servers"

        หากคำสั่งนี้ไม่แสดงผล UUID ใดๆ แสดงว่าขั้นตอนก่อนหน้านี้ได้นำการเชื่อมโยงทั้งหมดออกแล้ว และคุณสามารถข้ามขั้นตอนถัดไปได้ หรือทำตามขั้นตอนถัดไป

      3. นำการเชื่อมโยงเซิร์ฟเวอร์ทั้งหมดสำหรับ UUID ที่ได้ในขั้นตอนก่อนหน้าออก โดยทำดังนี้
        curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://MS_IP:8080/v1/servers/UUID
      4. ยกเลิกการเชื่อมโยงองค์กรกับพ็อด
        curl -v -u  <AdminEmailID>:'<AdminPassword>'  "http://MS_IP:8080/v1/o/ORG/pods" -d "action=remove&region=dc-1&pod=gateway-1" -H "Content-Type: application/x-www-form-urlencoded" -X POST
    2. ลบพ็อด
      curl -v -u <AdminEmailID>:'<AdminPassword>' "http://MS_IP:8080/v1/regions/dc-1/pods/gateway-1" -X DELETE
    3. ลบภูมิภาค
      curl -v -u <AdminEmailID>:'<AdminPassword>'  "http://MS_IP:8080/v1/regions/dc-1" -X DELETE

    ถึงตอนนี้ คุณได้เลิกใช้งาน dc-1 เสร็จสมบูรณ์แล้ว

    ภาคผนวก

    การแก้ปัญหา

    หากหลังจากทำตามขั้นตอนก่อนหน้าแล้ว แต่ยังมีเซิร์ฟเวอร์ในพ็อดบางรายการ ให้ทำตามขั้นตอนต่อไปนี้ เพื่อยกเลิกการลงทะเบียนและลบเซิร์ฟเวอร์ หมายเหตุ: เปลี่ยนประเภทและพ็อดตามความจำเป็น

    1. รับ UUID โดยใช้คำสั่งต่อไปนี้
      apigee-adminapi.sh servers list -r dc-1 -p POD -t  --admin <AdminEmailID> --pwd  '<AdminPassword>’ --host localhost
    2. ประเภทของเซิร์ฟเวอร์ที่ยกเลิกการลงทะเบียน:
      curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://MP_IP:8080/v1/servers -d "type=TYPE=REGION=dc-1&pod=POD&uuid=UUID&action=remove"
    3. ลบเซิร์ฟเวอร์ทีละรายการ โดยทำดังนี้
      curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://MP_IP:8080/v1/servers/UUID

    การตรวจสอบความถูกต้อง

    คุณตรวจสอบความถูกต้องของการเลิกใช้งานได้โดยใช้คำสั่งต่อไปนี้

    เซิร์ฟเวอร์การจัดการ

    1. เรียกใช้คำสั่งต่อไปนี้จากเซิร์ฟเวอร์การจัดการในทุกภูมิภาค
      curl -v -u  <AdminEmailID>:'<AdminPassword>' http://MS_IP:8080/v1/servers?pod=central&region=dc-1
      curl -v -u  <AdminEmailID>:'<AdminPassword>' http://MS_IP:8080/v1/servers?pod=gateway&region=dc-1
      curl -v -u  <AdminEmailID>:'<AdminPassword>' http://MS_IP:8080/v1/servers?pod=analytics&region=dc-1
    2. เรียกใช้คำสั่งต่อไปนี้ในคอมโพเนนต์ทั้งหมดเพื่อตรวจสอบข้อกำหนดของพอร์ตสำหรับพอร์ตการจัดการทั้งหมด
      curl -v http://MS_IP:8080/v1/servers/self
    3. ตรวจสอบกลุ่มข้อมูลวิเคราะห์
      curl -v  -u  <AdminEmailID>:'<AdminPassword>' http://MS_IP:8080/v1/o/ORG/e/ENV/provisioning/axstatus
      curl -v  -u  <AdminEmailID>:'<AdminPassword>' http://MS_IP:8080/v1/analytics/groups/ax
    4. โหนด Cassandra/ZooKeeper

      1. ในโหนด Cassandra ทั้งหมด ให้ป้อนคำสั่งต่อไปนี้
        /opt/apigee/apigee-cassandra/bin/nodetool -h <host> statusthrift

        ซึ่งจะแสดงสถานะ running หรือ not running สำหรับโหนดนั้นๆ

      2. ในโหนดเดียว ให้ป้อนดังนี้
        /opt/apigee/apigee-cassandra/bin/nodetool -h <host> ring
        /opt/apigee/apigee-cassandra/bin/nodetool -h <host> status

        คำสั่งข้างต้นจะแสดงข้อมูลศูนย์ข้อมูลที่ใช้งานอยู่

      3. ในโหนด ZooKeeper ให้ป้อนคำสั่งต่อไปนี้ก่อน
        echo ruok | nc <host> 2181
        

        คำสั่งนี้จะแสดงผล imok

        จากนั้นป้อนข้อมูลต่อไปนี้

        echo stat | nc <host> 2181 | grep Mode
        

        ค่าของ Mode ที่คำสั่งด้านบนแสดงผลจะเป็นค่าใดค่าหนึ่งต่อไปนี้ observer, leader หรือ follower

      4. ในโหนด ZooKeeper 1 โหนด ให้เรียกใช้คำสั่งต่อไปนี้
        /opt/apigee/apigee-zookeeper/contrib/zk-tree.sh >> /tmp/zk-tree.out.txt
      5. ในโหนดหลักของ Postgres ให้เรียกใช้คำสั่งต่อไปนี้
        /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master

        ตรวจสอบว่าการตอบกลับระบุว่าโหนดเป็นมาสเตอร์

      6. ในโหนดสแตนด์บาย ให้เรียกใช้คำสั่งต่อไปนี้
        /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-standby

        ตรวจสอบว่าการตอบกลับยืนยันว่าโหนดเป็นโหนดสแตนด์บาย

      7. เข้าสู่ระบบฐานข้อมูล PostgreSQL โดยใช้คำสั่งต่อไปนี้
        psql -h localhost -d apigee -U postgres

        เมื่อได้รับข้อความแจ้ง ให้ป้อนรหัสผ่านสำหรับผู้ใช้ postgres (ค่าเริ่มต้น: postgres)

        จากนั้นเรียกใช้การค้นหาต่อไปนี้เพื่อตรวจสอบค่าสูงสุด client_received_start_timestamp:

        SELECT max(client_received_start_timestamp) FROM "analytics"."$org.$env.fact" LIMIT 1;

      บันทึก

      ตรวจสอบบันทึกในคอมโพเนนต์เพื่อให้แน่ใจว่าไม่มีข้อผิดพลาด