> For the complete documentation index, see [llms.txt](https://docs.lithnet.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.lithnet.io/ams/v1.0/configuration/deploying_features/installing-access-manager-in-a-failover-cluster.md).

# Installing in a Failover Cluster

![localadminpasswords](https://1984618955-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAsBzwJDeLC2ny10RHLdI%2Fuploads%2Fgit-blob-777b39409f48f271de2f52ccc6f33e3248829f95%2Fbadge-enterprise-edition-rocket.svg?alt=media) High availability is an [Enterprise edition feature](/ams/v1.0/access-manager-editions.md)

## Installing Access Manager in a Failover Cluster

### Prerequisites

Installing Access Manager in a failover cluster requires the following;

* A Lithnet Access Manager enterprise edition license
* You must meet the hardware and storage requirements for a [Microsoft failover cluster](https://docs.microsoft.com/en-us/windows-server/failover-clustering/clustering-requirements)
* A shared disk available to all cluster nodes (Recommended minimum size is 50GB)
* At least one Windows Server 2012 R2 domain controller in the domain where AMS will be installed
* The [KDS root key](https://docs.microsoft.com/en-us/windows-server/security/group-managed-service-accounts/create-the-key-distribution-services-kds-root-key) in the domain must be enabled

### Installation procedure

#### 1. Install and configure the base cluster service

Follow the steps outlined in [Microsoft documentation](https://docs.microsoft.com/en-us/windows-server/failover-clustering/create-failover-cluster) for creating a new failover cluster. Stop once you reach the section for `Creating clustered roles` and continue from this guide.

#### 2. Configure the cluster quorum

If you are setting up a cluster containing an even number of nodes, you must configure an appropriate [witness](https://docs.microsoft.com/en-us/windows-server/failover-clustering/manage-cluster-quorum) to ensure a cluster quorum.

#### 3. Configure the AMS storage volume online

* Open the `Disk Management` tool, and bring the AMS storage volume online. Initialize the disk, format it, and assign it a drive letter (for the purposes of this guide, we will refer to the AMS storage volume as `S:`)
* Open the `Failover Cluster Manager` tool, expand the cluster in the left hand side tree view, and select `Storage` followed by `Disks`

![](https://1984618955-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAsBzwJDeLC2ny10RHLdI%2Fuploads%2Fgit-blob-a08638c7f4bd25042306aedcaf40f7349ada9dc4%2FCluster-1-Storage.png?alt=media)

* Select `Add Disk` from the right-hand actions menu, and add the appropriate disk to the cluster.

![](https://1984618955-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAsBzwJDeLC2ny10RHLdI%2Fuploads%2Fgit-blob-11b56fe89c3dba38ed1b11f577f56736d469ccda%2FCluster-2-AddDisk.png?alt=media)

![](https://1984618955-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAsBzwJDeLC2ny10RHLdI%2Fuploads%2Fgit-blob-93dbb0be679ee6b0c9065805de58821635ba0727%2FCluster-3-DiskAdded.png?alt=media)

#### 4. Install Access Manager

* On the first node, run the Access Manager Service installer.
* When prompted to provide the installation paths, set the log and config folders to be on the `S:` drive. Eg `S:\AMS\logs` and `S:\AMS\config`\
  \\
* We also recommend using a group-managed service account for AMS. You must use the same account on all cluster nodes.\
  \\
* When the installer finishes, do not run the configuration utility when prompted.
* Exit the installer and return to the `Failover Cluster Manager`
* From the actions pane, select `Move Available Storage` and select the next node in the cluster. Confirm that the `owner node` for the storage has changed to the correct node.
* Log onto the next node, and ensure the `S:` drive is present.
* Run the AMS installer again, providing the exact same paths and service account as you did on the primary node.
* Repeat this process for all remaining cluster nodes

![](https://1984618955-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAsBzwJDeLC2ny10RHLdI%2Fuploads%2Fgit-blob-78f1639fb9bac2ebe1b4339b2256c0dbd7649796%2FCluster-5-InstallerServiceAccount.png?alt=media)

![](https://1984618955-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAsBzwJDeLC2ny10RHLdI%2Fuploads%2Fgit-blob-a3037113c2e6175fc1bd415fa02a2c888981279b%2FCluster-4-InstallerPaths.png?alt=media)

#### 5. Install the cluster role

* Once AMS has been installed on all nodes, open the `Failover Cluster Manager` and go to the `Roles` node of the cluster
* Click `Configure rule...` from the actions pane
* Select `Generic service` as the role type

![](https://1984618955-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAsBzwJDeLC2ny10RHLdI%2Fuploads%2Fgit-blob-63aa68928194bbf138cc6c3d1a7dc66293bbc0a5%2FCluster-6-GenericService.png?alt=media)

* Select `Lithnet Access Manager Service` from the services list

![](https://1984618955-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAsBzwJDeLC2ny10RHLdI%2Fuploads%2Fgit-blob-4ff0da3770e0d774f06cd35521647151edc60ca6%2FCluster-7-SelectService.png?alt=media)

* Provide an IP address and name for your client access point. This will be the name of the clustered service, and by default, forms the AD hostname of the cluster.

![](https://1984618955-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAsBzwJDeLC2ny10RHLdI%2Fuploads%2Fgit-blob-8e5996a8e62fa1da31498b82af506ef7249278ea%2FCluster-8-SelectCap.png?alt=media)

* Select the storage volume that contains the AMS configuration

![](https://1984618955-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAsBzwJDeLC2ny10RHLdI%2Fuploads%2Fgit-blob-edc06ec01c62b055b8323e12ca7873a36854b7e9%2FCluster-9-SelectStorage.png?alt=media)

* Click `Add` on the `replicate registry settings` screen, and specify the following value `SOFTWARE\Lithnet\Access Manager Service\Parameters`
* Complete the remaining steps of the wizard, and ensure the new role transitions to an 'online' state

![](https://1984618955-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAsBzwJDeLC2ny10RHLdI%2Fuploads%2Fgit-blob-18ec6cde8d93e3b12feedea36f2ad96e64a4ecbe%2FCluster-10-Online.png?alt=media)

#### 6. Configure AMS for high availability

* Use the `Failover Cluster Manager` to determine which node currently hosts the AMS service, and log onto that node
* Open the AMS configuration utility
* From the `Web hosting` page, select or import the SSL certificate
* From the `Licensing` page, click `Enter license key` and provide your enterprise license
* From the `High availability` page, select `Enable cluster-compatible secret encryption` and `Enable encryption certificate synchronization` (unless you are storing your certificates in a HSM).
* Save the configuration at this point. Restart the service when prompted.
* Close the AMS configuration utility

> Note, the configuration utility requires access to the configuration file, and therefore can only be active on the cluster node that has access to the share storage volume. Always ensure you close the configuration utility before failing over to another node.

* Use the `Failover Cluster Manager` to move the role to the next node
* Open the AMS configuration utility
* From the `Web hosting` page, select or import the SSL certificate
* Save the configuration and restart the service when prompted
* Repeat the certificate selection process on the remaining nodes in the cluster.

At this point, the cluster-specific configure is complete. You can now follow the steps in the [installing guide](/ams/v1.0/installation/installing-access-manager/installing-the-access-manager-service.md) for configuring the AMS features as appropriate for your environment.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.lithnet.io/ams/v1.0/configuration/deploying_features/installing-access-manager-in-a-failover-cluster.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
