Guia de Instalação

Procedimento de Instalação

1. Instalação do Docker

Siga os passos de instalação do Docker. Por exemplo, para sistema operacional Linux CentOS, o procedimento de instalação se encontra aqui.

2. Instalação do Docker Compose

Siga os passos de instalação do Docker compose.

Aviso

Para obter as imagens docker é necessário ter acesso à rede corporativa do CPQD e ao repositório cpqd-docker. O download das imagens será feito nos passos adiante.

3. Criação da estrutura de diretórios

Nota

Esse procedimento assume que serão utilizado o disco /l/disk0 para a persistência do MongoDB e InfluxDB.

  • Organização de pastas proposta.

    l
    └──disk0
       ├──influxdb
       ├──mongodb
       └──trd
          ├──docker-compose.yml
          └──.env
    
  • Crie a pasta de persistência para o MongoDB em /l/disk0/mongodb.

    $ mkdir -p /l/disk0/mongodb && \
      chmod 775 -R /l/disk0/mongodb
    
  • Crie a pasta de persistência para o InfluxDB em /l/disk0/influxdb.

    $ mkdir -p /l/disk0/influxdb && \
      chmod 775 -R /l/disk0/influxdb
    
  • Crie a pasta a trd onde deveram estar o script de inicialização e o docker-compose do projeto /l/disk0/trd.

    $ mkdir -p /l/disk0/trd && \
      chmod 775 -R /l/disk0/trd
    

4. Organização e configuração do Nó de Controle

  • Faça download do arquivo docker-compose.yml.

  • Crie o arquivo .env com as variáveis de ambiente:

    # hostname
    ND_CONTROL_HOST=000.cpqd.com.br            # Hostname do nó de controle
    
    ### Versão ###
    TRD_VERSION=3.3.0
    
    ### Repo Docker imagem ###
    DOCKER_IMAGE_PATH=artifactory.cpqd.com.br/docker/cpqd/trd
    
    ### Parâmetros dos volumes mapeados no host ###
    TRD_MONGODB=/l/disk0/mongodb
    TRD_INFLUXDB=/l/disk0/influxdb
    TRD_LOG=/var/log/cpqd/
    
    ### Volume com arquivos para inicialização do nó de processamento ###
    TRD_CREDENTIALS=/l/disk0/credentials
    
    ### Parâmetros de licença ###
    LICENSE_HOST=sl.cpqd.com.br    # Production environment
    DIARIZATION_LICENSE_ID=        # Production License TRD aqui!
    ASR_LICENSE_ID=                # Production License ASR
    ASR_LICENSE_CHANNELS=4
    SL_TAG="dev" #Descrição da máquina
    SL_HOSTNAME=${HOSTNAME}
    
    # Versões dos workers: classificadores de fala
    WORKER_EMOTION_VERSION=8k-ura_10-v1
    WORKER_GENDER_VERSION=8k-ura_2-v1
    WORKER_AGE_VERSION=8k-ura_ordinal-v0
    
    ### Parâmetros gerais ###
    PROFILE="prod"
    MONGODB=mongodb://${ND_CONTROL_HOST}:27017
    REDIS_HOST=${ND_CONTROL_HOST}
    REDIS_PORT=6379
    RABBIT_HOST=${ND_CONTROL_HOST}
    RABBIT_PORT=5672
    RABBIT_MANAGEMENT_PORT=15672
    RABBIT_USER=guest
    RABBIT_PWD=guest
    TIMEZONE="America/Sao_Paulo"
    VALID_EXTENSION_FORMATS='[".wav", ".mp3", ".flac", ".wma", ".mp4", ".avi", ".flv", ".mkv", ".mov", ".mpg", ".wmv"]'
    MAX_AUDIO_SIZE_BYTES=2147483648  #2Gbyte
    MONGODB_CACHE_GB="0.1"
    EMPTY_QUEUE_TIMEOUT=1800 # 30 minutes
    JOB_TTL_IN_MINUTES=7200 # 5 days
    ASR_MODEL_TAG=callcenter-small # options: callcenter-small or custom-small
    ASR_LM_URI=builtin:slm/${ASR_MODEL_TAG}
    CLUSTER_TH=-.4
    BACKEND_CORS_ORIGINS='["http://localhost", "http://localhost:8000", "https://localhost", "https://localhost:8000"]'
    EMPTY_QUEUE_INTERVAL=60  # 60 seconds
    
    ### Parâmetros usados com aws ###
    AWS_REGION=""
    SPOT_TARGET_CAPACITY=1  # Quantidade de instancias (spots)
    
    ### Parâmetros usados com gcp ###
    GCP_ZONE=""
    GCP_PROJECT_ID=""
    
    ### Parâmetros usados com aws ou gcp ###
    #NODES='"node001", "node002"' # Nomes dos nós de processamento, descomente para habilitar
    NODES_CONFIG={"nodes": [${NODES}], "timeout": {"start": 30, "stop": 300}}
    
    ### AWS Cloud ###
    AWS_CONFIG={"region": "${AWS_REGION}"}
    AWS_SPOT_FLEET_CONFIG={"spot_fleet_conf_file": "/home/credentials/config.json", "spot_user_data_file": "/home/credentials/start.sh", "target_capacity": "${SPOT_TARGET_CAPACITY}"}
    
    ### Google Cloud ###
    GCP_CONFIG={"project": "'${GCP_PROJECT_ID}'", "zone": "'${GCP_ZONE}'"}
    
    ### Configuração do ASR Server ###
    ASR_SERVER_URL=ws://asr-server:8025/asr-server/asr
    ASR_WORD_HINTS=""
    ASR_REMOVE_UNK=false
    ASR_PRE_LOAD_MODELS=${ASR_LM_URI}
    
    ### Webhook ###
    ALLOW_HTTP_WEBHOOKS=false  # Disable webhooks HTTP
    
    ### InfluxDB ###
    INFLUX_DATABASE="metrics"
    INFLUXDB_USER="trd"
    INFLUXDB_PASSWORD="EB87aiOXV52O9ZGunF1Wm"
    INFLUXDB_ADMIN_USER="admin"
    INFLUXDB_ADMIN_PASSWORD="jsOrR3GGd8UyBdOCRQ"
    INFLUX_INIT={"host": "${ND_CONTROL_HOST}", "port": 8086, "db": "${INFLUX_DATABASE}", "active": "true"}
    

Iniciando e parando os serviços

Para iniciar os serviços do Nó de Controle:

$ docker-compose up -d

Para iniciar os serviços do Nó de Processamento:

$ docker-compose up -d vad-executor clustering-executor recognition-executor asr-serve

Para parar os serviços:

$ docker-compose down

Visualizando os logs

Para visualizar os logs dos containers Docker, utilize os comandos abaixo.

$ docker-compose logs [service-name]