在安装OceanBase前,请先根据服务器规划和磁盘规划,并在各服务器中分别完成检查操作系统版本、检查gcc版本、修改操作系统配置、创建安装用户、配置环境变量、配置免登录步骤,否则会造成安装失败。
检查操作系统版本
OceanBase需要在 Linux Red Hat 6/7 x86-64 且内核要求在 2.6.32 及以上版本运行。
检查Linux操作系统版本的操作步骤如下:
- 以 root 用户登录各 OceanBase 服务器。
- 执行以下命令查看操作系统内核版本。
cat /proc/version
系统显示如下:
Linux version 2.6.32-220.23.2.ali878.el6.x86_64 (ads@kbuild) (gcc version 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC) ) #1 SMP Mon Jan 28 17:12:52 CST 2013
- 重复步骤1~2,检查所有 OceanBase 服务器操作系统版本。如果不满足,则请重新安装 Linux Red Hat 6/7。
修改操作系统配置
为了保证 OceanBase 的正常安装,我们需要对所有 OceanBase 服务器进行设置,包括设置网卡名称和IP、配置sysctl.conf 文件以及配置 NTP 时钟同步等操作。
检查网卡名称和 IP
在启动 OBServer 服务时,需要通过 -i 参数指定网卡,服务器有可能有多个网卡以及多个 IP,OBServer 之间通信依赖指定的网卡和 IP。可以通过ifconfig
命令查看网卡名称 (需要先安装net-tools依赖包),通过 ethtool
命令查看网卡带宽。如果千兆、万兆网卡并存,一定要使用指定的万兆网卡名称和 IP 来启动 OBServer。
$ifconfig
bond0.22 Link encap:Ethernet HWaddr 9C:B6:54:8D:E0:80
inet addr:10.210.181.149 Bcast:10.210.183.255 Mask:255.255.252.0
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
……
eth0 Link encap:Ethernet HWaddr 9C:B6:54:8D:E0:80
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
……
eth1 Link encap:Ethernet HWaddr 9C:B6:54:8D:E0:80
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
……
$ethtool eth0 | grep Speed
Speed: 10000Mb/s
$ethtool eth1 | grep Speed
Speed: 10000Mb/s
说明
说明:如果 OBServer 中存在两个或多个网卡,需要对网卡做 bond,把多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡。
配置 sysctl.conf 文件
为保证OceanBase正常运行,请在安装OceanBase前修改 sysctl.conf 配置,以便提高 Linux 的系统性能。
所有 OceanBase 服务器的 sysctl.conf 配置过程如下:
- 以root用户登录各OceanBase服务器。
- 使用 vi 编辑器,在 /etc/sysctl.conf 文件末尾添加以下内容。
# for oceanbase
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_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_slow_start_after_idle=0
vm.swappiness = 0
kernel.core_pattern = /data/1/core-%e-%p-%t
vm.min_free_kbytes = 2097152
- 执行以下命令,使修改配置生效。
/sbin/sysctl -p /etc/sysctl.conf
配置 NTP 时钟同步
OceanBase 集群中各服务器的时间需保持一致,否则会导致 OceanBase 集群无法启动,运行时也会出现故障。
前提条件
在配置 NTP 时钟同步前,请运行以下命令关闭所有 OceanBase 服务器的防火墙。
service iptables stop
如果是 Redhad 7u下的防火墙关闭方式有所不同。关闭防火墙和 SELinux的具体操作方法如下:
- 执行以下命令,关闭 firewalld。
说明
注意: 以 root 用户执行或具有 sudo 权限的用户执行以下命令。
systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld
- 修改/etc/selinux/config 文件。
SELINUX=disabled
setenforce 0
开启 NTP Server 服务
如果已经存在 NTP Server 服务器,则可跳过本小节。否则,请在 OceanBase 服务器中任意选择一台,作为 NTP Server 服务器,并开启 NTP Server 服务。
开启NTP Server服务操作步骤如下:
- 以 root 用户登录 NTP Server 服务器。
- 使用vi编辑器,修改 /etc/ntp.conf,修改结果如下所示。
……
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
#restrict default kod nomodify notrap nopeer noquery
restrict default kod nomodify
restrict -6 default kod nomodify notrap nopeer noquery
……
- 执行以下命令,重启 NTP Server 服务。
service ntpd restart
- 执行以下命令,查看是否成功启动 NTP Server 服务。
ps -ef |grep -i ntpd
- 执行以下命令,设置 NTP 服务开机自启动。
chkconfig ntpd on
开启 NTP Client 服务
NTP Server服务启动后,请等待5分钟再开启NTP Client服务,否则会提示“no server suitable for synchronization found”错误。
以 NTP Server 服务器 IP 为 192.168.1.90 为例。所有 OceanBase 服务器开启 NTP Client 服务操作步骤如下:
- 以 root 用户登录 OceanBase 服务器。
- 执行以下命令,停止 NTP 服务。
service ntpd stop
- 执行以下命令,即时同步 NTP Server 时间。
ntpdate 192.168.1.90
- 使用 vi 编辑器,修改 /etc/ntp.conf,修改结果如下所示。
……
server 192.168.1.90
……
- 执行以下命令,启动 NTP 服务。
service ntpd start
验证NTP时间同步
验证NTP时间同步的两种方法:
- 通过
ntpstat
ntpstat
命令用于查看时间同步状态,这个一般需要5分钟~10分钟后才能成功连接和同步,故服务器启动后需要耐心等待一下。
刚启动时,一般显示如下信息:
$ntpstat
unsynchronised
time server re-starting
polling server every 64 s
连接并同步后,显示如下信息:
$ntpstat
synchronised to NTP server (202.120.2.101) at stratum 4
time correct to within 60 ms
polling server every 64 s
- 通过
ntpq-p
ntpq -p
系统显示如下所示信息:
$ntpq -p
remote refid st t when poll reach delay offset jitter
=================================================================
*111.1.30.11 LOCAL(0) 11 u 62 64 3 0.077 0.131 0.135
配置操作系统 ulimit 资源限制
ulimit 用于限制 shell 启动进程所占用的资源。有两种方法可以修改资源限制,一种是通过启动时由 session 级别指定,另外一种是修改 /etc/security/limits.conf 配置文件,全局生效。
OBServer 进程涉及的几个限制包括线程最大栈空间大小(stack)、最大文件句柄数(open files)和core文件大小(core file size)。
- 如下示例中,在启动 OBServer 进程时,session 级别设置最大栈空间大小为 unlimited,最大文件句柄数为655350,core 文件大小为 unlimited。
cd /home/admin/oceanbase;
ulimit -s 20480; ulimit -n 655350; ulimit -c unlimited;
LD_LIBRARY_PATH=/home/admin/oceanbase/lib:/usr/local/lib:/usr/lib:/usr/lib64:/usr/local/lib64:$LD_LIBRARY_PATH LD_PRELOAD=""
/home/admin/oceanbase/bin/observer -i bond0 -p 2881 -P 2882 -n abcbank -c 1-z ZONE_1 -d /home/admin/oceanbase/store/abcbank -l info -o "rootservice_list=192.168.1.90:2882:2881;192.168.1.91:2882:2881; 192.168.1.92:2882:2881,datafile_disk_percentage=95,config_additional_dir=/data/log1/abcbank/etc2;/data/1/abcbank/etc3"
- 如下所示为修改 linux 系统参数。
$vi /etc/security/limits.conf 添加
* soft nofile 655350
* hard nofile 655350
* soft stack 20480
* hard stack 20480
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* hard core unlimited
修改以后保存,退出当前 session,重新登录,执行 ulimit -a
, 验证参数是否生效。
说明
注意:stack不要设置成 unlimited,操作系统会设置成 2MB。