Jump to: navigation, search

Configuring Web Services for 8.5.201.09 or earlier

Important
Complete the steps on this page if you're installing Web Services and Applications version 8.5.201.09 or earlier; otherwise, go to Configuring Web Services.

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

  1. Open the server-settings.yaml file and review the options. This file contains a number of core parameters that are used by the server.
  2. 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>]
  3. 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.
    Important
    In 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.
  4. Save your changes and close the file.

End

Modifying the premise settings

Complete the steps below on each Web Services node.

Start

  1. Open the onpremise-settings.yaml file and review the options. This file contains parameters that are used to connect to Configuration Server.
  2. 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.
Important
Configure the backupCmeHost and backupCmePort options if there is a backup Configuration Server in the Genesys environment and you want high-availability support.
  • Save your changes and close the file.
  • End

    Modifying the Cassandra cluster settings

    Complete the steps below on each Web Services node.

    Start

    1. Open the cassandra-cluster.yaml file and review the options.
    2. 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"]
    3. 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.
    4. Save your changes and close the file.

    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

    1. To optimize TCP/IP performance, you can run the following commands:
    2. 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
    3. Increase the file descriptors by adding the following to the /etc/security/limits.conf file:
    4. <user_name>		hard nofile	100000
      <user_name>		soft nofile	100000
    • <user_name> — The name of the user or group that is starting Jetty.

    End

    Next step

    Feedback

    Comment on this article:

    blog comments powered by Disqus
    This page was last modified on July 14, 2017, at 08:40.