作者简介:邹阳,数据库工程师。
本实践练习实现手动部署多副本多节点集群和集群扩容。
OBD部署OB三副本集群
本实验使用OBD部署3节点3副本集群(1-1-1)
一、部署环境
服务器信息
机器和角色划分
二、服务器初始化
执行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
2.2安装相关工具软件
yum install epel-release -y
yum install -y net-tools lrzsz tree htop dstat sysvinit-tools
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
2.4修改会话变量设置
cat >> /etc/security/limits.conf <<EOF
* - nofile 655360
* - nproc 655360
* - core unlimited
* - stack unlimited
EOF
2.5关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
2.6关闭SELinux
setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/config
2.7创建安装用户
# 新增普通用户 admin
useradd admin
# 改用户密码
echo "admin:admin" | chpasswd
# 配置用户admin sudo权限
visudo
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
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
四、中控机安装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
obd cluster deploy obce-3zones -c obce3.yaml
七、启动集群节点并初始化集群
7.1 启动集群
上面 deploy 操作只是安装了软件和准备初始化目录,还需要启动集群节点并初始化集群,使用 obd cluster start 命令
7.2查看启动后的集群状态
obd cluster list
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
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
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;
九、部署obproxy代理
在代理服务器(172.16.100.60)上使用OBD布署obproxy软件,通过obproxy方向代理访问各个obsrever服务。
9.1创建obproxy目录
su - admin
mkdir /home/admin/obagent
依次在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';
9.3 OBD 部署 OBAgent
obd cluster deploy obagent-only -c obagent.yaml
参数详见附件
obd cluster list
9.4使用OBD启动obagent并检查
obd cluster start obagent-only
obd cluster list
在ob01节点上检查进程
obd cluster display obagent-only
OceanBase社区版入门到实战教程直播正在进行中~
快和小伙伴一起进群交流学习吧~
加入直播群方式一:
钉钉群号3255 4020
加入直播群方式二:
扫码下方二维码加入