- 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
- 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
- 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.
- 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