Cluster MariaDB Galera no Debian ou Ubuntu

Introdução
Neste tutorial vamos aprender a criar um cluster de banco de dados MariaDB 10.1 usando o Galera Cluster nativo do MariaDB no Linux Debian 9 ou qualquer outra versão Debian/Ubuntu desde que seja instalado o MariaDB 10.1. Rodar o banco de dados em cluster é importante pois trás integridade nos dados e redundância, aumentando a disponibilidade do serviço.

Para isso, será necessário o mínimo de 3 servidores linux.

Se estiver logado como root, você pode remover o sudo dos comandos abaixo.

Primeiro vamos atualizar o repositório (Execute nos 3 servidores)

$ sudo apt update

Obs: É necessário que cada servidor esteja com hostname diferente um do outro.
Se precisa alterar o hostname e não sabe como fazer isso, pode seguir este tutorial: https://blog.absam.io/como-alterar-o-hostname-no-debian/

Agora vamos instalar os pacotes necessários (Execute nos 3 servidores)
Neste passo, vamos instalar o MariaDB nos 3 servidores junto com o client e o rsync que faz a sincronização dos dados entre os nodes.

$ sudo apt install mariadb-server mariadb-client rsync -y

Desligando o MariaDB (Execute nos 3 servidores)
Concluídos os passos anteriores, vamos desligar o MariaDB nos 3 nodes.

$ sudo service mysql stop

Configurando o Galera
Agora sim vamos partir para a configuração do galera e integração/replicação dos dados entre os 3 nodes MariaDB.

Vamos criar um arquivo nesse diretório: /etc/mysql/conf.d/galera.cnf

Com o seguinte conteúdo (Execute nos 3 servidores):

[mysqld]
#mysql settings
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0

#galera settings
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="my_wsrep_cluster"
wsrep_cluster_address="gcomm://IP_01,IP_02,IP_03"
wsrep_node_address="IP_01"
wsrep_node_name="HOSTNAME_01"
wsrep_sst_method=rsync

Troque os ips pelo IP de cada servidor e o nome pelo nome do servidor em questão.
Vai ficar mais ou menos assim:

# Servidor 01
wsrep_cluster_address="gcomm://10.0.0.15,10.0.0.30,10.0.0.45"
wsrep_node_address="10.0.0.15"
wsrep_node_name="mariadb01.cloud.server"
# Servidor 02
wsrep_cluster_address="gcomm://10.0.0.15,10.0.0.30,10.0.0.45"
wsrep_node_address="10.0.0.30"
wsrep_node_name="mariadb02.cloud.server"
# Servidor 03
wsrep_cluster_address="gcomm://10.0.0.15,10.0.0.30,10.0.0.45"
wsrep_node_address="10.0.0.45"
wsrep_node_name="mariadb03.cloud.server"

Liberando acesso externo no MariaDB (Execute nos 3 servidores)
Se o cluster precisa estar acessível por outros computadores e servidores, então você vai precisar executar o passo abaixo.

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

# Procure a linha bind-address 127.0.0.1
# Troque para bind-address 0.0.0.0
# Salve e feche o arquivo

Agora vamos inicializar o servidor com cluster ativado.
Obs: As portas TCP 3306, 4567, 4568, 4444 e a porta UDP 4567 precisam estar liberadas.

# Servidor 01
$ sudo galera_new_cluster
# Servidor 02
$ sudo service mysql start
# Servidor 03
$ sudo service mysql start

Executados os passos acima, o cluster já deve estar devidamente sincronizado.
Você pode checar quantos nodes tem no cluster, executando este comando:

$ mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

O retorno deve ser algo assim:

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+

O resultado da variável wsrep_cluster_size deve ser igual ao número de nodes que você está usando, em nosso caso 3.

Se você quer criar um novo usuário com acesso externo no MariaDB, pode seguir esse tutorial: https://blog.absam.io/criando-usuario-no-mysql-ou-mariadb-via-shell/

Se você precisa instalar o phpMyAdmin pode seguir este tutorial: https://blog.absam.io/instalando-phpmyadmin-no-ubuntu-18-04-ou-debian-9/

Como alterar o hostname do Linux

Introdução
Neste tutorial vamos aprender como alterar o hostname do seu servidor Linux de forma rápida e direta.

Se estiver logado como root, você pode remover o sudo dos comandos abaixo.

Você pode checar o hostname  de cada servidor com o comando: hostname -f.

Primeiro vamos alterar o arquivo /etc/hostname

$ sudo nano /etc/hostname

# Apague todo o conteúdo do arquivo e insira apenas seu novo hostname.
# Ex: server01.cloud.server

Para finalizar vamos alterar o arquivo /etc/hosts

$ sudo nano /etc/hosts

# Você vai ver um arquivo mais ou menos assim:

127.0.0.1   localhost
127.0.0.1   host.example.com
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Altere essa linha: 127.0.0.1   host.example.com
Em nosso caso vai ficar assim: 127.0.0.1   server01.cloud.server

Salve e reinicie o servidor.

Instalando o CPanel no Centos 7

Introdução
O CPanel é o gerenciador de hospedagem mais usado do mundo, ele facilita e muito o dia a dia de quem precisa hospedar multiplos sites no mesmo servidor e fazer o gerenciamento de arquivos, usuários, tarefas cron, emails, bancos de dados, etc.

Você precisa estar logado como root para conseguir instalar o CPanel

Primeiro vamos atualizar o Centos 7

$ yum update -y

Agora, precisamos desativar o NetworkManager

$ systemctl stop NetworkManager
$ systemctl disable NetworkManager

As vezes é necessário alterar o nome da placa de rede na inicialização do sistema.
Você deve trocar eth0 por ens18, eth1 por ens19, eth2 por ens20 e assim por diante.
Os arquivos de configuração ficam no diretório: /etc/sysconfig/network-scripts/

Agora vamos atualizar o hostname do servidor

$ hostname server.host.name
ex: servidor01.minhaempresa.com.br

Faça o download do arquivo de instalação do CPanel

$ yum install wget
$ wget http://httpupdate.cpanel.net/latest

Enfim, vamos a instalação do CPanel que pode levar até 45 minutos

$ sh latest

Após concluída a instalação, você pode acessar o WHM assim: https://IP_DO_SERVIDOR:2087/
Ex: https://1.2.3.4:2087/

Instalando MariaDB no Debian 9

Introdução
MariaDB é um servidor de banco de dados que cresceu muito rapidamente como uma alternativa ao MySQL. Neste tutorial, vamos mostrar como é simples a instalação do MariaDB no Linux Debian 9

Se estiver logado como root, você pode remover o sudo dos comandos abaixo.

Primeiro vamos atualizar o repositório

$ sudo apt update

Agora vamos instalar o servidor e o cliente MariaDB

$ sudo apt install mariadb-server mariadb-client

Pronto! Agora você pode logar no seu servidor MariaDB com o usuário root e sem uso de senha.

$ mysql -u root

Se você quer criar um novo usuário no MariaDB, pode seguir esse tutorial: https://blog.absam.io/criando-usuario-no-mysql-ou-mariadb-via-shell/

Se você precisa instalar o phpMyAdmin pode seguir este tutorial: https://blog.absam.io/instalando-phpmyadmin-no-ubuntu-18-04-ou-debian-9/

Instalando phpMyAdmin no Ubuntu 18.04 ou Debian 9

Introdução
O phpMyAdmin já vem nativamente disponível nos repositórios do Ubuntu e do Debian, por isso é extremamente simples fazer a instalação.

Se estiver logado como root, você pode remover o sudo dos comandos abaixo.

Primeiro vamos atualizar o repositório

$ sudo apt update

Agora vamos instalar phpMyAdmin

$ sudo apt install phpmyadmin

Pronto, agora é só acessar o phpMyAdmin via web: http://IP_DO_SERVIDOR/phpmyadmin
Ex: http://1.2.3.4/phpmyadmin

Se você não sabe como criar um usuário do MySQL com acesso externo, pode seguir esse tutorial: https://blog.absam.io/criando-usuario-no-mysql-ou-mariadb-via-shell/

Instalando MySQL no Ubuntu 18.04

Introdução
MySQL é o servidor de banco de dados mais usado no mundo, e neste tutorial vamos aprender a instalar o MySQL no Ubuntu 18.04

Se estiver logado como root, você pode remover o sudo dos comandos abaixo.

Primeiro vamos atualizar o repositório

$ sudo apt update

Agora vamos instalar o servidor e o cliente MySQL

$ sudo apt install mysql-server mysql-client

Pronto! Agora você pode logar no seu servidor MySQL com a senha que cadastrou durante a instalação.

Se você quer criar um novo usuário no MySQL, pode seguir esse tutorial: https://blog.absam.io/criando-usuario-no-mysql-ou-mariadb-via-shell/

Se você precisa liberar o acesso externo ao MySQL, pode seguir esse tutorial: https://blog.absam.io/liberando-acesso-externo-ao-mysql/

Liberando acesso externo ao MySQL

Introdução
Se você está precisando liberar acesso externo no seu servidor MySQL e não sabe, este tutorial vai te ensinar a fazer isso em poucos minutos.

Se estiver logado como root, você pode remover o sudo dos comandos abaixo.

Primeiro edite o arquivo de configuração do MySQL, geralmente ele se chama my.cnf

$ sudo nano /etc/mysql/my.cnf

Agora procure a linha de Bind IP

bind-address 127.0.0.1

Troque 127.0.0.1 por 0.0.0.0

bind-address 0.0.0.0

Salve o arquivo e reinicie o servidor MySQL

$ sudo service mysql restart

Pronto, seu servidor MySQL já deve estar respondendo externamente agora.
Obs: Se houver firewall, a porta 3306 precisa estar liberada para que seja possível a conexão externa.

Se você não sabe como criar um usuário do MySQL com acesso externo, pode seguir esse tutorial: https://blog.absam.io/criando-usuario-no-mysql-ou-mariadb-via-shell/

Criando usuário no MySQL ou MariaDB via SSH

Introdução
Se você está precisando criar um usuário no seu servidor MySQL ou Mariadb com acesso externo e não sabe, este é o tutorial certo para você.

Logado via SSH no seu servidor, primeiro faça login no seu servidor MySQL ou MariaDB

$ mysql -u root -p

Agora você pode criar o usuário com o seguinte comando
Troque a palavra USUARIO pelo usuário desejado e a palavra SENHA pela senha desejada.

$ CREATE USER 'USUARIO'@'%' IDENTIFIED BY 'SENHA';

Considerando que você quer dar privilégio total a este novo usuário, execute este comando

$ GRANT ALL PRIVILEGES ON * . * TO 'USUARIO'@'%';

Agora par finalizar, aplique o privilégio

$ FLUSH PRIVILEGES;

DevOps – Visão Geral

O que é? O que faz? Como funciona? Do que se alimenta?

Dívida técnica

Em empresas tradicionais de tecnologia, as equipes de desenvolvimento e operações de TI costumam trabalhar de forma isolada.

Os programadores desenvolvem a aplicação e tem por objetivo produzir o máximo de funções e entregar o máximo de valor possível aos clientes, a equipe de operações é responsável por manter essas aplicações e disponibilizá-las para os clientes, deploys constantes podem ser uma ameaça à estabilidade do serviço, que costuma ser a principal métrica de avaliação da equipe de operações.

Essas equipes, por não se comunicarem e por terem, em sua essência, objetivos e métricas diferentes de avaliação, acabam funcionando de forma concorrente. Gerando um panorama em que existem aplicações e infraestruturas complexas, mal documentadas e frágeis.

Na tentativa de corrigir problemas com esse sistema complexo, são realizadas as famosas “gambiarras” e ficam para trás coisas por fazer e por consertar, sempre existe aquele bloco de código que tem que ser reescrito mas que acaba ficando esquecido. Esse é o início da dívida técnica.

Com o aparecimento de novas features e produtos, essa dívida só tende a aumentar. Os problemas inerentes ao sistema já em funcionamento ainda persistem e atrapalham o desenvolvimento dos novos sistemas.

Com o passar do tempo, a carga de trabalho está cada vez maior e a dívida, crescendo a juros compostos. Chega um momento em que a menor mudança, acarreta em grandes problemas, levando a situações insustentáveis de ritmo de trabalho.

Como o DevOps resolve essa dor

Com o advento do DevOps, equipes de desenvolvimento e operações começam a trabalhar de forma conjunta. A programação começa a entrar no mundo de operações na forma de automatização de deploy, testes automatizados e etc.

Equipes pequenas implementam seus recursos independentemente, testam suas soluções em ambientes de produção de forma automática e vêm sua solução chegar até os clientes de forma rápida e segura, sempre com a possibilidade de voltar à última versão estável em casos de erro.

De forma ideal, essas equipes permanecem com a mesma formação e continuam incrementando o mesmo serviço, recebendo constante feedback dos clientes, para corrigir erros sem deixar dívida técnica.

Com este ciclo do DevOps, as aplicações são desenvolvidas, entregues ao cliente, erros são corrigidos e a aplicação é incrementada de acordo com as necessidades do cliente. A entrega contínua de recursos se torna rotina, sem o estresse e o caos de um grande deploy, que costuma ser realizado durante a madrugada, como o caso desse texto.

Um pouco mais da cultura DevOps

O DevOps evolui ainda mais quando se trata de mudança cultural das equipes. Mais do que técnicas de entrega de produto ao cliente, o DevOps trata de constante evolução da equipe do ponto de vista profissional.

O tempo da equipe é valorizado, decisões são tomadas com base em medições. Não se gasta tempo implementando código que não funciona ou que não resolve um problema.

Com uma cultura colaborativa, onde é possível cometer erros e, ao invés de ser punido, aprender com eles, o desenvolvimento pessoal e da equipe está sempre em foco, e esse desenvolvimento é revertido em melhores soluções para os clientes.

Referências

Manual de DevOps – como obter agilidade, confiabilidade e segurança em organizações tecnológicas. Gene Kim, Jez Humble, Patrick Debois e Jhon Willis

DevOps: rompendo a barreira entre desenvolvimento e operações – Atlassian

Revenda de Hospedagem x VPS Cloud CPanel

Neste artigo faremos uma análise dos pontos fortes e dos pontos fracos da Revenda de Hospedagem Cpanel com relação a um servidor VPS Cloud CPanel.

O que é WHM CPanel?

É uma plataforma onde o usuário pode criar hospedagens de site através do WHM e gerenciar todos os recursos da hospedagem como bancos de dados, emails, usuarios FTP, subdomínios, arquivos, etc usando o CPanel.

Muito usado por agências digitais, freelancers e por empresas de hospedagem de site, é uma excelente solução para hospedar múltiplos sites e revender para seus clientes colocando uma margem de lucro.

O que é um Vps Cloud CPanel?

É um servidor exclusivo, onde quem o contrata pode hospedar ilimitados sites, emails, etc. É possível hospedar sites com pequenas, médias e grandes demandas e pode também revender hospedagem para seus clientes assim como na revenda de hospedagem cpanel tradicional.

Pontos fortes do VPS Cloud CPanel:

  • É possível hospedar pequenos, médios e grandes sites.
  • Você tem um servidor dedicado e exclusivo para seus sites e sistemas web.
  • Você tem total controle sobre as operações do seu servidor, tais como backup, SSH, root, etc.
  • Servidor VPS Cloud Server até 12.4 vezes mais rápido.
  • Não existe limite na quantidade de sites a ser hospedado no seu VPS Cloud Server.
  • Alta disponibilidade dos sites e sistemas hospedados.
  • Você pode aumentar/diminuir seu VPS Cloud Server e pagar apenas pelo que está consumindo.
  • Você pode ver os planos nessa página: https://absam.io/cloud-server/planos-e-precos

Pontos fracos do VPS Cloud CPanel:

  • Preço levemente mais caro que a revenda de hospedagem tradicional
  • Preço relativamente baixo

 

O que é uma revenda de hospedagem CPanel?

É um plano, geralmente vendido por pequenas empresas de hospedagem de site, para que quem o contrata consiga hospedar múltiplos sites e revender para seus clientes.

Pontos fracos da revenda de hospedagem tradicional:

  • Não é possível hospedar sites de médio e grande porte, apenas pequenos sites com baixo acesso.
  • Servidor compartilhado com várias outras revendas de hospedagem
  • Configurações do servidor totalmente limitadas pelo provedor de hospedagem.
  • Não tem acesso root/Administrador.
  • Não tem acesso a configurações de backup.
  • Quantidade máxima de sites limitada pelo provedor de hospedagem
  • Sites travando e caindo devido a ser um servidor compartilhado com vários clientes do provedor de hospedagem

Pontos fortes da revenda de hospedagem tradicional:

  • Não há necessidade de configurar servidor
  • Preço relativamente baixo
Sair da versão mobile