Skip to content

使用Docker进行分布式OB部署

Ahoy, the Fate Weaver edited this page Aug 2, 2023 · 3 revisions

在Docker中创建多个容器,并进行分布式Oceanbase的部署。

使用oceanbase-all-in-one安装Oceanbase并打包作为docker镜像。

1.创建3个docker容器,其中ob1包含obproxy,因此做端口映射

docker run -itd -p 3003:2883 --name ob1 -m 64G --privileged=true -d centos4ob:1.4

docker run -itd --name ob2 -m 64G --privileged=true -d centos4ob:1.4

docker run -itd --name ob3 -m 64G --privileged=true -d centos4ob:1.4

或者额外部署obproxy

docker run -itd -p 3003:2883 --name obproxy -m 16G --privileged=true -d centos4ob:1.4

查看各容器

docker ps -a

进入各容器后观察其分配的ip地址

ifconfig或ip addr

2.进入ob1进行配置文档的编写(如果额外部署了obproxy,则进入该容器进行部署)

docker exec -it ob1 bash

cd /usr/obd

mkdir deploy

cd deploy

vim distribute-with-obproxy.yaml

内容见附件distribute-with-obproxy.yaml

3.进行部署

obd cluster deploy obcluster -c distribute-with-obproxy.yaml

部署完成后进行查看

obd cluster list

开启集群

obd cluster start obcluster

会产生部署报告,如果发生错误则根据错误信息进行修改

4.进入OB

在容器内使用obclient进行登录

obclient -h 127.0.0.1 -P 2883 -uroot

或在容器外使用mysql进行登录

mysql -h 10.11.1.193 -P 3001 -uroot

出现问题1:Open ssh connection x ,需要检查ssh相关连接

解决方法:

使用特权模式测试ssh连接

docker run -itd -p 3003:2883 --name obtest --privileged=true -m 64G -d centos4ob:1.4

查看ssh服务状态

systemctl status sshd

查看ssh服务配置

vim /etc/ssh/sshd_config

修改使直接通过ssh连接root

PermitRootLogin yes

观察得到ssh端口 Port 23,故对OB配置文档进行修改

obd cluster redeploy ob1

在开头加上

user:

port: 23

开启(重启)ssh服务

systemctl start sshd

(systemctl restart sshd)

并查看状态

systemctl status sshd

之后重新进行OB部署

出现问题2:observer program health check x ,OB配置的系统参数出现问题

解决方法:

将大部分系统配置文档中的内容进行注释

仅保留memory, data_size等容量限制

之后重新进行部署

出现问题3:长时间运行,磁盘占用过大,初步猜测为docker日志和OB日志占用大量空间

df -h

docker system df

部署完OB后执行

ALTER SYSTEM SET max_syslog_file_count=10;

ALTER SYSTEM SET enable_syslog_recycle = true;

限制最大日志数

附obcluster配置文件: distribute-with-obproxy.yaml

user:
  port: 23
oceanbase-ce:
  servers:
  - name: server1
    ip: 172.17.0.2
  - name: server2
    ip: 172.17.0.3
  - name: server3
    ip: 172.17.0.4
  global:
    devname: eth0
    cluster_id: 1
    appname: obcluster
    #system configuration
    memory_limit: 32G
    system_memory: 16G
    __min_full_resource_pool_memory: 1G
    stack_size: 2M
    cache_wash_threshold: 1G
    datafile_size: 64G
    cpu_count: 4
    net_thread_count: 4 #better same as cpu_count
    workers_per_cpu_quota: 10
    schema_history_expire_time: 1d
    #lsm-tree
    major_freeze_duty_time: Disable
    minor_freeze_times: 10
    #log
    enable_separate_sys_clog: 0
    enable_merge_by_turn: False
    syslog_level: INFO
    enable_syslog_wf: False
    enable_syslog_recycle: True
    max_syslog_file_count: 4
  server1:
    home_path: /root/observer
    mysql_port: 2881
    rpc_port: 2882
    zone: zone1
  server2:
    home_path: /root/observer
    mysql_port: 2881
    rpc_port: 2882
    zone: zone2
  server3:
    home_path: /root/observer
    mysql_port: 2881
    rpc_port: 2882
    zone: zone3

obproxy:
  depends:
    - oceanbase-ce
  servers:
    - 172.17.0.2
  global:
    listen_port: 2883
    prometheus_listen_port: 2884
    home_path: /root/obproxy
    rs_list: 172.17.0.2:2881;172.17.0.3:2881;172.17.0.4:2881
    enable_cluster_checkout: False
    skip_proxy_sys_private_check: True
    enable_strict_kernel_realease: False