Role of ZooKeeper in webMethods API Portal

webMethods API Portal guide

webMethods API Portal is an API discovery and documentation tool built with multiple services and applications.

The services include:

  1. ElasticSearch
  2. Postgres
  3. LoadBalancer
  4. CloudSearch
  5. ZooKeeper

 The applications include:

  1. UMC - User Management
  2. ADS - Document Storage
  3. ECP - Collaboration Platform
  4. Copernicus - UI Framework with customization support

Each of the services and applications can be termed as "runnable".

Zookeeper

ZooKeeper is an Apache project providing a distributed, eventually consistent hierarchical configuration store.

ZooKeeper originated out of the world of Hadoop, where it was built to help in the maintenance of the various components in a hadoop cluster. It is a distributed configuration store that provides notifications to registered clients.  With this, it is possible to build a service discovery infrastructure, however every service must explicitly register with ZooKeeper, and the clients must then check in the configuration.

Usage of ZooKeeper runnable

  • ZooKeeper is the central service registry
  • All the applications and services register themselves in Zookeeper.  
  • Applications and services do a Zookeeper lookup to find other services and applications they need (runtime dependencies)
  • If Zookeeper becomes unavailable, the entire installation will stop working! 

Zookeeper viewer

As stated above Zookeeper is a hierarachial configuration store. We could use below tools to view the configuration entries.

Caution: As stated above Zookeeper is the central place of information lookup for services. Please use the tools for just view the internal detail and do not alter / change anything.

  1. We could use the ACC console itself to view the zookeeper entries. There exists a ACC command zk dump which dumps the Zookeeper configuration entries as key value pairs. This is the easiest way to view the zookeeper entries. Since you have already logged into a CloudController which is internally connected to a ZooKeeeper(which is alive) you dont require anyother information to fetch the configuration entries.
  2. We could also use a GUI tool https://github.com/javaquery/zooviewer/releases to view the hierachy storage structure. You can download the distribution archive and extract the content into a local folder. The tool requires the Zookeeper host:port details to connect to a alive instance. You can get the details of port details from ACC console using show runnable <instance id> command.
ACC+ localhost>show runnable zoo_s
ID: zoo_s state:STARTED type:com.aris.runnables.zookeeper-run-prod-
Configuration parameters:
        JAVA-XX\:\+CrashOnOutOfMemoryError=/enabled
        JAVA-Xmx=48m
        JAVA_OPTS=-server
        clientPort=18083
        maxClientCnxns=50
        maxSessionTimeout=60000
        minSessionTimeout=6000
        plugin.ping.disable.level1check=true
        quorumListenOnAllIPs=true
        tickTime=60000

From the configuration parameters listed above, the clientPort configuration parameters indicates the port of the ZooKeeper instance. You can use the zkHost:clientPort information to connect via ZooViewer and view the entries.