Skip to main content

Minimal deployment walkthrough

This page walks through a hypothetical deployment of a 3 node "one-box" cluster.

Topology

As each node in the cluster will be deployed with both the MindLink Anywhere and MCE roles, we will form a fully connected network.

Our example environment is as follows:

Server FQDNServer IP(s)Function
dc.domain.local192.168.0.3The AD domain controller
sql.domain.local192.168.0.5The SQL always-on cluster
files.domain.local192.168.0.6The network file share
attributes.domain.local192.168.0.7The security attribute server
sfb.domain.local192.168.0.10, 192.168.0.11, 192.168.0.12The Skype-for-Business pool
mindlink1.domain.local192.168.0.21The first MCE/MLA server
mindlink2.domain.local192.168.0.22The second MCE/MLA server
mindlink3.domain.local192.168.0.23The third MCE/MLA server
minlink.domain.local192.168.0.30The web load balancer

Walkthrough domain diagram

We will assume the default port configuration for the following dependent services:

ServicePortFunction
Active Directory global catalogTCP 3289Performing authentication / synchronizing user security attributes
Attribute serverTCP 443Synchronizing user security attributes
SQL serverTCP 1433MCE persistence layer
SfB serverTCP 5061MindLink Anywhere SfB backend communication
Network file share serverTCP 135-139, UDP 135-139MCE file upload repository

We will assume the default port configuration for the MindLink server roles as follows:

PortDirectionFunction
11111Bi-directional (from other MCE cluster members)The MCE silo-to-silo communication port
30000Bi-directional (from other MCE cluster members)The MCE client-to-silo gateway port
9080Inbound (from anywhere)The MLA web port (and MCE admin port)

Therefore each MindLink server will need Firewall rules to allow the following:

PortDirectionTarget
TCP 3289Outbounddc.domain.local
TCP 443Outboundattributes.domain.local
TCP 1433Outboundsql.domain.local
TCP 5061Outboundsfb.domain.local
TCP 135-139Outboundfiles.domain.local
UDP 135-139Outboundfiles.domain.local
TCP 11111Inbound/Outboundmindlink1.domain.local, mindlink2.domain.local, mindlink3.domain.local
TCP 30000Inbound/Outboundmindlink1.domain.local, mindlink2.domain.local, mindlink3.domain.local
TCP 9080Inboundmindlink.domain.local

The network interactions can then be visualized as follows:

Walkthrough network diagram

Active Directory

We will assume that the Active Directory server has a security group defined for MCE administrators:

AD DNPurpose
CN=MceAdministrators, DN=Groups, DC=domain, DC=localA security group containing MCE administrator users

SQL Server

We will assume that the SQL server has been configured with a database for MCE and has had the pre-requisite SQL scripts already executed against it:

SQL Server Connection String
Server=sql.domain.local;Database=Mce;Integrated Security=true

Certificates

We will need certificates to secure communication between MindLink servers and dependency services, MindLink servers and MindLink clients and between MindLink cluster members.

In order to secure the MindLink cluster we need to settle on a cluster address that all servers within the cluster (and any server connecting into the cluster) require as a SAN on any certificate they present. In this example we will use the following:

Cluster address
mce.domain.local

In order to secure the MindLink Anywhere services, we will assume that there is an SSL-terminating load balancer in front of the MindLink Anywhere services and so the MindLink servers themselves present internal server certificates to the load balancer.

The following certificates are then required to secure the MindLink services:

Certificate IDCertificate UseSubject/SANScope
SfB MTLS CertificateSecure MTLS SfB connectivitymindlink1.domain.local, mindlink2.domain.local, mindlink3.domain.localper-machine or per-cluster
MCE MTLS CertificateSecure MTLS MCE connectivitymce.domain.localper-machine or per-cluster
MLA Web CertificateMLA web service certificatemindlink1.domain.local, mindlink2.domain.local, mindlink3.domain.localper-machine or per-cluster
MLA Auth CertificateAuthentication token certificate<anything> e.g. mindlink.domain.localper-cluster

We will use the certificate identities above, assuming the simplest certificate configuration where all certificates contain SANs for all cluster server FQDNs.

Configuration

First, we must configure the following integration features:

See Configuring MindLink Anywhere for further details.

The configuration of MCE relies upon the advanced configuration section of the MindLink Management Center.

All cluster members

Most of the configuration across servers in the MindLink cluster must be the same in order for them to be considered members of the same cluster. In fact, the only configuration that should differ is the advertised IP address of the cluster members and possibly the certificates (if a per-machine certificate is used instead of per-cluster):

Management Center configuration

We must configure the settings of the MCE services through the appropriate page in the Management Center for all of the following scenarios.

Management tool page

Server
Enables the services that host the backend for the MindLink Chat Engine.

  • Enable MCE backend services: Enables the configuration of the backend services that synchronize with existing infrastructure to host the MindLink Chat Engine.
    • Please note the Management Center does not currently validate the input fields on the MCE configuration page if MCE backend services are not enabled.

Cluster configuration
Specify the identity used for the MCE cluster and the database connection used for all MCE operations, including cluster membership.

  • Cluster ID: Specifies the identity of the cluster.
  • Database connection string: Specifies the database connection for all MCE operations, including cluster membership.
  • Database Test: Allows for checking the database connection string's validity as well as checking if the server requires updating. See Database Updates.

Cluster node configuration
Specify the connection details for the local MCE cluster node.

  • Advertised IP Address: Specifies the IP address this cluster node can be reached on from other cluster nodes (default 127.0.0.1)
  • Silo Port: Specifies the port this cluster node will accept peer cluster node connections on (default 11111)
  • Gateway Port: Specifies the port this cluster node will accept client connections on (default 30000)

Transport Security
Specify the addresses and certificate used to encrypt communication between MCE cluster clients and servers.

  • Cluster address: Specifies the DNS name of the cluster.
    • This is used by cluster clients to authenticate the server with which they are communicating.
    • These values are the main differences between the deplyments. For exaple: mindlink1.domain.local = 192.168.0.21
      mindlink2.domain.local = 192.168.0.22
      mindlink3.domain.local = 192.168.0.23
  • Cluster certificate: Specifies the certificate in the Windows Machine Certificate Store to use to secure TLS communication between the cluster nodes
    • This is used by both cluster clients and servers to authenticate communication bi-directionally.
    • This authentication is performed for both client-to-server and server-to-server communication.
    • If a per-machine certificate is used instead of per-cluster, these values will need to be different per deplyment.
  • Trusted addresses: A comma-separated list of subject names that are trusted. One or more SANs in the certificate used to connect to the cluster must appear in this list
  • Disable transport security: Disables secure communication between cluster clients and servers. This will disable the usage of the other fields in Transport Security.
    • Warning! Communication within the cluster will be in plain text and therefore unprotected if transport security is disabled.
    • It is strongly advised that transport security is enabled.

Orleans dashboard

  • Enable Orleans Dashboard: Enables the monitoring dashboard for the MCE cluster
  • Orleans Dashboard port: Specifies the port to host the monitoring dashboard over HTTP

Advanced Configuration

KeyValueDescription
global.service.modulesWeb,Mce,MceAdminEnables Web, MCE and the MCE administration services respectively
debug.mce.clientenabledtrueEnables the MCE connector for Web, overridden to true when the "MceAdmin" module is enabled
mce.attributesynchronization.validissuersADSpecifies the issuers that can be used to specify COI attributes. AD = Active Directory. The value for your third-party attribute service can also be used
mce.attributesynchronization.activedirectory.synchronizationreminderminutes1Specifies the reminder interval, in minutes, for synchronizing the Active Directory attributes
mce.attributesynchronization.attributeprovider.synchronizationreminderminutes1Specifies the reminder interval, in minutes, for synchronizing the user attribute provider attributes
mce.attributesynchronization.user.defaultissuerADSpecifies the default attribute issuer to use for user attribute synchronization
mce.attributesynchronization.user.linkedauthenticationidentity.issuerADSpecifies the attribute issuer to use as the linked authentication identity for users
mce.attributesynchronization.user.linkedauthenticationidentity.namemsRTCSIP-PrimaryUserAddressSpecifies the attribute to synchronize as the linked authentication identity. This is the property defined in the attribute issuer used to link users
debug.connector.mce.groupclassificationrequiredtrueEnforces that a classification must be specified when creating a group
debug.mce.file.server.path.<mce file server identifier>C:\mce\filesThe path to where file uploads should be stored when the specified <file server identifier> is configured as the active file server, this should be a network path accessible to all MLA hosts. This key allows for recording multiple file paths onto which files have been uploaded, the currently "active" path (onto which new files will be uploaded) can be switched with the debug.mce.file.server.activeid key
debug.mce.file.server.activeidmcefileserver1The desired mce file server identifier, defined via using the debug.mce.file.server.path.<mce file server identifier> debug flag
connector.ucma.custompreferencesrepositoryC:\mce\preferencesThe path to where user preferences should be stored, this should be a network path accessible to all MLA hosts.
debug.mceadmin.admin.adgroupCN=MceAdministrators, DN=Groups, DC=domain, DC=localThe Active Directory distinguished name of a Security Group for administrator accounts
debug.ucma.persistentchat.enabledfalseDetermines whether the Skype for Business Persistent Chat connection is created. false => Persistent Chat should not be connected for user sessions, true => Persistent Chat should be connected.

Running

Each service should be started one-at-a-time to avoid a temporary split-cluster:

  • Start the MindLink Anywhere service on mindlink1.domain.local
  • Start the MindLink Anywhere service on mindlink2.domain.local
  • Start the MindLink Anywhere service on mindlink3.domain.local

This deployment will continue to operate in the face of a single node failure.

The configuration in this walkthrough enabled the administration services on each server. This means that you can connect the MCE PowerShell module to any one of the servers in order to manage the MCE cluster.

The configuration in this walkthrough enabled the Orleans dashboard on each server. This means that you can browse to https://mindlink1.domain.local:8033, https://mindlink2.domain.local:8033 or https://mindlink3.domain.local:8033 in order to monitor the health of the cluster depending on the Firewall configuration.