Como instalo e uso o Galera e o MariaDB 10.1 no RHEL ou no CentOS com o SELinux Habilitado?

0

Como eu instalo e uso o Galera e o MariaDB > = versão 10.1 com o TLS no RHEL 7 ou no CentOS 7 e manter o SELinux ativado no modo de imposição sem usar o SCL (coleções de software)?

    
por Liczyrzepa 14.12.2016 / 22:33

1 resposta

0

Suposições

  • Você não usa o RHEL 7 SCL (coleções de software) ou rh-mariadb101 {, - galera}
  • Você tem servidores RHEL 7 / CentOS 7 com EPEL instalado
  • O SELinux é necessário, executando e impondo
  • O Firewalld está em execução e bloqueia por padrão
  • Seus 3 IPs de host são 1.2.3.4, 1.2.3.5 e 1.2.3.6

Configuração do Firewall

As portas necessárias para o Galera & MariaDB para funcionar corretamente são as portas TCP 4444, 4567 e 4568 e a porta UDP 4567. MariaDB requer a porta TCP 3306. Nesta configuração, assumimos que os hosts 1.2.3.4, 1.2.3.5 e 1.2.3.6 têm permissão para fazer parte do cluster , bem como um futuro host IP 1.2.3.7. Esta configuração também assume que qualquer host pode se conectar na porta 3306. Login e su - para root. Execute os seguintes comandos.

# firewall-cmd --zone=public --add-port=3306/tcp
# firewall-cmd --zone=public --add-port=3306/tcp --permanent
# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="1.2.3.4/30" port port=4444 protocol=tcp accept'
# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="1.2.3.4/30" port port=4444 protocol=tcp accept' --permanent
# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="1.2.3.4/30" port port=4567 protocol=tcp accept'
# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="1.2.3.4/30" port port=4567 protocol=tcp accept' --permanent
# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="1.2.3.4/30" port port=4568 protocol=tcp accept'
# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="1.2.3.4/30" port port=4568 protocol=tcp accept' --permanent
# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="1.2.3.4/30" port port=4567 protocol=udp accept'
# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="1.2.3.4/30" port port=4567 protocol=udp accept' --permanent

Preparação de Políticas do SELinux

Login e su - para raiz. Execute ou execute as etapas a seguir. A última linha é necessária apenas para um local de dados não padrão. Observe que, se você definir um local de dados em /home ou /usr systemd, proibirá a gravação do MariaDB e o MariaDB falhará. Para contornar isso, defina ProtectSystem=false no arquivo de unidade /lib/systemd/system/mariadb.service . Em seguida, execute systemctl daemon-reload .

# mkdir selinux && cd selinux
# cat > galera.te << XYZZY
module galera 1.0;

require {
        type unconfined_t;
        type initrc_tmp_t;
        type rsync_exec_t;
        type init_t;
        type mysqld_t;
        class process setpgid;
        class file { execute execute_no_trans getattr open read };
        class service enable;
}

#============= mysqld_t ==============
allow mysqld_t initrc_tmp_t:file open;
allow mysqld_t rsync_exec_t:file { execute execute_no_trans getattr open read };
allow mysqld_t self:process setpgid;

#============= unconfined_t ==============
allow unconfined_t init_t:service enable;
XYZZY

# checkmodule -M -m galera.te -o galera.mod
# semodule_package -m galera.mod -o galera.pp
# semodule -i galera.pp
# semanage port -m -t mysqld_port_t -p tcp 4567
# semanage port -m -t mysqld_port_t -p udp 4567
# semanage port -m -t mysqld_port_t -p tcp 4444
# semanage port -m -t mysqld_port_t -p tcp 4568
# semanage fcontext -a -t mysqld_db_t "/alternate/path/to/data/mysql(/.*)?"

Implantação do repositório MariaDB, instalação do pacote, configuração

Faça o download do link . Certifique-se de que o servidor da Web que fornece essa chave seja confiável; a segurança do seu novo repositório depende disso.

# cp RPM-GPG-KEY-MariaDB /etc/pki/rpm-gpg/ ; chmod ugo+r /etc/pki/rpm-gpg/RPM-GPG-KEY-MariaDB
# cat > /etc/yum.repos.d/mariadb.repo << XYZZY
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/rhel7-amd64
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-MariaDB
gpgcheck = 1
enabled = 1
XYZZY
# chmod ugo+r /etc/yum.repos.d/mariadb.repo
# yum install MariaDB-server galera

Depois de instalar os pacotes, você deve configurar o MariaDB por procedimento normal antes de criar o cluster. A primeira linha abaixo é necessária apenas se você quiser usar um local de dados diferente do padrão.

# mysql_install_db --user=mysql --group=mysql --ldata=/alternate/path/to/data/mysql
# systemctl start mariadb
# mysql_secure_installation
# systemctl stop mariadb
# galera_new_cluster

Verifique se o MariaDB + Galera está sendo executado. Em caso afirmativo, você pode configurar os próximos dois hosts. Instale as regras do SELinux e os pacotes de software como antes, mas adicione imediatamente as seguintes linhas à seção [galera] em /etc/my.cnf.d/server.cnf. Assume que o IP do servidor galera original é 1.2.3.4 e seus pares serão 1.2.3.5 e 1.2.3.6. Defina o tamanho do cache para algo apropriado para seus sistemas.

[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_provider_options="gcache.size=1024M; gcache.page_size=1024M"
wsrep_cluster_address=gcomm://1.2.3.4,1.2.3.5,1.2.3.6
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2

# systemctl start mariadb

Neste ponto, os logs devem indicar que os dados foram replicados do primeiro servidor para o servidor atual. Repita essas etapas no (s) servidor (es) restante (s).

Agora pare o MariaDB no servidor original e adicione a configuração galera a /etc/my.cnf.d/server.cnf . Reinicie o MariaDB no servidor original. Verifique se os dados estão sendo sincronizados entre os pontos.

Ativar TLS

Esta seção opcional pressupõe que você já tenha gerado um certificado X.509v3 e uma chave privada correspondente. Tanto o certificado quanto a chave devem ser armazenados em formato PEM não criptografado. Para este exemplo, os nomes dos arquivos são assumidos como server.crt e server.key , respectivamente.

# cp server.crt /etc/pki/tls/certs/ ; chmod ugo+r /etc/pki/tls/certs/server.crt ; cp server.key /etc/pki/tls/private/server.key ; chmod 640 /etc/pki/tls/private/server.key ; chgrp mysql /etc/pki/tls/private/server.key

Adicione as seguintes linhas em /etc/my.cnf.d/server.cnf na seção [mysqld] :     ssl_cert = / etc / pki / tls / certs / server.crt     ssl_key = / etc / pki / tls / private / server.key

Crie /etc/systemd/system/mariadb.service.d/TLS.conf com o seguinte conteúdo:

[service]
Environment=”MYSQLD_OPTS=--ssl”

O Systemd é como o systemd, portanto, execute systemctl daemon-reload novamente para ler a nova configuração.

A reinicialização do servidor é necessária para que o MariaDB aceite conexões TLS. Observe que o TLS está disponível, mas não é necessário neste estágio de configuração.

Verifique os registros para verificar se o MariaDB carregado com o TLS está ativado: journalctl _SYSTEMD_UNIT=mariadb.service . A falha em iniciar o TLS é registrada apenas como um [Warning]: ^ (

Este é meu primeiro passo nisso. Eu ficarei feliz em incorporar melhorias: ^)

    
por 14.12.2016 / 22:33