在安装OceanBase前,请先根据服务器规划和磁盘规划,并在各服务器中分别完成检查操作系统版本、检查gcc版本、修改操作系统配置、创建安装用户、配置环境变量、配置免登录步骤,否则会造成安装失败。

    检查操作系统版本

    OceanBase需要在 Linux Red Hat 6/7 x86-64 且内核要求在 2.6.32 及以上版本运行。

    检查Linux操作系统版本的操作步骤如下:

    1. 以 root 用户登录各 OceanBase 服务器。
    2. 执行以下命令查看操作系统内核版本。
    1. cat /proc/version

    系统显示如下:

    1. 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. 重复步骤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。

    1. $ifconfig
    2. bond0.22 Link encap:Ethernet HWaddr 9C:B6:54:8D:E0:80
    3. inet addr:10.210.181.149 Bcast:10.210.183.255 Mask:255.255.252.0
    4. UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
    5. ……
    6. eth0 Link encap:Ethernet HWaddr 9C:B6:54:8D:E0:80
    7. UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
    8. ……
    9. eth1 Link encap:Ethernet HWaddr 9C:B6:54:8D:E0:80
    10. UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
    11. ……
    12. $ethtool eth0 | grep Speed
    13. Speed: 10000Mb/s
    14. $ethtool eth1 | grep Speed
    15. Speed: 10000Mb/s

    说明

    说明:如果 OBServer 中存在两个或多个网卡,需要对网卡做 bond,把多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡。

    配置 sysctl.conf 文件

    为保证OceanBase正常运行,请在安装OceanBase前修改 sysctl.conf 配置,以便提高 Linux 的系统性能。

    所有 OceanBase 服务器的 sysctl.conf 配置过程如下:

    1. 以root用户登录各OceanBase服务器。
    2. 使用 vi 编辑器,在 /etc/sysctl.conf 文件末尾添加以下内容。
    1. # for oceanbase
    2. net.core.somaxconn = 2048
    3. net.core.netdev_max_backlog = 10000
    4. net.core.rmem_default = 16777216
    5. net.core.wmem_default = 16777216
    6. net.core.rmem_max = 16777216
    7. net.core.wmem_max = 16777216
    8. net.ipv4.ip_local_port_range = 3500 65535
    9. net.ipv4.ip_forward = 0
    10. net.ipv4.conf.default.rp_filter = 1
    11. net.ipv4.conf.default.accept_source_route = 0
    12. net.ipv4.tcp_syncookies = 0
    13. net.ipv4.tcp_rmem = 4096 87380 16777216
    14. net.ipv4.tcp_wmem = 4096 65536 16777216
    15. net.ipv4.tcp_max_syn_backlog = 16384
    16. net.ipv4.tcp_fin_timeout = 15
    17. net.ipv4.tcp_max_syn_backlog = 16384
    18. net.ipv4.tcp_tw_reuse = 1
    19. net.ipv4.tcp_tw_recycle = 1
    20. net.ipv4.tcp_slow_start_after_idle=0
    21. vm.swappiness = 0
    22. kernel.core_pattern = /data/1/core-%e-%p-%t
    23. vm.min_free_kbytes = 2097152
    1. 执行以下命令,使修改配置生效。
    1. /sbin/sysctl -p /etc/sysctl.conf

    配置 NTP 时钟同步

    OceanBase 集群中各服务器的时间需保持一致,否则会导致 OceanBase 集群无法启动,运行时也会出现故障。

    前提条件

    在配置 NTP 时钟同步前,请运行以下命令关闭所有 OceanBase 服务器的防火墙。

    1. service iptables stop

    如果是 Redhad 7u下的防火墙关闭方式有所不同。关闭防火墙和 SELinux的具体操作方法如下:

    1. 执行以下命令,关闭 firewalld。

    说明

    注意: 以 root 用户执行或具有 sudo 权限的用户执行以下命令。

    1. systemctl disable firewalld
    2. systemctl stop firewalld
    3. systemctl status firewalld
    1. 修改/etc/selinux/config 文件。
    1. SELINUX=disabled
    2. setenforce 0

    开启 NTP Server 服务

    如果已经存在 NTP Server 服务器,则可跳过本小节。否则,请在 OceanBase 服务器中任意选择一台,作为 NTP Server 服务器,并开启 NTP Server 服务。

    开启NTP Server服务操作步骤如下:

    1. 以 root 用户登录 NTP Server 服务器。
    2. 使用vi编辑器,修改 /etc/ntp.conf,修改结果如下所示。
    1. ……
    2. # Permit time synchronization with our time source, but do not
    3. # permit the source to query or modify the service on this system.
    4. #restrict default kod nomodify notrap nopeer noquery
    5. restrict default kod nomodify
    6. restrict -6 default kod nomodify notrap nopeer noquery
    7. ……
    1. 执行以下命令,重启 NTP Server 服务。
    1. service ntpd restart
    1. 执行以下命令,查看是否成功启动 NTP Server 服务。
    1. ps -ef |grep -i ntpd
    1. 执行以下命令,设置 NTP 服务开机自启动。
    1. 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 服务操作步骤如下:

    1. 以 root 用户登录 OceanBase 服务器。
    2. 执行以下命令,停止 NTP 服务。
    1. service ntpd stop
    1. 执行以下命令,即时同步 NTP Server 时间。
    1. ntpdate 192.168.1.90
    1. 使用 vi 编辑器,修改 /etc/ntp.conf,修改结果如下所示。
    1. ……
    2. server 192.168.1.90
    3. ……
    1. 执行以下命令,启动 NTP 服务。
    1. service ntpd start

    验证NTP时间同步

    验证NTP时间同步的两种方法:

    • 通过 ntpstat

    ntpstat 命令用于查看时间同步状态,这个一般需要5分钟~10分钟后才能成功连接和同步,故服务器启动后需要耐心等待一下。

    刚启动时,一般显示如下信息:

    1. $ntpstat
    2. unsynchronised
    3. time server re-starting
    4. polling server every 64 s

    连接并同步后,显示如下信息:

    1. $ntpstat
    2. synchronised to NTP server (202.120.2.101) at stratum 4
    3. time correct to within 60 ms
    4. polling server every 64 s
    • 通过ntpq-p
    1. ntpq -p

    系统显示如下所示信息:

    1. $ntpq -p
    2. remote refid st t when poll reach delay offset jitter
    3. =================================================================
    4. *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。
    1. cd /home/admin/oceanbase;
    2. ulimit -s 20480; ulimit -n 655350; ulimit -c unlimited;
    3. LD_LIBRARY_PATH=/home/admin/oceanbase/lib:/usr/local/lib:/usr/lib:/usr/lib64:/usr/local/lib64:$LD_LIBRARY_PATH LD_PRELOAD=""
    4. /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 系统参数。
    1. $vi /etc/security/limits.conf 添加
    2. *  soft  nofile  655350
    3. *  hard  nofile  655350
    4. *  soft  stack 20480
    5. *  hard  stack 20480
    6. * soft nproc 655360
    7. * hard nproc 655360
    8. *  soft  core unlimited
    9. *  hard  core unlimited

    修改以后保存,退出当前 session,重新登录,执行 ulimit -a , 验证参数是否生效。

    说明

    注意:stack不要设置成 unlimited,操作系统会设置成 2MB。