Implantação Automatizada de Cluster OceanBase Multi-Nó com OBD

  1. Visão Geral do Ambiente

Este guia cobre a implantação automatizada de um cluster OceanBase composot por três réplicas do Observer, uma instância do OBProxy e o utilitário OBD instalado no nó de controle.

  • Sistema operacional: CentOS 7.6 ou superior
  • Memória disponível: no mínimo 8 GB por nó
  • CPU: 4 núcleos por nó
Endereço IP Função
10.10.10.11 observer, obproxy, obclient, obd
10.10.10.12 observer
10.10.10.13 observer

Legenda:

  • observer: instância do benco OceanBase
  • obproxy: proxy de acesso transparante ao cluster
  • obclient: cliente de linha de comando
  • obd: ferramenta OceanBase Deployer
  1. Preparação do Ambiente

2.1. Criação do Usuário Operacional

Crie uma conta dedicada para executar os processos do OceanBase em todos os nós.

[root]# useradd oceanbase
[root]# echo '0bD_Clust3r#2024' | passwd oceanbase --stdin

2.2. Configuração do Acesso SSH sem Senha

Adicione os nomes dos nós ao arquivo hosts e configure sudo sem senha para o usuário operacional.

[root]# cat >> /etc/hosts <<EOF
10.10.10.11 node01
10.10.10.12 node02
10.10.10.13 node03
EOF
[root]# echo "oceanbase  ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

Gere a chave SSH e copie-a para cada nó.

[oceanbase]# ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
[oceanbase]# ssh-copy-id node01
[oceanbase]# ssh-copy-id node02
[oceanbase]# ssh-copy-id node03

2.3. Ajuste dos Parâmetros do Kernel

Edite o arquivo /etc/sysctl.conf para otimizar a rede e o gerenciamento de memória.

net.core.somaxconn = 2048
net.core.netdev_max_backlog = 10000
net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

net.ipv4.ip_local_port_range = 3500 65535
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_slow_start_after_idle = 0

vm.swappiness = 0
vm.min_free_kbytes = 2097152
vm.max_map_count = 655360
fs.aio-max-nr = 1048576

Aplique as configurações:

[root]# sysctl -p

2.4. Configuração de Limites de Recursos

Para a sessão atual, habilite core dumps ilimitados:

[root]# ulimit -c unlimited

Para tornar permanente, edite /etc/security/limits.conf:

* soft  nofile  655360
* hard  nofile  655360
* soft  nproc   655360
* hard  nproc   655360
* soft  core    unlimited
* hard  core    unlimited
* soft  stack   unlimited
* hard  stack   unlimited

Verifique os limites ativos:

[root]# ulimit -a

2.5. Desativação do Firewall

[root]# systemctl stop firewalld
[root]# systemctl disable firewalld

2.6. Desativação do SELinux

[root]# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
[root]# setenforce 0

2.7. Sincronização de Horário

Instale e configure o chrony para manter os relógios sincronizados.

[root]# yum install -y chrony

Edite /etc/chrony.conf:

server ntp.aliyun.com minpoll 4 maxpoll 10 iburst
allow 10.10.10.0/24
local stratum 10

Reinicie o serviço e verifique o status:

[root]# systemctl restart chronyd
[root]# chronyc activity
[root]# chronyc sources
[root]# chronyc sources -v
[root]# chronyc tracking
  1. Implantação do Cluster

3.1. Instalação do OBD

No nó de controle (10.10.10.11), instale o pacote ob-deploy.

[oceanbase]# sudo rpm -ivh ob-deploy-2.0.0-10.el7.x86_64.rpm
[oceanbase]# source /etc/profile.d/obd.sh

3.2. Criação do Arquivo de Configuração

Baseie-se no modelo oficial para cluster distribuído com OBProxy e crie o arquivo ob-cluster-distributed.yaml.

oceanbase-ce:
  servers:
    - name: node01
      ip: 10.10.10.11
    - name: node02
      ip: 10.10.10.12
    - name: node03
      ip: 10.10.10.13
  global:
    devname: ens33
    cluster_id: 1
    memory_limit: 6G
    system_memory: 1G
    datafile_size: 20G
    log_disk_size: 15G
    cpu_count: 4
    production_mode: false
    enable_syslog_wf: false
    enable_syslog_recycle: true
    max_syslog_file_count: 4
    appname: production_cluster
    root_password: Root@Ocean2024
    proxyro_password: Proxy@Ocean2024
  node01:
    mysql_port: 2881
    rpc_port: 2882
    home_path: /home/oceanbase/observer
    zone: zone1
  node02:
    mysql_port: 2881
    rpc_port: 2882
    home_path: /home/oceanbase/observer
    zone: zone2
  node03:
    mysql_port: 2881
    rpc_port: 2882
    home_path: /home/oceanbase/observer
    zone: zone3

obproxy-ce:
  depends:
    - oceanbase-ce
  servers:
    - 10.10.10.11
  global:
    listen_port: 2883
    prometheus_listen_port: 2884
    home_path: /home/oceanbase/obproxy
    enable_cluster_checkout: false
    skip_proxy_sys_private_check: true
    enable_strict_kernel_release: false

3.3. Deploy do Cluster

Execute o deploy a partir do nó de controle. O OBD criará diretórios, transferirá os pacotes e instalará os componentes remotamente.

[oceanbase]# obd cluster deploy ob-cluster-distributed -c ob-cluster-distributed.yaml

Após a conclusão, verifique o status:

[oceanbase]# obd cluster list

O status aparecerá como deployed, indicando que os pacotes foram instalados, mas o cluster ainda não foi iniciado.

  1. Inicialização e Verificação

4.1. Inicialização do Cluster

Inicie os serviços do Observer e do OBProxy.

[oceanbase]# obd cluster start ob-cluster-distributed

Após a inicialização bem-sucedida, o OBD exibirá os nós do Observer e a instância do OBProxy.

4.2. Conferência do Status

Liste os clusters gerenciados pelo OBD:

[oceanbase]# obd cluster list

Exiba os detalhes do cluster implantado:

[oceanbase]# obd cluster display ob-cluster-distributed

4.3. Instalação e Teste do Cliente

Instale o pacote obclient no nó de controle.

[oceanbase]# sudo rpm -ivh obclient-2.2.2-1.el7.x86_64.rpm

Conecte-se diretamente a um dos nós Observer (senha inicial vazia):

[oceanbase]# obclient -h10.10.10.11 -P2881 -uroot -Doceanbase -A -p

Dentro do console OceanBase, verifique o status de cada zona:

obclient [oceanbase]> SELECT zone, svr_ip, inner_port, svr_port, status FROM __all_server;

A coluna status deverá apresentar ACTIVE para todos os nós.

4.4. Conexão via OBProxy

Utilize a porta do proxy para acessar o cluster de forma transparente:

[oceanbase]# obclient -h10.10.10.11 -P2883 -uroot -Doceanbase -A -p

Tags: OceanBase OBD OBProxy OBClient CentOS

Publicado em 7-7 18:46