diff --git a/docs-mk/patterns/diagrams/micro-legacy.drawio b/docs-mk/patterns/diagrams/micro-legacy.drawio index f9b8126b5..9aae3953a 100644 --- a/docs-mk/patterns/diagrams/micro-legacy.drawio +++ b/docs-mk/patterns/diagrams/micro-legacy.drawio @@ -29,7 +29,7 @@ - + @@ -89,7 +89,7 @@ - + @@ -103,8 +103,14 @@ + + + + + + - + diff --git a/docs-mk/patterns/images/micro-legacy-2.png b/docs-mk/patterns/images/micro-legacy-2.png index 3a2ed231b..e5db5e231 100644 Binary files a/docs-mk/patterns/images/micro-legacy-2.png and b/docs-mk/patterns/images/micro-legacy-2.png differ diff --git a/docs-mk/technology/mq/diagrams/native-ha.drawio.svg b/docs-mk/technology/mq/diagrams/native-ha.drawio.svg new file mode 100644 index 000000000..d0c872729 --- /dev/null +++ b/docs-mk/technology/mq/diagrams/native-ha.drawio.svg @@ -0,0 +1,337 @@ + + + + + + + + + +
+
+
+ Zone +
+
+
+
+ + Zone + +
+
+ + + + +
+
+
+ MQmgr Pod +
+
+
+
+ + MQmgr Pod + +
+
+ + + + +
+
+
+ Route to MQ +
+
+
+
+ + Route to MQ + +
+
+ + + + +
+
+
+ Service to MQ +
+
+
+
+ + Service to MQ + +
+
+ + + + +
+
+
+ MQmgr Pod +
+
+
+
+ + MQmgr Pod + +
+
+ + + + +
+
+
+ MQmgr Pod +
+
+
+
+ + MQmgr Pod + +
+
+ + + + + +
+
+
+ PV_1 +
+
+
+
+ + PV_1 + +
+
+ + + + + +
+
+
+ PV_2 +
+
+
+
+ + PV_2 + +
+
+ + + + + +
+
+
+ PV_3 +
+
+
+
+ + PV_3 + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ logs +
+
+
+
+ + logs + +
+
+ + + + + + + + +
+
+
+ QM1 - Active +
+
+
+
+ + QM1 - Active + +
+
+ + + + + + + + + + +
+
+
+ logs +
+
+
+
+ + logs + +
+
+ + + + + + + + + + +
+
+
+ logs +
+
+
+
+ + logs + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ QM3- Passive +
+
+
+
+ + QM3- Passive + +
+
+ + + + + + +
+
+
+ QM2- Passive +
+
+
+
+ + QM2- Passive + +
+
+ + + + +
+ + + + + Viewer does not support full SVG 1.1 + + + +
\ No newline at end of file diff --git a/docs-mk/technology/mq/index.md b/docs-mk/technology/mq/index.md index 98a60225e..713ad5e4f 100644 --- a/docs-mk/technology/mq/index.md +++ b/docs-mk/technology/mq/index.md @@ -56,8 +56,14 @@ The figure below illustrates the different ways to organize the MQ brokers accor ![](./images/decentralized.png) -* On the top row applications have decoupled queue managers, with independent availability / scalability. The ownership is decentralized, as each application owner also own the broker configuration and deployment. Such cloud native application may adopt the [Command Query Responsability Seggregation](../../patterns/cqrs/) pattern and use queues to propagage information between the microservices. The deploy of both broker and microservices follow the same CI/CD pipeline, with a kustomize to describe the broker configuration. See the [CQRS with MQ implementation](https://github.com/ibm-cloud-architecture/vaccine-reefer-mgr-cmd) we did for the Reefer manager service in the vaccine solution. -* A central MQ broker can still be part of the architecture to support legacy application and federated queues. +* On the top row, applications have decoupled queue managers, with independent availability / scalability. The ownership +is decentralized, as each application owner also owns the broker configuration and deployment. +Such cloud native application may adopt the [Command Query Responsability Seggregation](../../patterns/cqrs/) pattern and use queues to propagage +information between the microservices. The deployment of both broker and microservices follows the same CI/CD pipeline, +with a `kustomize`, for example, to describe the broker configuration. +See the [CQRS with MQ implementation](https://github.com/ibm-cloud-architecture/vaccine-reefer-mgr-cmd), we did for the Reefer manager service in the vaccine solution. +* A central MQ broker can still be part of the architecture to support legacy applications integrations and federated queues. + This type of deployment supports heterogenous operational procedures across technologies. @@ -117,8 +123,25 @@ See [the 'MQ Uniform Cluster' related repository](https://github.com/ibm-messagi ### Native HA -Native HA provides built in replication of messages and state across multiple sets of storage, removing the dependency of replication and locking from the file system. +[Native HA](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=operator-native-ha) queue managers involve an active and two replica Kubernetes `Pods`, which run as part of a +Kubernetes `StatefulSet` with exactly three replicas each with their own set of Kubernetes Persistent Volumes. + +Native HA provides built in replication of messages and state across multiple sets of storage, removing the +dependency of replication and locking from the file system. + +Each replica writes to its own recovery log, acknowledges the data, and then updates its own queue data from the replicated recovery log. + +![](./diagrams/native-ha.drawio.svg) + +A Kubernetes Service is used to route TCP/IP client connections to the current active instance. +Set the availability in the queueManager configuration. + +```yaml + queueManager: + availability: + type: NativeHA +``` ### Disaster recovery diff --git a/docs/src/pages/technology/mq/diagrams/native-ha.drawio.svg b/docs/src/pages/technology/mq/diagrams/native-ha.drawio.svg new file mode 100644 index 000000000..d0c872729 --- /dev/null +++ b/docs/src/pages/technology/mq/diagrams/native-ha.drawio.svg @@ -0,0 +1,337 @@ + + + + + + + + + +
+
+
+ Zone +
+
+
+
+ + Zone + +
+
+ + + + +
+
+
+ MQmgr Pod +
+
+
+
+ + MQmgr Pod + +
+
+ + + + +
+
+
+ Route to MQ +
+
+
+
+ + Route to MQ + +
+
+ + + + +
+
+
+ Service to MQ +
+
+
+
+ + Service to MQ + +
+
+ + + + +
+
+
+ MQmgr Pod +
+
+
+
+ + MQmgr Pod + +
+
+ + + + +
+
+
+ MQmgr Pod +
+
+
+
+ + MQmgr Pod + +
+
+ + + + + +
+
+
+ PV_1 +
+
+
+
+ + PV_1 + +
+
+ + + + + +
+
+
+ PV_2 +
+
+
+
+ + PV_2 + +
+
+ + + + + +
+
+
+ PV_3 +
+
+
+
+ + PV_3 + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ logs +
+
+
+
+ + logs + +
+
+ + + + + + + + +
+
+
+ QM1 - Active +
+
+
+
+ + QM1 - Active + +
+
+ + + + + + + + + + +
+
+
+ logs +
+
+
+
+ + logs + +
+
+ + + + + + + + + + +
+
+
+ logs +
+
+
+
+ + logs + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ QM3- Passive +
+
+
+
+ + QM3- Passive + +
+
+ + + + + + +
+
+
+ QM2- Passive +
+
+
+
+ + QM2- Passive + +
+
+ + + + +
+ + + + + Viewer does not support full SVG 1.1 + + + +
\ No newline at end of file diff --git a/docs/src/pages/technology/mq/index.mdx b/docs/src/pages/technology/mq/index.mdx index a5c1f0b68..ec461c344 100644 --- a/docs/src/pages/technology/mq/index.mdx +++ b/docs/src/pages/technology/mq/index.mdx @@ -61,8 +61,13 @@ The figure below illustrates the different ways to organize the MQ brokers accor ![](./images/decentralized.png) -* On the top row applications have decoupled queue managers, with independent availability / scalability. The ownership is decentralized, as each application owner also own the broker configuration and deployment. Such cloud native application may adopt the [Command Query Responsability Seggregation](../../patterns/cqrs/) pattern and use queues to propagage information between the microservices. The deploy of both broker and microservices follow the same CI/CD pipeline, with a kustomize to describe the broker configuration. See the [CQRS with MQ implementation](https://github.com/ibm-cloud-architecture/vaccine-reefer-mgr-cmd) we did for the Reefer manager service in the vaccine solution. -* A central MQ broker can still be part of the architecture to support legacy application and federated queues. +* On the top row, applications have decoupled queue managers, with independent availability / scalability. The ownership +is decentralized, as each application owner also owns the broker configuration and deployment. +Such cloud native application may adopt the [Command Query Responsability Seggregation](../../patterns/cqrs/) pattern and use queues to propagage +information between the microservices. The deployment of both broker and microservices follows the same CI/CD pipeline, +with a `kustomize`, for example, to describe the broker configuration. +See the [CQRS with MQ implementation](https://github.com/ibm-cloud-architecture/vaccine-reefer-mgr-cmd), we did for the Reefer manager service in the vaccine solution. +* A central MQ broker can still be part of the architecture to support legacy applications integrations and federated queues. This type of deployment supports heterogenous operational procedures across technologies. @@ -122,8 +127,25 @@ See [the 'MQ Uniform Cluster' related repository](https://github.com/ibm-messagi ### Native HA -Native HA provides built in replication of messages and state across multiple sets of storage, removing the dependency of replication and locking from the file system. +[Native HA](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=operator-native-ha) queue managers involve an active and two replica Kubernetes `Pods`, which run as part of a +Kubernetes `StatefulSet` with exactly three replicas each with their own set of Kubernetes Persistent Volumes. +Native HA provides built in replication of messages and state across multiple sets of storage, removing the +dependency of replication and locking from the file system. + +Each replica writes to its own recovery log, acknowledges the data, and then updates its own queue data from the replicated recovery log. + +![](./diagrams/native-ha.drawio.svg) + +A Kubernetes Service is used to route TCP/IP client connections to the current active instance. + +Set the availability in the queueManager configuration. + +```yaml + queueManager: + availability: + type: NativeHA +``` ### Disaster recovery