zowe / zowe-install-packaging

Packaging repository for the Zowe install scripts and files
Eclipse Public License 2.0
27 stars 51 forks source link

HA: shared USS file system and VSAM data set configuration #1688

Closed jackjia-ibm closed 3 years ago

jackjia-ibm commented 4 years ago

Is your feature request related to a problem? Please describe.

The feature supports the overall Zowe HA plan. This feature is relevant for Sysplex deployment.

Describe the solution you'd like

Additional context

The VSAM data set will be used by Caching API.

MarkAckert commented 4 years ago

Related to api-layer#863

jackjia-ibm commented 4 years ago

This could be a way to define shared folder in sysplex: Screen Shot 2020-10-05 at 4 59 38 PM In this way,

/LPAR1/var/zowe/instance/instance.env and /LPAR2/var/zowe/instance/instance.env can be different, but /LPAR1/var/zowe/instance/shared/instance.env and /LPAR2/var/zowe/instance/shared/instance.env will be same because the shared mountpoint is using same ZFS.

jackjia-ibm commented 4 years ago

Additional configuration on VSAM data set, we need to limit its access to Zowe user/group only.

jackjia-ibm commented 4 years ago

VSAM

Zowe will use the KSDS VSAM data cluster. KSDS most closely resembles the actual cache as it is a way to store key/value pairs and effectively retrieve the value based on the key. Other reasons for using VSAM are described here. One good example setup for VSAM is Walmart’s zECS which is open-sourced at https://github.com/walmartlabs/zECS.

VSAM will be used via a Java library available in the z/OS environment. The example of usage is available at this link.

To prevent the limitation of keys of the same size, we will create a hash of the key and store the value under the cache. We will use the master key to differentiate the services and alternative key to differentiate the key/value pairs. This will allow us to retrieve all key/value pairs for a specific service. To prevent losing information contained in the key, we will store a JSON in the format of {“key”: “keyValue”, “value”: “valueValue”}

Prerequisites Open Question

What are the requirements of the VSAM set up in the system?

  1. When we define or use a VSAM data set, we should consider how to share or access a data set within a single system and among multiple systems (Sysplex). Sometimes applications only need to read the data set. Sometimes an application needs to update a data set while other applications are reading it. The most complex case of sharing a VSAM data set is when multiple applications need to update the data set and all require complete data integrity.
  1. VSAM data set encryption

    This encryption can be done through SAF controls and functions along with SMS policies. Encrypted data sets must be in SMS-managed extended format. ICSF can be used to encrypt the data.

(Copied from Jakub's doc https://docs.google.com/document/d/1Z8T1mq7MRYzxREL2pf1zTlj0tP7fqaR2ba31TZHX0Qw/edit#)

jackjia-ibm commented 4 years ago

Since we couldn't mount shared under instance directory of each lpar, we have to put the shared folder into /global and allow the user to customize it. Here is the suggested folders for Zowe installation:


# shared runtime (ZOWE_ROOT_DIR/ROOT_DIR)
/usr/lpp/zowe

# shared extension runtime (ZWE_EXTENSION_DIR)
/global/zowe/extension

# shared instance configs (ZOWE_INSTANCE_DIR/INSTANCE_DIR)
/global/zowe/instance/zowe.yaml (or)
/global/zowe/instance/instance.env - 
    ZWE_DISCOVERY_SERVICES_LIST=https://tivlp13:7553/eureka,https://tivlp14:7553/eureka
# other shared instance folders
/global/zowe/instance/logs
/global/zowe/instance/workspace/api-mediation/static-defs
/global/zowe/instance/workspace/app-server/plugins

# shared keystore
/global/zowe/keystore
jackjia-ibm commented 4 years ago

Details of setup VSAM are posted https://github.com/zowe/api-layer/issues/889#issuecomment-710626292. Pending work: limit data set access to ZWESVUSR.