จะกำหนดค่า IBM MQ เป็นคลัสเตอร์ HA ได้อย่างไร

ฉันต้องการสร้างคลัสเตอร์ที่มีความพร้อมใช้งานสูง แต่ฉันไม่พบขั้นตอนใด ๆ ในการสร้างจากเอกสารของ IBM

ฉันติดตาม สิ่งนี้ คำแนะนำในการสร้างคลัสเตอร์

ทั้งสอง QM ถูกใช้งานด้วย docker-compose:

version: '3.7'
services:
  london:
    build:
      context: ./config/london
    environment:
      LICENSE: "accept"
      MQ_QMGR_NAME: "QM1"
      MQ_ENABLE_METRICS: "true"
    ports:
      - 9443:9443 # web view
      - 9157:9157 # metrics

  newyork:
    build:
      context: ./config/newyork
    environment:
      LICENSE: "accept"
      MQ_QMGR_NAME: "QM2"
      MQ_ENABLE_METRICS: "true"
    ports:
      - 9553:9443 # web view
      - 9158:9157 # metrics
    depends_on:
      - london

Dockerfile สำหรับทั้งสองภาพ:

FROM ibmcom/mq

COPY init.mqsc /etc/mqm/20-init.mqsc

นี่คือการกำหนดค่าสำหรับอินสแตนซ์ MQ ลอนดอน:

* cluster config
ALTER QMGR +
      REPOS(INVENTORY) +
      PSCLUS(ENABLED)

DEFINE LISTENER(LONDON_LS) +
       TRPTYPE(TCP) +
       CONTROL(QMGR)

DEFINE CHANNEL(INVENTORY.LONDON) +
       CHLTYPE(CLUSRCVR) +
       TRPTYPE(TCP) +
       CONNAME('london(1414)') +
       CLUSTER(INVENTORY) +
       DESCR('TCP Cluster-receiver channel for queue manager LONDON')

DEFINE CHANNEL(INVENTORY.NEWYORK) +
       CHLTYPE(CLUSSDR) +
       TRPTYPE(TCP) +
       CONNAME('newyork(1414)') +
       CLUSTER(INVENTORY) +
       DESCR('TCP Cluster-sender channel from LONDON to repository at NEWYORK')

SET CHLAUTH('INVENTORY.LONDON') +
    TYPE(QMGRMAP) +
    QMNAME(QM2) +
    USERSRC(CHANNEL) +
    ADDRESS('*')

และที่นี่สำหรับตัวอย่าง นิวยอร์ก:

* cluster config
ALTER QMGR +
      REPOS(INVENTORY) +
      PSCLUS(ENABLED)

DEFINE LISTENER(NEWYORK_LS) +
       TRPTYPE(TCP) +
       CONTROL(QMGR)

DEFINE CHANNEL(INVENTORY.NEWYORK) +
       CHLTYPE(CLUSRCVR) +
       TRPTYPE(TCP) +
       CONNAME('newyork(1414)') +
       CLUSTER(INVENTORY) +
       DESCR('TCP Cluster-receiver channel for queue manager NEWYORK')

DEFINE CHANNEL(INVENTORY.LONDON) +
       CHLTYPE(CLUSSDR) +
       TRPTYPE(TCP) +
       CONNAME('london(1414)') +
       CLUSTER(INVENTORY) +
       DESCR('TCP Cluster-sender channel from NEWYORK to repository at LONDON')

SET CHLAUTH('INVENTORY.NEWYORK') +
    TYPE (QMGRMAP) +
    QMNAME(QM1) +
    USERSRC(CHANNEL) +
    ADDRESS('*')

ฉันอยากมีหัวข้อที่แอปพลิเคชันของฉันสามารถเขียน/อ่านได้ ไม่ว่าแอปพลิเคชันเหล่านั้นจะเชื่อมต่อด้วย QM ใดก็ตาม สิ่งนี้เป็นไปได้หรือไม่ และหากเป็นเช่นนั้น คุณสามารถแชร์คำสั่ง MQSC หรือลิงก์ไปยังการตั้งค่าตัวอย่างได้


person max    schedule 25.05.2020    source แหล่งที่มา
comment
หากคุณสร้างคลัสเตอร์มากกว่าที่คุณมีคลัสเตอร์เผยแพร่/สมัครสมาชิก และตอนนี้คุณสามารถสมัครสมาชิกผู้จัดการคิวทั้งสองเพื่ออ่านข้อความที่เผยแพร่ในคิวใดก็ได้แล้ว แต่คุณจะได้รับข้อความสองข้อความ ข้อความหนึ่งมาจากลอนดอนและอีกข้อความจากนิวยอร์ค   -  person Seyf    schedule 25.05.2020
comment
การสร้างหัวข้อบน QM รายการใดรายการหนึ่งจะแชร์หัวข้อ แต่ข้อความจะไม่ถูกแชร์ นั่นคือสิ่งที่ฉันพยายามทำให้สำเร็จ   -  person max    schedule 25.05.2020
comment
ความคิดเห็นของคุณช่วยกระจ่างบางสิ่งขึ้น ขอบคุณที่สละเวลา   -  person max    schedule 26.05.2020
comment
นั่นจะสมบูรณ์แบบ   -  person max    schedule 26.05.2020
comment
เพิ่มข้อมูลทั้งหมดจากความคิดเห็นลงในคำตอบ โปรดแจ้งให้เราทราบหากคุณมีคำถามอื่นๆ   -  person JoshMc    schedule 28.05.2020


คำตอบ (1)


การทำคลัสเตอร์ MQ เป็นเรื่องเกี่ยวกับการเชื่อมต่อการทำโหลดบาลานซ์ระหว่างผู้จัดการคิว

  • คุณสามารถมีตัวอย่างคิวคลัสเตอร์ที่กำหนดไว้ใน LONDON และ NEWYORK ซึ่งอาจเป็น PUT(ENABLED) ทั้งคู่ (ร้อน/ร้อน) และข้อความที่ส่งไปยังคิวนั้นโดยสมาชิกคลัสเตอร์จะอยู่ในลักษณะวนรอบทั่วไประหว่างทั้งสองอินสแตนซ์
  • หากคุณต้องการให้ร้อน/อุ่น คุณจะต้อง PUT(DISABLE) หนึ่งในสองอินสแตนซ์ เช่น LONDON จากนั้นคุณจะสั่งให้แอปพลิเคชันของคุณเชื่อมต่อและอ่านจาก NEWYORK หาก NEWYORK หยุดทำงาน คุณสามารถ PUT(ENABLED) คิวในลอนดอนและข้อความจากจุดนั้นจะไปที่ลอนดอน และคุณสามารถส่งใบสมัครของคุณไปที่ลอนดอนได้ (โปรดทราบว่าข้อความใดๆ ที่อยู่บนคิวในนิวยอร์กจะสามารถใช้ได้ก็ต่อเมื่อกู้คืน NEWYORK แล้ว MQ จะไม่ทำซ้ำข้อความ ถึงผู้จัดการคิวทั้งสอง

ด้วย pub/sub จะแตกต่างเล็กน้อยตรงที่ผู้จัดการคิวทั้งหมดในคลัสเตอร์จะรู้เกี่ยวกับหัวข้อคลัสเตอร์ และหากผู้สมัครสมาชิกรายใดบน QM ใด ๆ ในคลัสเตอร์สมัครรับ TOPIC นั้น การสมัครสมาชิกพร็อกซีจะถูกสร้างขึ้นโดย QM ผู้สมัครสมาชิก หากมีการเผยแพร่ใด ๆ เกิดขึ้นกับหัวข้อนั้นในตัวจัดการคิวใด ๆ สำเนาจะถูกส่งไปยังสมาชิกในพื้นที่แต่ละรายรวมถึง QM ใด ๆ ที่มีการสมัครสมาชิกพร็อกซีอยู่ จากนั้นสมาชิก QM จะส่งข้อความไปยังสมาชิกใด ๆ ในพื้นที่นั้น (ดังนั้นมีเพียงพร็อกซีย่อยเดียวเท่านั้น หากมีสมาชิกหลายรายบน QM เดียวกันนั้น)

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

คุณอาจต้องการดู RDQM ซึ่งมีการจำลองแบบระหว่างโหนด แต่เข้ากันไม่ได้กับคอนเทนเนอร์

person JoshMc    schedule 28.05.2020