Configuring Workspace Web Edition & Web Services
Contents
You can configure your Workspace Web Edition & Web Services nodes in three different files:
- server-settings.yaml
- onpremise-settings.yaml
- cassandra-cluster.yaml
The default installation package for WWE&WS includes sample versions of these files, located in the main config folder you created in Step 6 of Deploying the Web Application. Review the procedures on this pages for details about the options available in each of these files.
Modifying the Server Settings
Complete the steps below on each Workspace Web Edition & Web Services node.
Start of Procedure
- Open the server-settings.yaml file and review the options. This file contains a number of core parameters that are used by the server.
- Review the Web Services Configuration Options options to learn more about the default options included in the server-settings.yaml file, as well as the other options you can add to adjust Workspace Web Edition & Web Services for your solution. Make sure to update all the options marked [ToBeChangedOrRemoved].
ImportantIn each Workspace Web Edition & 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>] # CME 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 of Procedure
Modifying the Premise Settings
Complete the steps below on each Workspace Web Edition & Web Services node.
Start of Procedure
- 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 of Procedure
Modifying the Cassandra Cluster Settings
Complete the steps below on each Workspace Web Edition & Web Services node.
Start of Procedure
- 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 WWE&WS, 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 — WWE&WS 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 Datacenter
(1 datacenter with a minimum of three Cassandra nodes)Two Datacenters
(datacenters with a minimum of three Cassandra nodes in each datacenter)CL_ONE CL_QUORUM CL_LOCAL_QUORUM - write_consistency_level — Set this value according to your Cassandra topology:
Development
(1 Cassandra node)Single Datacenter
(1 datacenter with a minimum of three Cassandra nodes)Two Datacenters
(datacenters with a minimum of three Cassandra nodes in each datacenter)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 of Procedure
Tuning the Workspace Web Edition & Web Services Host Performance
Complete the steps below on each Workspace Web Edition & Web Services node to tune the performance of the host environment.
Start of Procedure
- 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 of Procedure