-
Notifications
You must be signed in to change notification settings - Fork 4
使用Docker进行分布式OB部署
在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