OB 4.2 集群手动部署方法
OB 集群(包括 OBProxy)的手动部署方法,是入门 OB 运维的第一道门槛,是理解 OBD、OCP 以及 OBSHELL 等工具产品自动化部署 OB 集群的原理的关键,也是解决常见 OB 部署失败问题的关键。
只有 2 台服务器,组建一个 OB 集群没有意义(缺一台)。为了容灾,架构选择 OB DataGuard 方案。在 4.2 版本里,主备的粒度是租户,所以部署 2 个独立的单副本 OB 集群,创建一对主备租户。
没有提供服务器部署 OCP,所以 OB 集群部署、主备搭建都要手动执行。
服务器 CPU 是 Kunpeng 920,ARM 架构。操作系统是 UOS 1050d 。OB 和 OBProxy 的软件包是:oceanbase-4.2.1.1-101010022023110921.el7.aarch64.rpm 和 obproxy-4.2.1.0-20231017181929.el7.aarch64.rpm 。
服务器初始化
严格的服务器初始化步骤可以参考官网。这里仅列举关键的部分。
首先是内核参数设置。
fs.aio-max-nr=1048576
<br>
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
<br>
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 = 1
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_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1
#net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_slow_start_after_idle=0
<br>
vm.swappiness = 0
vm.min_free_kbytes = 1048576
fs.file-max = 6573688
<br>
vm.max_map_count = 655360
这一段主要是复制官网文档,由于服务器资源少的可怜,所以稍作调整。将 OS 保留内存从 2G 调整为 1G (vm.min_free_kbytes = 1048576),这个多出来的 1G 会体现在OS 的可用内存中。此外,删除了 core dump 目录设置。磁盘总共也就 200G ,少的可怜,不给 core dump 文件留空间了。
一般建议 OB 运行在用户 admin 下,如果是别的用户,看相关文档的时候都要改变用户为实际用户。这里只是名字叫 admin ,并不表示需要特别权限。有些工具要求这个用户有 sudo 免密权限,纯粹是运维工具为了自己方便。OB 对运行用户没有 sudo 权限要求。
当然,也强烈反对 OB 进程运行在 root 用户下,遗患无穷。这个跟 ORACLE 道理是一样的。
第四是 OS 会话设置。
vim /etc/security/limits.conf
<br>
<br>
* soft nofile 655350
* hard nofile 655350
* soft stack unlimited
* hard stack unlimited
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* hard core unlimited
<br>
<br>
admin soft nofile 655350
admin hard nofile 655350
admin soft stack unlimited
admin hard stack unlimited
admin soft nproc 655360
admin hard nproc 655360
admin soft core unlimited
admin hard core unlimited