Olá! Escrevi na primeira parte desta série de artigos sobre o SSDB para Ephemeral Data do Zimbra o detalhamento do serviço e a motivação para implementação do mesmo, assim como os benefícios.
Link para a PRIMEIRA parte aqui:
Vamos agora ver como instalar o SSDB (compilando e utilizando docker) e migrar os dados efêmeros (transitórios) do Zimbra!
Quais são os dados efêmeros que o Zimbra está tratando com o SSDB?
Até o presente momento, os 3 (três) atributos do Zimbra (atualizados em cada conta) podem ser migrados para o SSDB:
zimbraAuthTokens: Token de autenticação que gerencia as sessões dos usuários
zimbraCsrfTokenData: Token CSRF que correspondem aos tokens de autenticação
zimbraLastLogonTimestamp: Registro do último login de cada conta
Instalando através do source no Centos 7
É possível instalar o SSDB direto do source do projeto, que é hospedado no seguinte repositório:
https://github.com/ideawu/ssdb
Eu criei o Service File para facilitar o gerenciamento do serviço, sendo executado com um usuário sem privilégios de root.
Compilando e instalando no Centos 7
De acordo com a documentação da Zimbra, a versão testada para o SSDB foi a 1.9.5, porém testei com a última versão no momento (1.9.8) e não há nenhum impedimento para utilizar a última versão estável do SSDB.
O SSDB pode ser instalado no mesmo servidor do Zimbra, em um servidor dedicado ou rodar em docker como veremos. Ele trará benefícios de performance mesmo instalado no mesmo servidor do Zimbra pois irá desonerar o serviço LDAP e otimizar as operações de manipulação dos dados transitórios.
CASO você queira utilizar a versão testada pela Zimbra , o link para download da mesma é:
wget https://github.com/ideawu/ssdb/archive/stable-1.9.5.zip
Vamos compilar e instalar o SSDB (espero criar um pacote completo para o SSDB para o Zimbra muito em breve):
yum groupinstall 'Development Tools' wget https://github.com/ideawu/ssdb/archive/master.zip unzip master.zip cd ssdb-master make && make install
O SSDB será instalado em /usr/local/ssdb.
Iniciando o SSDB
useradd -s /sbin/nologin -d /usr/local/ssdb ssdb chown ssdb.ssdb /usr/local/ssdb -R cd /usr/local/ssdb sed -e 's@ip:.*@ip: 0.0.0.0@' -e 's@level:.*@level: info@' -i ssdb.conf cd /etc/systemd/system wget https://github.com/BktechBrazil/zimbra-ssdb/raw/master/ssdb.service systemctl enable ssdb systemctl start ssdb system status ssdb
Migrando o “Ephemeral Data” do Zimbra
A migração pode ser feita sem interromper nenhum serviço do Zimbra; o serviço fará uma transição dos dados até que a migração esteja concluída:
É possível simular a migração com parâmetro “-r”, como pode ser visto no exemplo abaixo, onde o servidor é mail.respirandolinux.com.br e o SSDB está sendo executado na porta padrão do serviço (8888):
/opt/zimbra/bin/zmmigrateattrs -r ssdb:mail.respirandolinux.com.br:8888
Para efetuar a migração de fato, execute o procedimento abaixo, informando o seu servidor correto – caso haja algum erro a migração não irá ocorrer:
/opt/zimbra/bin/zmmigrateattrs ssdb:mail.respirandolinux.com.br:8888 zmprov mcf zimbraEphemeralBackendUrl ssdb:mail.respirandolinux.com.br:8888
Feito isso, os dados efêmeros do Zimbra estarão sendo controlados pelo serviço SSDB, mais eficiente que o LDAP para tratar isso tipo de informação.
Documentação completa da Zimbra sobre o SSDB:
https://zimbra.github.io/adminguide/latest/#ephemeral_data
SSDB no Docker
Rodar o SSDB em docker é bastante simples, uma imagem que tenho utilizado é essa:
https://hub.docker.com/r/leobuskin/ssdb-docker
O Dockerfile desta imagem é esse (todos os créditos para o autor original):
FROM alpine LABEL maintainer="Leonard Buskin <leonardbuskin@gmail.com>" ARG VERSION=${VERSION:-master} RUN apk add --no-cache --virtual .build-deps \ curl gcc g++ make autoconf libc-dev libevent-dev linux-headers perl tar \ && mkdir -p /ssdb/tmp \ && curl -Lk "https://github.com/ideawu/ssdb/archive/${VERSION}.tar.gz" | \ tar -xz -C /ssdb/tmp --strip-components=1 \ && cd /ssdb/tmp \ && make -j$(getconf _NPROCESSORS_ONLN) \ && make install PREFIX=/ssdb \ && sed -e "s@home.*@home $(dirname /ssdb/var)@" \ -e "s/loglevel.*/loglevel info/" \ -e "s@work_dir = .*@work_dir = /ssdb/var@" \ -e "s@pidfile = .*@pidfile = /run/ssdb.pid@" \ -e "s@output:.*@output: stdout@" \ -e "s@level:.*@level: info@" \ -e "s@ip:.*@ip: 0.0.0.0@" \ -i /ssdb/ssdb.conf \ && rm -rf /ssdb/tmp \ && apk add --virtual .rundeps libstdc++ \ && apk del .build-deps EXPOSE 8888 VOLUME /ssdb/var CMD ["/ssdb/ssdb-server", "/ssdb/ssdb.conf"]