KB-1926 How to remove servers from a distributed installation for on premise

Purpose

This article describes how to remove servers from an on-premise distributed installation of Appian. The documentation here applies only for on-premise customers running on Linux servers - a distributed installation of Appian on Windows servers is not supported. Customers who are on Appian Cloud should not follow these instructions and instead create a case with Appian Support detailing their request. 

The below steps will cause Appian to be unavailable until all steps are completed. Please schedule a maintenance window and inform your users. 

Note: When moving from High Availability to Standalone, it is recommended to adjust autocheckpoint configuration so that checkpoints do not run during business hours. More information is provided in the Configuring Checkpointing Frequency documentation.

Instructions

The links redirect to documentation corresponding to the latest version of Appian. Be sure to select the documentation version that corresponds to the version of Appian you have installed. 

Stop a Subset of Appian Services 

  1. Determine if any of the servers you are removing are hosting Kafka & Zookeeper.
    If not, complete all steps in Stopping the Application Suite on Linux, then proceed to the 'Change Topology' section and skip all instructions in between.


    Otherwise, complete all steps prior to the one that says to “Stop the Appian engines” in  Stopping the Application Suite on Linux and follow all directions in the rest of this article.

  2. Stop Service Manager & Engines without stopping Zookeeper & Kafka on all servers by running: 
    <APPIAN_HOME>/services/bin/stop.sh -p <password> -no-kafka -cluster -s all

Move Kafka Data to Remaining Servers 

  1. If the server(s) you are removing are running Kafka, note their hostnames and Kafka ports of those server(s).
    A list of Kafka host and ports can be found in <APPIAN_HOME>/conf/appian-topology.xml (after 19.1) or <APPIAN_HOME>/ear/suite.ear/conf/appian-topology.xml (before 19.1) under the <kafka-cluster> element. Kafka servers have to be removed in the reverse order in which they are listed in the topology file. 

  2. Remove partitions from the brokers that will be removed by running the following on any one server: 
    <APPIAN_HOME>/services/kafka_<versionInfo>/bin/decreaseBrokerCount.sh --exclude-brokers [<host:port, host:port>]
    1. The script needs to be passed a list of the hostnames and Kafka ports determined in step 1.

  3. Make sure that the brokers in step 2 are no longer replicating any partitions by running the following using any Zookeeper host and port:
     
    <APPIAN_HOME>/services/kafka_<versionInfo>/bin/kafka-topics.sh --describe --zookeeper <Zookeeper host>:<Zookeeper port>

    Make sure that the broker-id of the brokers that will be removed do NOT appear in the values for any column. The highest broker-id displayed should be your target Kafka cluster size - 1.  

Stop Remaining Appian Services

  1. Stop Kafka on all servers.
    <APPIAN_HOME>/services/stop.sh -p <password> -s kafka

  2. Once all Kafka brokers have stopped, stop Zookeeper on all servers by running: 
    <APPIAN_HOME>/services/stop.sh -p <password> -s zookeeper

Change Topology

  1. Edit <APPIAN_HOME>/conf/appian-topology.xml (after 19.1) or <APPIAN_HOME>/ear/suite.ear/conf/appian-topology.xml (before 19.1) on every server that will remain. The topology file must be the same on all servers.

    The topology file should reflect the end state of where each Appian Service will be running. 

    Below is an example topology file where there is only a single instance of each Appian Service on Machine A. 
    <?xml version="1.0" encoding="UTF-8"?>
    <topology port="5000">
    <server host="<MACHINE_A_IP>">
    <engine name="forums"/>
    <engine name="notify"/>
    <engine name="notify-email"/>
    <engine name="channels"/>
    <engine name="content"/>
    <engine name="collaboration-statistics"/>
    <engine name="personalization"/>
    <engine name="portal"/>
    <engine name="process-design"/>
    <engine name="process-analytics0"/>
    <engine name="process-analytics1"/>
    <engine name="process-analytics2"/>
    <engine name="process-execution0"/>
    <engine name="process-execution1"/>
    <engine name="process-execution2"/>
    </server>
    <search-cluster>
    <search-server host="<MACHINE_A_IP>" port="9301"/>
    </search-cluster>
    <kafkaCluster>
    <broker host="<MACHINE_A_IP>" port="9092"/>
    </kafkaCluster>
    <zookeeperCluster>
    <zookeeper host="<MACHINE_A_IP>" port="2181"/>
    </zookeeperCluster> <data-server-cluster> <data-server host="<MACHINE_A_IP>"port="5400" rts-count="1"/>
    </data-server-cluster>
    </topology>

  2. Deactivate server(s).
    This step is handled by the customer’s Appian System Administrator.

Restart Appian

  1. Make sure you are looking at the version of the documentation that matches the version of Appian you are running.  
    Follow all steps in Starting the Application Suite on Linux.

Affected Versions

This article applies to Appian 18.2 and later.

Last Reviewed: May 2019

Related
Recommended