华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群

2024年 5月 7日 66.4k 0

作者简介:邹阳,数据库工程师。

本实践练习实现手动部署多副本多节点集群和集群扩容。

OBD部署OB三副本集群

本实验使用OBD部署3节点3副本集群(1-1-1)

一、部署环境

服务器信息

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-1

机器和角色划分

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-2

二、服务器初始化

执行OceanBase数据库软件部署前对服务器的相关初始化配置。

172.16.100.60、172.16.100.51-53 四台服务器均进行如下初始化配置:

2.1配置使用阿里源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-3

2.2安装相关工具软件

yum install epel-release -y

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-4

yum install -y net-tools lrzsz tree htop dstat sysvinit-tools

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-5

2.3内核参数修改

cat >> /etc/sysctl.conf <<EOF

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

vm.min_free_kbytes = 2097152

vm.max_map_count=655360

fs.aio-max-nr=1048576

EOF

让配置生效

sysctl -p

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-6

2.4修改会话变量设置

cat >> /etc/security/limits.conf <<EOF

* -   nofile 655360

* -   nproc 655360

* -   core  unlimited

* -   stack unlimited

EOF

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-7

2.5关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

2.6关闭SELinux

setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/config

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-8

2.7创建安装用户

# 新增普通用户 admin

useradd admin

# 改用户密码

echo "admin:admin" | chpasswd

# 配置用户admin sudo权限

visudo

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-9

2.8修改系统时区

     将系统时区设置为中国的+8区

        tzselect

        分别依次选择 5) Asia、9) China、1) Beijing Time、1) Yes

         vi /etc/profile

           export TZ='Asia/Shanghai'

      #生效修改

           source /etc/profile

2.9初始化目录

# 创建相关目录

mkdir -p /data

mkdir -p /redo

mkdir -p /home/admin/oceanbase-ce

# 修改目录所有者权限

chown -R admin:admin /data

chown -R admin:admin /redo

chown -R admin:admin /home/admin/oceanbase-ce

 

三、配置时间同步服务

此实验时间同步服务使用chrony,其中obpro(172.16.100.60)同步公网时间服务器,其他3台服务器的时间服务器使用obpro

Chrony是一个开源自由的网络时间协议 NTP 的客户端和服务器软软件。它能让计算机保持系统时钟与时钟服务器(NTP)同步,因此让你的计算机保持精确的时间,Chrony也可以作为服务端软件为其他计算机提供时间同步服务。Chrony由两个程序组成,分别是chronyd和chronyc。chronyd是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。

   Chronyc提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。

NTP 是网络时间协议(Network Time Protocol)的简称,通过 udp 123 端口进行网络时钟同步。RHEL7中默认使用chrony作为时间服务器,也支持NTP,需要额外安装。NTP与chrony不能同时存在,只能用其中一个,并将另一个mask掉。

3.1服务器端配置

在服务器172.16.100.60上部署chrony同步公网时间,同时为内外其他服务器提供时间服务。

# 安装chrony软件

yum install chrony -y

# 修改配置文件

     vi /etc/chrony.conf

先注释掉默认服务器配置项,修改为如下配置:

server ntp.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst

server ntp.aliyun.com minpoll 4 maxpoll 10 iburst

server ntp1.aliyun.com minpoll 4 maxpoll 10 iburst

server ntp1.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst

server ntp10.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst

#打开允许同步的IP地址段

allow 172.16.100.0/24 

# 重启时间同步服务

systemctl enable chronyd

systemctl restart chronyd

# 查看时间同步源和状态

chronyc sources

chronyc sourcestats

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-10

3.2客户端配置

在服务器172.16.100.51-53上部署chrony,以172.16.100.60为时间服务器。

# 安装chrony软件

yum install chrony -y

# 修改配置文件

  vi /etc/chrony.conf

先注释掉默认服务器配置项,修改为如下配置:

server 172.16.100.60 iburst

# 重启时间同步服务

systemctl enable chronyd

systemctl restart chronyd

# 查看时间同步源和状态

chronyc sources

chronyc sourcestats

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-11

 

 

四、中控机安装ODB软件包

使用如下命令下载相关程序包文件:

yum install -y yum-utils

yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo

yum install -y ob-deploy

 

五、配置YAML文件

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-12

配置文件内容,详见附件。

六、使用配置文件初始化OBD

obd cluster deploy obce-3zones -c obce3.yaml

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-13

七、启动集群节点并初始化集群

7.1 启动集群

上面 deploy 操作只是安装了软件和准备初始化目录,还需要启动集群节点并初始化集群,使用 obd cluster start 命令

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-14

7.2查看启动后的集群状态

obd cluster list

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-15

7.3检查 OceanBase 集群各个节点进程信息。

OceanBase 是单进程软件,进程名叫 observer ,可以用下面命令查看这个进程。

IPS="172.16.100.51 172.16.100.52 172.16.100.53"

for ob in $IPS;do echo $ob; ssh $ob "ps -ef | grep observer | grep -v grep "; done

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-16

7.4检查 OceanBase 集群各个节点监听状况。

IPS="172.16.100.51 172.16.100.52 172.16.100.53"

for ob in $IPS;do echo $ob; ssh $ob "netstat -ntlp"; done

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-17

7.5 使用obclient 登陆

su - admin

安装obclient

sudo rpm -ivh libobclient-2.0.0-2.el7.x86_64.rpm

sudo rpm -ivh obclient-2.0.0-2.el7.x86_64.rpm

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/oceanbase/lib/' >> ~/.bash_profile

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/oceanbase/lib/

7.6并查看当前server列表

obclient -h 172.16.100.51 -P 2881 -uroot@sys -p -c -A

use oceanbase;

select zone, svr_ip, svr_port, with_rootserver, status from __all_server order by zone, with_rootserver desc;

select a.zone,concat(a.svr_ip,':',a.svr_port) observer, cpu_total, (cpu_total-cpu_assigned) cpu_free, round(mem_total/1024/1024/1024) mem_total_gb, round((mem_total-mem_assigned)/1024/1024/1024) mem_free_gb, usec_to_time(b.last_offline_time) last_offline_time, usec_to_time(b.start_service_time) start_service_time, b.status, usec_to_time(b.stop_time) stop_time, b.build_version

from __all_virtual_server_stat a join __all_server b on (a.svr_ip=b.svr_ip and a.svr_port=b.svr_port)

order by a.zone, a.svr_ip;

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-18

九、部署obproxy代理

在代理服务器(172.16.100.60)上使用OBD布署obproxy软件,通过obproxy方向代理访问各个obsrever服务。

9.1创建obproxy目录

su - admin

mkdir /home/admin/obagent

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-19

依次在ob01~03 上创建目录

9.2创建监控用户

obclient -h 172.16.100.51 -P 2881 -uroot@sys -p -c -A

use oceanbase;

grant select on oceanbase.* to monitor identified by 'fLyaqjrp2R';

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-20

9.3 OBD 部署 OBAgent

obd cluster deploy obagent-only -c obagent.yaml

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-21

 

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-22

参数详见附件

obd cluster list

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-23

9.4使用OBD启动obagent并检查

obd cluster start obagent-only

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-24

obd cluster list

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-25

在ob01节点上检查进程

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-26

obd cluster display obagent-only

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-27

OceanBase社区版入门到实战教程直播正在进行中~

快和小伙伴一起进群交流学习吧~

加入直播群方式一:

钉钉群号3255 4020

加入直播群方式二:

扫码下方二维码加入

华信永道实践:使用 OBD 部署一个 三副本 OceanBase 集群-28

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论