GLPI - Configurando ambiente Master - Slave

GLPI - Configurando ambiente Master - Slave

Nesse post vamos demonstrar como provisionar um ambiente master / slave para o banco de dados GLPI, e sincronização de arquivos em tempo real com o lsyncd, nosso ambiente será provisionando usando o LXC para executarem os containeres ( nossos servidores virtuais do glpi.) e um script pra acelerar a instalação do GLPI.

1ª Etapa - Subindo os contêineres

Criando contêineres servidores GLPI com LXC

Nesse ambiente optamos por criar os servidores para o GLPI com o LXC, por ser extremamente leve, e simular o mais próximo possível um ambiente de máquina virtual.

lxc launch  images:ubuntu/20.04 ch-helpdesk01
lxc launch  images:ubuntu/20.04 ch-helpdesk02

2ª Etapa - Instalando o GLPI

Instalando o ambiente GLPi atraves do script glpi-install

Instalar o GLPI nos dois contêineres seguindo o procedimento abaixo;

ch-helpdesk01

lxc exec ch-helpdesk01  bash
timedatectl set-timezone America/Sao_Paulo
apt install  git
git clone https://gitlab.com/ferreirarocha/glpi-install.git

bash glpi-install/install_glpi_ubuntu_20.04.sh suporte.labferreirarocha.tk 123456

Obs: Eu atualizei a estrutura do script e mudei o seu nome para setup.sh, dessa forma sua execução ocorre da seguinte forma

bash glpi-install/setup.sh  suporte.labferreirarocha.tk 123456

ch-helpdesk02

lxc exec ch-helpdesk02  bash
timedatectl set-timezone America/Sao_Paulo
apt install  git
git clone https://gitlab.com/ferreirarocha/glpi-install.git

bash glpi-install/install_glpi_ubuntu_20.04.sh suporte.labferreirarocha.tk 123456

Obs: Eu atualizei a estrutura do script e mudei o seu nome para setup.sh, dessa forma sua execução ocorre da seguinte forma

bash glpi-install/setup.sh  suporte.labferreirarocha.tk 123456

3ª Etapa - Configurando a replicação

Configurando o /etc/hosts

ch-helpdesk01

No servidor ch-helpdesk01, abra o arquivos /etc/hosts e faça a alteração conforme abaixo;

nano /etc/hosts
10.20.30.91 ch-helpdesk01
10.20.30.92 ch-helpdesk02

ch-helpdesk02

No servidor ch-helpdesk02, abra o arquivos /etc/hosts e faça a alteração conforme abaixo;

nano /etc/hosts
10.20.30.91 ch-helpdesk01
10.20.30.92 ch-helpdesk02

Master - ch-helpdesk01

Agora é chegada a hora de configuramos o ambiente master / slave, no servidor ch-helpdesk01, execute as seguintes alterações.

nano /etc/mysql/mariadb.conf.d/50-server.cnf

Procure a linha contendo bind-address = 127.0.0.1 e altere para

bind-address            = 0.0.0.0

No final do arquivo adicione os seguintes parâmetros

server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index
 systemctl restart mariadb
mysql -u root -p
CREATE USER 'replication'@'ch-helpdesk02' identified by '123456';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'ch-helpdesk02';
FLUSH PRIVILEGES;
show master status;

Esta informação será utilizada durante a configuração do(s) slaves.

Slave - ch-helpdesk02

nano /etc/mysql/mariadb.conf.d/50-server.cnf

Procure a linha contendo bind-address = 127.0.0.1 e altere para

bind-address            = 0.0.0.0

No final do arquivo adicione os seguintes parâmetros

server-id = 2
log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index
systemctl restart mariadb
mysql -u root -p
stop slave;

Altere o MASTER_LOG_FILE e MASTER_LOG_POS, pelos valores impressos em show master status, no ch-helpdesk01

CHANGE MASTER TO MASTER_HOST='ch-helpdesk01', MASTER_USER='replication', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=802;
start slave;
SHOW SLAVE STATUS \G;

Criando usuário de consulta para o GLPI Slave

Criaremos um usuário de consulta para que o GLPi Slave não grave em sua base dados testes e gere entradas duplicadas na base de dados, causando erros como na imagem abaixo;

CREATE USER 'glpi_consulta'@'%' IDENTIFIED BY '123456';
GRANT SELECT ON glpi.* TO 'glpi_consulta'@'%';
FLUSH PRIVILEGES;
nano /etc/glpi/config_db.php
<?php
class DB extends DBmysql {
   public $dbhost     = 'localhost';
   public $dbuser     = 'glpi_consulta';
   public $dbpassword = '123456';
   public $dbdefault  = 'glpi';
}

4ª Etapa - Sincronizando arquivos do GLPI

CH-HELPDESK02

Instale o lsyncd e o openssh-server para iniciarmos a configuração do ambiente de sincronização de arquivos em real-time

apt install lsyncd   openssh-server -y
nano /etc/ssh/sshd_config
PermitRootLogin yes 
systemctl  restart sshd
passwd root

CH-HELPDESK01

apt install lsyncd   openssh-server -y
nano /etc/ssh/sshd_config
PermitRootLogin yes 
systemctl  restart sshd

Configurando a autenticação via chaves ssh

Gerando a chave

ssh-keygen

Enviando a chave

ssh-copy-id  root@ch-helpdesk02

Configurando o arquivo lsyncd

mkdir /var/log/lsyncd/
mkdir /etc/lsyncd
nano /etc/lsyncd/lsyncd.conf.lua
settings {
    logfile = "/var/log/lsyncd/lsyncd.log",
    statusFile = "/var/log/lsyncd/lsyncd-status.log",
    statusInterval = 10,
    insist = true,
    nodaemon   = true
}

sync {
        default.rsyncssh,
        source = "/var/lib/glpi/",
        host = "ch-helpdesk02",
        targetdir = "/var/lib/glpi/",
        delay = 10
}
systemctl restart lsyncd &
systemctl status lsyncd

Nosso ambiente está pronto para uso, agora abra o servidores primários e secundário e faça os testes, nosso servidor secundário não conseguirá gravar no banco através do GLPI, pois o usuário é apenas consulta, toda alteração deverá ser realizada no ambiente master.

Fontes:

Lsyncd https://axkibe.github.io/lsyncd/

Master/Slave https://mariadb.com/de/resources/blog/database-master-slave-replication-in-the-cloud/

Instalação GLPi https://glpi-install.readthedocs.io/en/latest/install/index.html

LXC/LXD https://linuxcontainers.org/lxd/

Script de instalação https://gitlab.com/ferreirarocha/glpi-install/-/blob/master/install_glpi_ubuntu_20.04.sh

Processo em vídeo

Posted on