Configuring Web Services for 8.5.201.09 or earlier
Contents
To configure your Web Services nodes, you'll need to create three different configuration files: server-settings.yaml, onpremise-settings.yaml, and cassandra-cluster.yaml. You can find sample versions of these files in the main config folder you created in Step 6 of Deploying the web application for 8.5.201.09 or earlier; to use them, just remove the .sample extension.
Review the procedures on this page for details about the options you should configure in each of these files.
Modifying the server settings
Complete the steps below on each Web Services node.
Start
- Open the server-settings.yaml file and review the options. This file contains a number of core parameters that are used by the server.
- Make sure to update all the options marked [ToBeChangedOrRemoved]. You must also set the applicationName to the name of the application you created in Configuring the Web Services applications — for example, WS_Node.
You can review the Configuring features and Configuring security pages for more information about enabling specific functionality in your Web Services solution or for details about all the options available to you in the server-settings.yaml file, see Web Services configuration options options.ImportantIn each Web Services cluster, one node must be configured as the synchronization node: syncNode = true. All other nodes in the cluster must have syncNode = false. - Save your changes and close the file.
The following is an unmodified file:
# URLs
externalApiUrlV2: [ToBeChanged: public URL including protocol, address and port, <PUBLIC_SCHEMA_BASE_URL>]/api/v2
internalApiUrlV2: [ToBeChanged: internal URL including protocol, address and port, <INTERNAL_SCHEMA_BASE_URL>]/internal-api
undocumentedExternalApiUrl: [ToBeChanged: public URL including protocol, address and port, <PUBLIC_SCHEMA_BASE_URL>]/internal-api
# General
iwsDispositionCodeSync: [ToBeChanged: "true"|"false"]
temporaryAuthenticationTokenTTL: [ToBeChanged: "true"|"false"]
enableCsrfProtection: [ToBeChanged: "true"|"false"]
salesforceAuthenticationMode: [ToBeChanged: "true"|"false"]
# Timeouts
activationTimeout: 12000
configServerActivationTimeout: 35000
configServerConnectionTimeout: 15000
connectionTimeout: 4000
contactCenterSynchronizationTimeout: 60000
#inactiveUserTimeout: [ToBeChangedOrRemoved: <INACTIVE_USER_TIMEOUT>]
logoutAgentWhenNoActiveCometSessionTimeout: [ToBeChanged: "true"|"false"]
reconnectAttempts: 1
reconnectTimeout: 10000
# OPS account
opsUserName: [ToBeChanged: <OPS_USER_NAME>]
opsUserPassword: [ToBeChanged: <OPS_USER_PASSWORD>]
# Configuration Server credentials
applicationName: Cloud
applicationType: CFGGenericClient
cmeUserName: [ToBeChanged: <CONFIG_SERVER_USER_NAME>]
cmePassword: [ToBeChanged: <CONFIG_SERVER_USER_PASSWORD>]
syncNode: [ToBeChanged: "true"|"false"]
synchronizationCmeEventsPrefilterEnabled: [ToBeChanged: "true"|"false"]
enableVirtualQueueSynchronization: [ToBeChanged: "true"|"false"]
# Statistics
#statConnectionTimeout: [ToBeChangedOrRemoved: <STAT_CONNECTION_TIMEOUT>]
#statReconnectAttempts: [ToBeChangedOrRemoved: <STAT_RECONNECT_ATTEMPTS>]
#statReconnectTimeout: [ToBeChangedOrRemoved: <STAT_RECONNECT_TIMEOUT>]
#statOpenTimeout: [ToBeChangedOrRemoved: <STAT_OPEN_TIMEOUT>]
#statisticsWritesCL: [ToBeChangedOrRemoved: <STATISTICS_WRITE_SCL>]
#reportingSyncInterval: [ToBeChangedOrRemoved: <REPORTING_SYNC_INTERVAL>]
enableElasticSearchIndexing: [ToBeChanged: "true"|"false"]
#statisticsOpenRetryInterval: [ToBeChangedOrRemoved: <STATISTICS_OPEN_RETRY_INTERVAL>]
# Call Recording
createCallRecordingCF: [ToBeChanged: "true"|"false"]
#crClusterName: [ToBeChangedOrRemoved: <CR_CLUSTER_NAME>]
#crRegion: [ToBeChangedOrRemoved: <CR_REGION>]
#awsS3AccessKey: [ToBeChangedOrRemoved: <AWS_S3_ACCESS_KEY>]
#awsS3SecretKey: [ToBeChangedOrRemoved: <AWS_S3_SECRET_KEY>]
#awsS3BucketName: [ToBeChangedOrRemoved: <AWS_S3_BUCKET_NAME>]
#awsS3SocketTimeout: [ToBeChangedOrRemoved: <AWS_S3_SOCKET_TIMEOUT>]
#awsS3MaxErrorRetry: [ToBeChangedOrRemoved: <AWS_S3_MAX_ERROR_RETRY>]
#awsS3MaxConnection: [ToBeChangedOrRemoved: <AWS_S3_MAX_CONNECTION>]
#awsS3ConnectionTimeout: [ToBeChangedOrRemoved: <AWS_S3_CONNECTION_TIMEOUT>]
#cryptoSecurityKey: [ToBeChangedOrRemoved: <CRYPTO_SECURITY_KEY>]
#webDAVMaxConnection: [ToBeChangedOrRemoved: <WEBDAV_MAX_CONNECTION>]
#webDAVMaxTotalConnection: [ToBeChangedOrRemoved: <WEBDAV_MAX_TOTAL_CONNECTION>]
# CDR
#voiceMonitorNodeId: [ToBeChangedOrRemoved: <VOICE_MONITOR_NODE_ID>]
# Multi regional supporting
nodePath: [ToBeChanged: node position in cluster, example: /<REGION>/HOST
#nodeId: [ToBeChangedOrRemoved: unique value in cluster <NODE_ID>]
# SSL and CA
#caCertificate: [ToBeChangedOrRemoved: <CA_CERTIFICATE>]
#jksPassword: [ToBeChangedOrRemoved: <JKS_PASSWORD>]
# SAML
#samlSettings:
#encryptionKeyName: [ToBeChangedOrRemoved: <SAML_ENCRYPTION_KEY_NAME>]
#signingKeyName: [ToBeChangedOrRemoved: <SAML_SIGNING_KEY_NAME>]
#identityProviderMetadata: [ToBeChangedOrRemoved: <SAML_IDENTITY_PROVIDER_METADATA>]
#serviceProviderEntityId: [ToBeChangedOrRemoved: <SAML_SERVICE_PROVIDER_ENTITY_ID>]
#encryptionKeyPassword: [ToBeChangedOrRemoved: <SAML_ENCRYPTION_KEY_PASSWORD>]
#signingKeyPassword: [ToBeChangedOrRemoved: <SAML_SIGNING_KEY_PASSWORD>]
#tlsKeyName: [ToBeChangedOrRemoved: <SAML_TLS_KEY_NAME>]
#tlsKeyPassword: [ToBeChangedOrRemoved: <SAML_TLS_KEY_PASSWORD>]
#responseSkewTime: [ToBeChangedOrRemoved: <SAML_RESPONSE_SWEW_TIME>]
# CORS
#crossOriginSettings:
#allowedOrigins: [ToBeChangedOrRemoved: <CROSS_ALLOWED_ORIGINS>]
#allowedMethods: [ToBeChangedOrRemoved: <CROSS_ALLOWED_METHODS>]
#allowedHeaders: [ToBeChangedOrRemoved: <CROSS_ALLOWED_HEADERS>]
#exposedHeaders: [ToBeChangedOrRemoved: <CROSS_EXPOSED_HEADERS>]
#allowCredentials: [ToBeChangedOrRemoved: <CROSS_ALLOW_CREDENTIALS>]
#corsFilterCacheTimeToLive: [ToBeChangedOrRemoved: <CROSS_ORIGIN_CORS_FILTER_CACHE_TIME_TO_LIVE>]
# Elastic Search
#elasticSearchSettings:
#clientNode: [ToBeChangedOrRemoved: "true"|"false"]
#indexPerContactCenter: [ToBeChangedOrRemoved: "true"|"false"]
#enableScheduledIndexVerification: [ToBeChangedOrRemoved: "true"|"false"]
#indexVerificationInterval: [ToBeChangedOrRemoved: <ELASTIC_SEARCH_INDEX_VERIFICATION_INTERVAL>]
#retriesOnConflict: [ToBeChangedOrRemoved: <ELASTIC_SEARCH_RETRIES_ON_CONFICT>]
#waitToIndexTimeout: [ToBeChangedOrRemoved: <ELASTIC_SEARCH_WAIT_TO_INDEX_TIMEOUT>]
# Screen Recording
#screenRecordingSettings:
#screenRecordingEServicesEnabled: [ToBeChangedOrRemoved: "true"|"false"]
#screenRecordingVoiceEnabled: [ToBeChangedOrRemoved: "true"|"false"]
#clientSessionManagerCacheTTL: [ToBeChangedOrRemoved: <SCREEN_RECORDING_CLIENT_SESSION_MANAGER_CACHE_TTL>]
#recordingInteractionEventsTTL: [ToBeChangedOrRemoved: <SCREEN_RECORDING_RECORDING_INTERACTION_EVENTS_TTL>]
#contactCenterInfoManagerCacheTTL: [ToBeChangedOrRemoved: <SCREEN_RECORDING_CONTACT_CENTER_INFO_MANAGER_CACHE_TTL>]
# Caching Settings
#cachingSettings:
#enableSystemWideCaching: [ToBeChangedOrRemoved: "true"|"false"]
#agentStatesTTL: [ToBeChangedOrRemoved: <CACHING_AGENT_STATES_TTL>]
#contactCenterFeaturesTTL: [ToBeChangedOrRemoved: <CACHING_CONTACT_CENTER_FEATURES_TTL>]
#contactCenterSettingsTTL: [ToBeChangedOrRemoved: <CACHING_CONTACT_CENTER_SETTINGS_TTL>]
#voiceContextCaching: [ToBeChangedOrRemoved: "true"|"false"]
#voiceContextRefreshInterval: [ToBeChangedOrRemoved: <CACHING_VOICE_CONTEXT_REFRESH_INTERVAL>]
# DoS Filter Settings
enableDosFilter: [ToBeChanged: "true"|"false"]
#dosFilterSettings:
#maxRequestsPerSec: [ToBeChangedOrRemoved: <DOS_FILTER_MAX_REQUESTS_PER_SEC>]
#delayMs: [ToBeChangedOrRemoved: <DOS_FILTER_DELAY_MS>]
#maxWaitMs: [ToBeChangedOrRemoved: <DOS_FILTER_MAX_WAIT_MS>]
#throttledRequests: [ToBeChangedOrRemoved: <DOS_FILTER_THROTTLED_REQUESTS>]
#throttleMs: [ToBeChangedOrRemoved: <DOS_FILTER_THROTTLE_MS>]
#maxRequestMs: [ToBeChangedOrRemoved: <DOS_FILTER_MAX_REQUEST_MS>]
#maxIdleTrackerMs: [ToBeChangedOrRemoved: <DOS_FILTER_MAX_IDLE_TRACKER_MS>]
#insertHeaders: [ToBeChangedOrRemoved: <DOS_FILTER_INSERT_HEADERS>]
#trackSessions: [ToBeChangedOrRemoved: <DOS_FILTER_TTACK_SESSIONS>]
#remotePort: [ToBeChangedOrRemoved: <DOS_FILTER_REMOTE_PORT>]
#ipWhitelist: [ToBeChangedOrRemoved: <DOS_FILTER_IP_WHITE_LIST>]
# Account Management
#accountManagement:
#forgotPasswordEmailTemplate:
#from: [ToBeChangedOrRemoved: <PASSWORD_MESSAGE_FROM>]
#subject: [ToBeChangedOrRemoved: <PASSWORD_MESSAGE_SUBJECT>]
#body: [ToBeChangedOrRemoved: <PASSWORD_MESSAGE_BODY>]
#accountCreatedEmailTemplate:
#from: [ToBeChangedOrRemoved: <ACCOUNT_MESSAGE_FROM>]
#subject: [ToBeChangedOrRemoved: <ACCOUNT_MESSAGE_SUBJECT>]
#body: [ToBeChangedOrRemoved: <ACCOUNT_MESSAGE_BODY>]
#smtpServer:
#host: [ToBeChangedOrRemoved: <SMTP_SERVER_HOST>]
#port: [ToBeChangedOrRemoved: <SMTP_SERVER_PORT>]
#userName: [ToBeChangedOrRemoved: <SMTP_SERVER_USER_NAME>]
#password: [ToBeChangedOrRemoved: <SMTP_SERVER_PASSWORD>]
#timeout: [ToBeChangedOrRemoved: <SMTP_SERVER_TIMEOUT>]
End
Modifying the premise settings
Complete the steps below on each Web Services node.
Start
- Open the onpremise-settings.yaml file and review the options. This file contains parameters that are used to connect to Configuration Server.
The following is an unmodified file:
cmeHost: localhost
cmePort: 8888
countryCode: US
The following options are valid in this file:
- cmeHost — The Configuration Server host name (FQDN) or IP.
- cmePort — The Configuration Server port.
- backupCmeHost — The backup Configuration Server host name (FQDN) or IP.
- backupCmePort — The backup Configuration Server port.
- countryCode — The premise contact center's country code.
End
Modifying the Cassandra cluster settings
Complete the steps below on each Web Services node.
Start
- Open the cassandra-cluster.yaml file and review the options.
- Modify the settings as needed, making sure to update all the options marked [ToBeChanged]:
- thrift_port — The port for Thrift to listen for clients. It should be the same as the rpc_port you set in the cassandra.yaml file as part of the Configuring Cassandra procedure.
- jmx_port — The port Cassandra uses for Java Manage Extension (JMX).
- keyspace — The name of the Cassandra keyspace. This name should be the same as the keyspace name you set while Creating the Cassandra keyspace. If you used the keyspace creation scripts that come with F, then you can leave this value as sipfs.
- nodes — A comma-separated list of Cassandra node IPs or host names.
- backup_nodes — A comma-separated list of backup Cassandra node IPs or host names. This option is intended for deployments that have two separate Cassandra data centers — Web Services switches from primary to backup if the primary nodes are unavailable. If your deployment is small with only one data center, you can ignore this option.
- replication_factor — A replication factor appropriate for your Cassandra topology. This value should be the same as the replication factor you set in Step 2 of the Creating the Cassandra keyspace procedure.
- read_consistency_level — Set this value according to your Cassandra topology:
Development
(1 Cassandra node)Single Data Center
(1 data center with a minimum of three Cassandra nodes)Two Data Centers
(data centers with a minimum of three Cassandra nodes in each data center)CL_ONE CL_QUORUM CL_LOCAL_QUORUM - write_consistency_level — Set this value according to your Cassandra topology:
Development
(1 Cassandra node)Single Data Center
(1 data center with a minimum of three Cassandra nodes)Two Data Centers
(data centers with a minimum of three Cassandra nodes in each data center)CL_ONE CL_QUORUM CL_LOCAL_QUORUM - cassandraVersion — Possible values are 1.1 (for 1.1.x versions) and 1.2 (for 1.2.x versions).
- useSSL — Set to true to enable Cassandra to use SSL. This option is only valid for Cassandra 1.2.x.
The following options tune the Cassandra database access. The default values were used by Genesys during internal load tests.
- max_conns_per_host — Maximum number of connections to allocate for a single host's pool.
- max_cons — Maximum number of connections in the pool.
- max_pending_conns_per_host — Maximum number of pending connect attempts per host.
- max_blocked_threads_per_host — Maximum number of blocked clients for a host.
- Save your changes and close the file.
The following is an unmodified file:
thrift_port: 9160
jmx_port: 7199
keyspace: sipfs
nodes: [ToBeChanged: <CASSANDRA_PRIMARY_DC_NODES>]
backup_nodes: [ToBeChanged: <CASSANDRA_BACKUP_DC_NODES>]
replication_factor: [ToBeChanged: <REPLICATION_FACTOR>]
write_consistency_level: [ToBeChanged: "CL_LOCAL_QUORUM" for multi-datacenters env, "CL_QUORUM" for single-DC env.]
read_consistency_level: [ToBeChanged: "CL_LOCAL_QUORUM" for multi-datacenters env, "CL_QUORUM" for single-DC env.]
max_conns_per_host: 16
max_cons: 48
max_pending_conns_per_host: 80
max_blocked_threads_per_host: 160
cassandraVersion: [ToBeChanged: "1.1" | "1.2"]
useSSL: [ToBeChanged: supporting only for 1.2 Cassandra "false" | "true"]
End
Tuning the Web Services host performance
Complete the steps below on each Web Services node to tune the performance of the host environment.
Start
- To optimize TCP/IP performance, you can run the following commands:
- Increase the file descriptors by adding the following to the /etc/security/limits.conf file:
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216
sudo sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
sudo sysctl -w net.ipv4.tcp_wmem="4096 16384 16777216"
sudo sysctl -w net.core.somaxconn=4096
sudo sysctl -w net.core.netdev_max_backlog=16384
sudo sysctl -w net.ipv4.tcp_max_syn_backlog=8192
sudo sysctl -w net.ipv4.tcp_syncookies=1
sudo sysctl -w net.ipv4.tcp_congestion_control=cubic
<user_name> hard nofile 100000
<user_name> soft nofile 100000
- <user_name> — The name of the user or group that is starting Jetty.
End