Yeti Switch - SOFTSWITCH PARA HUMANOS!! Parte 01.

Versão 1.12

O sistema operacional suportado é Debian GNU/Linux 11, a única arquitetura suportada é amd64.

Configuração de repositórios 

A maioria dos servidores pode usar o mesmo conjunto de repositórios:

deb http://ftp.debian.org/debian/ bullseye main contrib non-free
deb http://ftp.debian.org/debian/ bullseye-updates main
deb http://security.debian.org/debian-security bullseye-security main

deb http://pkg.yeti-switch.org/debian/bullseye 1.12 main
deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main

Os repositórios do sistema podem ser alterados editando o arquivo: /etc/apt/sources.list. Como usamos nosso próprio repositório de pacotes, você deve adicionar nossa chave a um arquivo confiável.

# apt install -y vim wget gnupg net-tools
# wget http://pkg.yeti-switch.org/key.gpg -O - | apt-key add -
A chave do repositório PGDG também deve ser adicionada à lista confiável:
# wget https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | apt-key add -

Roteando a instalação do banco de dados

NOTA: Recomendamos colocar o banco de dados de roteamento no mesmo host com interface WEB de gerenciamento para melhor desempenho e capacidade de resposta da interface web.

Versões suportadas

A única versão do PostgreSQL suportada é a 13.

Instalação de pacotes 

# apt update  
# apt install postgresql-13 postgresql-contrib-13 postgresql-13-prefix postgresql-13-pgq3  
# apt install postgresql-13-pgq-ext postgresql-13-yeti postgresql-13-pllua pgqd

Criação dos bancos de dados 

Criar banco de dados de roteamento 

# su - postgres
$ psql
postgres=# create user yeti encrypted password 'algumasenha' superuser;
CREATE ROLE
postgres=# create database yeti owner yeti;
CREATE DATABASE
postgres=# \q 
postgres@yeti:~$ exit 

NOTA: Recomenda-se escolher nomes de bancos de dados, nomes de usuários e senhas diferentes dos especificados neste manual por motivos de segurança.

Para grandes instalações, é recomendável colocar o banco de dados CDR em um servidor dedicado.

Verificações

Verifique se os bancos de dados foram criados com sucesso e estão acessíveis: 

root@yeti:/# psql -h 127.0.0.1 -U yeti -d yeti
Password for user yeti:  psql (9.4.5) SSL connection
(cipher: DHE-RSA-AES256-GCM-SHA384, bits: 256)
Type "help" for help.

yeti=# \q
root@yeti:/#

Não se esqueça de fazer alterações em /etc/postgresql/13/main/pg_hba.conf e aplicá-las se você planeja acessar esses bancos de dados de outros hosts e/ou configurar a replicação do banco de dados.

Instalação de bancos de dados CDR

O sistema requer dois bancos de dados: um para roteamento e outro para CDRs. A configuração de diferentes instâncias do PostgreSQL é altamente recomendada para possibilitar a replicação.

Instalação de pacotes 

Bancos de dados CDRs requerem um conjunto de pacotes semelhante ao banco de dados de roteamento.

# apt update 
# apt install postgresql-13 postgresql-contrib-13 postgresql-13-prefix postgresql-13-pgq3 
# apt install postgresql-13-pgq-ext postgresql-13-yeti postgresql-13-pllua pgqd

NOTA: É importante instalar o Postgresql do repositório PGDG. Consulte a configuração dos repositórios para obter detalhes. 

Criação dos bancos de dados

Criar banco de dados cdr (Call Detail Record).

# su - postgres
$ psql
postgres=# create user cdr encrypted password 'algumasenha' superuser;
CREATE ROLE
postgres=# create database cdr owner cdr;
CREATE DATABASE
postgres=# \q 
postgres@yeti:~$ exit

NOTA: Recomenda-se escolher nomes de bancos de dados, nomes de usuários e senhas diferentes dos especificados neste manual por motivos de segurança. 

Para grandes instalações, é recomendável colocar o banco de dados CDR em um servidor dedicado.

Código PGQd

Após a inicialização do banco de dados CDR, você deve executar pgq ticker daemon (pgqd) no servidor com banco de dados CDR. Edite o arquivo de configuração /etc/pgqd.ini e realize as modificações a seguir:

[pgqd]
base_connstr = host=127.0.0.1 port=5432 dbname=cdr user=cdr password=algumasenha
initial_database = cdr
database_list = cdr
pidfile = /var/run/postgresql/pgqd.pid

Então você deve iniciar o ticker: 

# service pgqd start
# servide pgqd status
 pgqd.service - PgQ maintenance daemon
Loaded: loaded (/lib/systemd/system/pgqd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-07-24 14:07:52 -03; 47min ago
Main PID: 6949 (pgqd)
Tasks: 1 (limit: 2323)
Memory: 1.1M
CPU: 46ms
CGroup: /system.slice/pgqd.service
└─6949 /usr/bin/pgqd /etc/pgqd.ini
 

Verificações 

Verifique se os bancos de dados foram criados com sucesso e estão acessíveis:

root@yeti-cdr:/# psql -h 127.0.0.1 -U cdr -d cdr
Password for user cdr:  psql (9.4.5) SSL connection
(cipher: DHE-RSA-AES256-GCM-SHA384, bits: 256)
Type "help" for help.

cdr=# \q
root@yeti-cdr:/#

Não se esqueça de fazer alterações em /etc/postgresql/13/main/pg_hba.conf e aplicá-las se você planeja acessar esses bancos de dados de outros hosts e/ou configurar a replicação do banco de dados.

instalação da interface WEB

Requisitos do servidor: 

  • Arquitetura amd64;
  • Distribuição Debian 11 Bullseye;
  • Pelo menos 4 GB de RAM.

Instalação de pacotes

# apt update && apt install yeti-web nginx
 

Configuração de conexão de bancos de dados 

Para configurar os parâmetros de conexão de bancos de dados, crie o arquivo /opt/yeti-web/config/database.yml com o seguinte conteúdo: 

production:
  primary:
    adapter: postgresql
    encoding: unicode
    database: yeti
    username: yeti
    password: algumasenha
    host: 127.0.0.1
    port: 5432
    schema_search_path: 'gui, public, switch, billing, class4, runtime_stats, sys, logs, data_import'
    min_messages: notice
    pool: 5

  cdr:
    adapter: postgresql
    encoding: unicode
    database: cdr
    username: yeti
    password: algumasenha
    host: 127.0.0.1
    port: 5432
    schema_search_path: 'cdr, reports, billing'
    min_messages: notice
    pool: 5
    migrations_paths: db/cdr_migrate
 
Você deve especificar endereços e credenciais corretos que foram usados na seção anterior.

Configuração Yeti-web

Copie o exemplo do arquivo de configuração /opt/yeti-web/config/yeti_web.yml.distr para /opt/yeti-web/config/yeti_web.yml

# cp -av /opt/yeti-web/config/yeti_web.yml.distr /opt/yeti-web/config/yeti_web.yml

Inicialização da comunicação com os bancos de dados

Para inicializar bancos de dados vazios durante a instalação inicial:

# cd /opt/yeti-web
# su -s /bin/bash yeti-web
$ RAILS_ENV=production ./bin/bundle.sh exec rake db:schema:load db:migrate
$ RAILS_ENV=production ./bin/bundle.sh exec rake db:seed
yeti-web@yeti:~$ exit
root@yeti:/opt/yeti-web# cd /

Para atualizar os bancos de dados para a versão mais recente: 

# cd /opt/yeti-web
# su -s /bin/bash yeti-web
$ RAILS_ENV=production ./bin/bundle.sh exec rake db:migrate
yeti-web@yeti:~$ exit
root@yeti:/opt/yeti-web# cd /

Configuração do Nginx

Para configuração básica, remova a configuração padrão e copie yeti-web.dist.nginx:

# rm /etc/nginx/sites-enabled/default
# cp /opt/yeti-web/config/yeti-web.dist.nginx /etc/nginx/sites-enabled/yeti
# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# service nginx restart

nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-07-24 15:22:34 -03; 4s ago
       Docs: man:nginx(8)
    Process: 16821 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 16822 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 16823 (nginx)
      Tasks: 2 (limit: 2323)
     Memory: 2.6M
        CPU: 15ms
     CGroup: /system.slice/nginx.service
             ├─16823 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             └─16824 nginx: worker process

Lançar

Após a configuração bem-sucedida dos bancos de dados, você finalmente pode executar o software usando os seguintes comandos:

# service yeti-web start
# service yeti-cdr-billing@cdr_billing start
# service yeti-cdr-billing@cdr_stats start
# service yeti-delayed-job start
# service yeti-scheduler start

Isso executará a interface da WEB, as agendas de processos, processos de tarefas agendadas em segundo plano e os serviços de processamento do CDR.

Verificações 

Verifique se o puma escuta no soquete local:

# netstat -lpn | grep puma
unix 2 [ACC] STREAM OUVINDO 41901 16860/puma 6.2.1 (u /run/yeti/yeti-unicorn.sock)

verifique se o nginx escuta em endereços e portas TCP/IP corretos: 

# netstat -lpn | grep nginx
tcp 0 0 127.0.0.1:6666 0.0.0.0:* OUÇA 16823/nginx: master
tcp 0 0   0.0.0.0:80   0.0.0.0:* OUÇA 16823/nginx: master

Arquivos de log para verificar possíveis avisos/erros: 

  • /var/log/yeti/yeti-web.log
  • /var/log/yeti/yeti-cdr-billing.log
  • /opt/yeti-web/log/puma.stdout.log
  • /opt/yeti-web/log/puma.stderr.log

Tente abrir a interface de gerenciamento em seu navegador favorito e faça o login com as credenciais padrão:

User: admin

Pass: 111111

E por hoje é só, pessoal!  

Fonte:  https://yeti-switch.org/

Toda vez que um homem supera os reveses, torna-se mentalmente e espiritualmente mais forte!

Tecnologia do Blogger.