zowe / zlux

The top-level superproject for zLUX. zLUX includes the Zowe Desktop framework in addition to several built-in apps and an example server implementation.
Eclipse Public License 2.0
39 stars 42 forks source link

Cross-lpar or cross-sysplex zss/zis communication #876

Closed 1000TurquoisePogs closed 1 year ago

1000TurquoisePogs commented 2 years ago

Modern zowe has HA/FT support for stateless servers, where you can have multiple copies of each server and of the gateway and the gateway will route to each. But closer to the OS, there's state: which files are you viewing? which datasets? which subsystems? That data needs to come from somewhere and it comes from zss/zosmf today.

zss is part of this HA/FT regime, but zis isnt. when zss consults zis, what happens if zis goes down? We should have redundant copies of zis.

cross sysplex is a request from users as well, but it needs more explanation. what are they trying to do? we need to code relative to what they're trying to accomplish.

1000TurquoisePogs commented 2 years ago

We once had an idea for ZSSs to pass along info from one to another in order to span systems. This no longer seems necessary due to APIML being in the middle. You can reach any ZSS from APIML. But different ZSS contains different info if they're on different LPARs

So can we register ZSS to APIML in a way that contains info about which system its from, so that the Desktop can query the discovery server to know which ZSS is on which host? I believe standard registration already states which host, so that's perhaps easy.

Once we know WHICH zss we want to go to, then we have to figure out how to reach it. Gateway has an affinity header so that you can reach the same ZSS every time. Can we know the right affinity ID to use given the hostname knowledge? If so, that could be the way to target the right ZSS for a given query.

1000TurquoisePogs commented 2 years ago

I think the outcome of this should be some doc and or JS utility that can satisfy a simple api:

Hopefully it could be as simple as: myGatewayUrl = getSpecificAgentForUrl(url, hostname);

1000TurquoisePogs commented 1 year ago

This ticket seems outdated because the gateway can do the routing we need just from the affinity header.