1、部署环境
服务器信息
IP地址 | 10.0.14.22、10.0.14.23、10.0.14.24 |
网卡名 | enp0s8 |
OS | CentOS Linux release 7.8.2003 (Core) |
CPU | 16C |
内存 | 20G |
磁盘1 | 本地盘/dev/sdd (lvm /data 、 /redo) |
机器和角色划分
角色 | 机器 | 备注 |
OBD | 10.0.14.22 | 中控机,自动化部署软件 |
OBSERVER | 10.0.14.22 10.0.14.23 10.0.14.24 |
OceanBase数据库 |
OBPROXY | 10.0.14.22 | OceanBase反向代理访问 |
OBCLIENT | 10.0.14.22 | OceanBase命令行客户端 |
2、服务器初始化
执行OceanBase数据库软件部署前对服务器的相关初始化配置。
各服务器均进行如下初始化配置:
内核参数修改
vim /etc/sysctl.conf
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
让配置生效
sysctl -p
修改会话变量设置
vi /etc/security/limits.conf
* soft nofile 655360
* hard nofile 655360
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* hard core unlimited
* soft stack unlimited
* hard stack unlimited
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭SELinux
vi /etc/selinux/config
SELINUX=disabled
配置安装用户
# 新增普通用户 admin
useradd admin
# 改用户密码
passwd admin
# 配置用户admin sudo权限
vi /etc/sudoers
![](https://img-blog.csdnimg.cn/img_convert/388eac3b7db1ef4ffc30163888fe074f.png)
修改系统时区
将系统时区设置为中国的+8区
tzselect
分别依次选择5) Asia、9) China、1) Beijing Time、1) Yes
vi /etc/profile
export TZ='Asia/Shanghai'
#生效修改
source /etc/profile
磁盘目录配置
# 创建pv
pvcreate /dev/sdd
# 创建vg
vgcreate vg /dev/sdd
# 创建lv
lvcreate -L 200G -n data1 vg
lvcreate -L 20G -n datalog1 vg
# 格式化文件系统
mkfs.ext4 /dev/mapper/vg-data1
mkfs.ext4 /dev/mapper/vgdatalog1
# 挂载文件系统
mkdir -p /data1 /datalog1
vi /etc/fstab
/dev/mapper/vg-data1 /data ext4 defaults 0 0
/dev/mapper/vgdatalog1 /redo ext4 defaults 0 0
# 修改目录所有者权限
mount -a
chown -R admin:admin /data
chown -R admin:admin /redo
配置SSH免密登录
# 生成RSA密钥(在中控机10.0.14.22上执行)
su - admin
ssh-keygen -t rsa
# 打通到本机的SSH免密登录
ssh-copy-id -i .ssh/id_rsa.pub admin@10.0.14.22
ssh admin@10.0.14.22 #测试ssh免密登录本机
# 打通到其他3台服务器的SSH免密登录(在中控机10.0.14.22上执行)
ssh-copy-id -i .ssh/id_rsa.pub admin@10.0.14.22
ssh-copy-id -i .ssh/id_rsa.pub admin@10.0.14.23
ssh-copy-id -i .ssh/id_rsa.pub admin@10.0.14.24
#测试ssh免密登录本机
ssh admin@10.0.14.22
ssh admin@10.0.14.23
ssh admin@10.0.14.24
配置时间同步服务
此实验时间同步服务使用chrony,其中10.0.14.22同步公网时间服务器,其他3台服务器的时间服务器使用10.0.14.22
服务器端配置
使用root用户,在服务器10.0.14.22上部署chrony同步公网时间,同时为内外其他服务器提供时间服务。
# 安装chrony软件
yum install chrony -y
# 修改配置文件 /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 10.0.14.0/24
# 重启时间同步服务
systemctl enable chronyd
systemctl restart chronyd
# 查看时间同步源和状态
chronyc sources
chronyc sourcestats
![](https://img-blog.csdnimg.cn/img_convert/2e9a28c7184237182c2e236ac1589875.png)
客户端配置
在服务器10.0.14.23上部署chrony,以10.0.14.22为时间服务器。
# 安装chrony软件
yum install chrony -y
# 修改配置文件 /etc/chrony.conf
先注释掉默认服务器配置项,修改为如下配置:
server 10.0.14.22 iburst
# 重启时间同步服务
systemctl enable chronyd
systemctl restart chronyd
# 查看时间同步源和状态
chronyc sources
chronyc sourcestats
![](https://img-blog.csdnimg.cn/img_convert/7ebf798e8daba9c5e4eb8ff7fbc7a45a.png)
3、部署OceanBase集群
本实验使用obd自动部署多节点OceanBase,包括代理服务obproxy。
编辑OBD配置文件
使用wget https://github.com/oceanbase/obdeploy/blob/master/example/mini-distributed-with-obproxy-example.yaml 下载自动部署的模板配置文件,根据自己服务器环境做相应调整即可。
重命名模板文件名为obce-3zones.yaml,主要配置项如下:
配置项 | 配置值 |
cluster_name | obce-3zones |
servers | - name: server1 ip: 10.0.14.22 - name: server2 ip: 10.0.14.23 - name: server3 ip: 10.0.14.24 |
home_path | /home/admin/observer /home/admin/obproxy |
data_dir | /data |
redo_dir | /redo |
devname | enp0s8 |
memory_limit | 10G |
system_memory | 10G |
mysql_port | 2881 |
rpc_port | 2882 |
listen_port | 2883 |
zone | zone1、zone2、zone3 |
cluster_id | 1 |
安装obd程序软件
安装obd命令程序用于自动化部署OceanBase集群,在中控机(10.0.14.22)上执行如下命令:
rpm -ivh ob-deploy-1.3.0-8.el7.x86_64.rpm
使用obd命令部署集群
部署使用命令:obd cluster deploy [集群名] -c 集群配置文件
obd cluster deploy obcluster -c mini-distributed-example.yaml
![](https://img-blog.csdnimg.cn/img_convert/de2182a67189c45da5731d871ffb6591.png)
检查部署结果
使用obd部署成功OceanBase集群后的状态为 deployed,正常使用还需要进行集群的启动和初始化。
![](https://img-blog.csdnimg.cn/img_convert/b7cd01668f141e78fae43e9f58bf6505.png)
查看部署目录结构
节点10.0.14.22的目录结构如下:
![](https://img-blog.csdnimg.cn/img_convert/22f8cd4c6034931d7350274fa9226486.png)
![](https://img-blog.csdnimg.cn/img_convert/85dae2c5b9c74d2a52b338b13c982285.png)
启动和初始化集群
启动使用命令:obd cluster start <集群名>
obd cluster start obcluster
![](https://img-blog.csdnimg.cn/img_convert/b5511c214b317a0f273311e4624d4f20.png)
![](https://img-blog.csdnimg.cn/img_convert/dc02932273650db7d249d8af5f7f10f5.png)
启动成功,再次查看其状态已经为running。
![](https://img-blog.csdnimg.cn/img_convert/66cb115a0aa3e1107c1cf1b2d0f20505.png)
检查OceanBase 集群各个节点进程信息
IPS="10.0.14.22 10.0.14.23 10.0.14.24"
for ob in $IPS;do echo $ob; ssh $ob "ps -ef | grep observer | grep -v grep "; done
![](https://img-blog.csdnimg.cn/img_convert/8c4d81c952f17054e89ca62f8740d13f.png)
检查OceanBase 集群各个节点监听状况
IPS="10.0.14.22 10.0.14.23 10.0.14.24"
for ob in $IPS;do echo $ob; ssh $ob "netstat -ntlp"; done
![](https://img-blog.csdnimg.cn/img_convert/93a184750277c2b683d120c930ad9c39.png)
4、验证测试OceanBase集群
验证集群部署使用obclient客户端软件。
部署obclient客户端
# 在中控机(10.0.14.22)上执行
rpm -ivh libobclient-2.0.0-2.el7.x86_64.rpm
rpm -ivh obclient-2.0.1-2.el7.x86_64.rpm
登录测试OceanBase集群
分别通过直接登录observer服务和obproxy服务端口验证。
直接登录observer节点:
obclient -h 10.0.14.22 -uroot@sys -P2881 -c -A oceanbase
obclient -h 10.0.14.23 -uroot@sys -P2881 -c -A oceanbase
obclient -h 10.0.14.24 -uroot@sys -P2881 -c -A oceanbase
***无需密码****
![](https://img-blog.csdnimg.cn/img_convert/d2f6589800091253b2560b7d285b2e5b.png)
登录代理节点obproxy
obclient -h 10.0.14.22 -P2883 -uroot@sys#obcluster -c -A oceanbase
![](https://img-blog.csdnimg.cn/img_convert/ba50edf1855e0a0e630c409ef63cd681.png)
并查看当前server列表
select zone, svr_ip, svr_port, with_rootserver, status from __all_server order by zone, with_rootserver desc;
![](https://img-blog.csdnimg.cn/img_convert/a3347d570f3cd458ac46be1c94ddd7c5.png)
测试节点数据一致性
通过在一个zone节点上创建数据表并写入数据之后,在另外一个zone节点上查看数据是否一致。
在zone1上创建数据表并写入数据记录:
obclient -h 10.0.14.22 -uroot@sys -P2881 -c -A oceanbase
create table t1(id int(4) primary key, test_time datetime);
insert into t1(id, test_time) values(1, now());
select * from t1;
![](https://img-blog.csdnimg.cn/img_convert/e64442b68425607f3c81dc35069a1b68.png)
在zone2和zone3上查看数据是否一致:
obclient -h 10.0.14.23 -uroot@sys -P2881 -c -A oceanbase
![](https://img-blog.csdnimg.cn/img_convert/a79b2874dc9b005d5e311af698eab539.png)
obclient -h 10.0.14.24 -uroot@sys -P2881 -c -A oceanbase
![](https://img-blog.csdnimg.cn/img_convert/a502b81d4f1df37f3894b14d89822ec1.png)