暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

实践练习一:OceanBase Docker 体验

原创 tnan1986 2023-03-24
2088

实践练习一:OceanBase Docker 体验

实验环境说明

操作系统

Virtualbox 虚拟机 CentOS Linux release 7.6.1810 (Core)

硬件配置

处理器8核、内存32GB

实验说明及步骤

因为电脑的资源不够,只能借助于服务器资源,但是服务器不能联网,所以离线安装docker测试环境和上传oceanbase-ce docker镜像成为本实验的难点所在,后面开启docker后安装一路顺利,测试正常。

本实验练习使用的工具软件docker-ce-20.10.9版本。

安装步骤分为以下几步:

  1. 安装LINUX版Virtualbox虚拟机软件;
  2. 创建 CentOS linux虚拟机;
  3. 安装docker-ce软件环境;
  4. 打包导出oceanbase-ce docker镜像;
  5. 上传导入oceanbase-ce docker镜像;
  6. 启动oceanbase-ce docker镜像;
  7. 创建资源单元、资源池、租户等资源;
  8. 创建数据库及表,插入数据测试等。

实验练习内容

  1. 安装LINUX版Virtualbox虚拟机软件

因为我的宿主机环境为oracle Linux 6.9,故选择virtualbox的6.0.24版本,老版本稳定一些。

下载地址为:https://download.virtualbox.org/virtualbox/6.0.24/VirtualBox-6.0-6.0.24_139119_el6-1.x86_64.rpm

rpm -ivh VirtualBox-6.0-6.0.24_139119_el6-1.x86_64.rpm安装即可,

下载安装后,连接虚拟机的GNOME环境可看到:

  1. 创建 CentOS linux虚拟机

根据实验后续规划,最小化安装创建4台虚拟机,分别为 linux76-1,linux76-2,linux76-3和linux76-4,IP地址分别为192.168.56.40-43,

192.168.56.41-43作为后续搭建三台OB集群使用,192.168.56.40作为OBD集群管理中心和OB CLIET及OB obproxy代理服务器使用,

为了方便后续安装软件包方便,搭建了本地yum源,并挂载了ISO文件到/mnt目录下。

挂载本地YUM源:

cd /etc/yum.repos.d

mkdir bk

mv *.repo bk/

echo "[EL]" > /etc/yum.repos.d/centos-media.repo

echo "name =Linux 7.x DVD" >> /etc/yum.repos.d/centos-media.repo

echo "baseurl=file://mnt" >> /etc/yum.repos.d/centos-media.repo

echo "gpgcheck=1" >> /etc/yum.repos.d/centos-media.repo

echo "enabled=1" >> /etc/yum.repos.d/centos-media.repo

echo "gpgkey=file:///mnt/RPM-GPG-KEY-CentOS-7" >> /etc/yum.repos.d/centos-media.repo

配置开机自动挂载:

echo "/dev/sr0 /mnt iso9660 defaults,ro,loop 0 0" >>/etc/fstab

cat /etc/fstab

配置互信(可选),方便快速连接到虚拟机

ssh-keygen -t rsa

ssh-copy-id 192.168.56.40

vbox虚拟机资源管理

LINUX上vbox虚拟机可以用命令行方便的开关机和查看资源管理、在虚拟机配置完成后就可以把远程桌面环境关闭,节约服务器资源,相关管理命令如下:

查看已经安装的虚拟机资源:

[root@obdemo001 ~]# VBoxManage list vms

"linux76-1" {d281e231-c5b5-4da5-9fad-ee12eaacec45}

"linux76-2" {e1c2d4c4-fb3c-428d-ad79-106233adc8ed}

"linux76-3" {1408385a-763a-43d0-94d2-44c06c9e9c2f}

"linux76-4" {7e17147d-9012-438c-839b-73e289fbfc49}

查看正在运行的虚拟机资源:

[root@obdemo001 ~]# VBoxManage list runningvms

"linux76-1" {d281e231-c5b5-4da5-9fad-ee12eaacec45}

无界面开启虚拟机:

VBoxManage startvm linux76-1 --type headless

关闭虚拟机

VBoxManage controlvm linux76-1 poweroff

其他还有很多强大的资源管理命令,可查看VBoxManage命令手册,做实验用这几条命令暂时满足需求。

  1. 安装docker-ce软件环境

因为是离线安装,还是遇到了不少问题,主要是缺包及依赖包。虽然本地挂载了YUM镜像源,还是缺少了一些包和依赖库,

经过不断的测试及查找资料,docker安装除了本地YUM源外需要4个软件包,5个依赖包分别如下:

Docker-ce安装软件:

docker-ce-20.10.9-3.el7.x86_64.rpm

docker-ce-cli-20.10.9-3.el7.x86_64.rpm

docker-ce-rootless-extras-20.10.9-3.el7.x86_64.rpm

docker-scan-plugin-0.21.0-3.el7.x86_64.rpm

Docker-ce安装依赖软件:

containerd.io-1.6.6-3.1.el7.x86_64.rpm

container-selinux-2.84-2.el7.noarch.rpm

slirp4netns-0.4.3-4.el7_8.x86_64.rpm

fuse-overlayfs-0.7.2-6.el7_8.x86_64.rpm

fuse3-libs-3.6.1-4.el7.x86_64.rpm

安装顺序,先安装依赖包,再安装docker软件。

常用 Docker 命令参考

# 查看 docker 版本

docker version

# 显示 docker 系统的信息

docker info

# 查看当前正在运行的容器

docker ps

# 故障检查

service docker status

# 启动关闭 docker

service docker start | stop

# 查看容器日志

docker logs -f <容器名 or ID>

# 清理命令,危险!!!

# 清理不用的容器

docker container prune

# 清理不用的镜像

docker image prune

# 清理不用的卷

docker volume prune

出现以上信息,表明docker 环境已经安装成功。

  1. 打包导出oceanbase-ce docker镜像

因docker所在的虚拟机不能联网,docker镜像也不支持web下载,只能使用docker pull方式下载,因此另找了一台能够联网

的LINUX虚拟机环境,安装docker环境下载导出镜像。

查询可用oceanbase的可用镜像

执行命令:docker search oceanbase

注:当前练习环境使用 老师视频讲座中推荐的obpilot/oceanbase-ce 镜像,大概2.25G

下载docker镜像 obpilot/oceanbase-ce

执行命令:docker pull obpilot/oceanbase-ce 下载所需镜像

执行命令:docker images 查看当前本地可用镜像

下面那个2.25GB的即为本次要打包的镜像

导出obpilot/oceanbase-ce镜像,执行命令:

docker save cfffed8802fd | gzip > docker-image-obce-230303.tar.gz

导出后文件大小800多M

5、上传导入oceanbase-ce docker镜像;

将打包好的obpilot/oceanbase-ce镜像上传到目标服务器,并执行导入命令:

docker load -i docker-image-obpilot-230303.tar.gz

Docker image查看导入的docker镜像

正常情况下,会发现查到的镜像“REPOSITORY”和“TAG”列是空值,通过下一步操作标记即可

标记本地镜像

# 镜像id可以写一部分

docker tag 943379e0b05b obpilot/oceanbase-ce:latest

Docker image再次查看导入的docker镜像,“REPOSITORY”和“TAG”显示正常

6、启动oceanbase-ce docker镜像

执行命令:

docker run -itd -m 20G -p 2881:2881 -p 2883:2883 --name oceanbase-ce obpilot/oceanbase-ce:latest

执行 docker ps命令,当前容器运行状态:

进入docker容器

执行命令:docker exec -it oceanbase-ce bash,进入上述运行容器:

安装相关的工具软件包

yum -y install sysvinit-tools net-tools tree

查看OceanBase工作目录结构

查看observer进程启动信息

执行命令: ps -ef | grep observer

查看observer进程监听端口

执行命令:netstat -tlnp | grep observer

7、创建资源单元、资源池、租户等资源;

使用obd命令

OBD全称是OceanBase Deployer,是OceanBase社区版的命令行下自动化部署软件。

如下为obd的常用法示例:

查看集群列表

执行命令:obd cluster list

启动集群:obd cluster start obdemo

从上图集群的启动过程可以看出,集群启动了observer和obproxy两项服务

再次查看集群状态,已经 处于running 状态了。

查看集群信息

执行命令:obd cluster display obdemo

注:如上所示,当前集群是一个单副本单节点+单proxy代理规模集群。

登录ob集群

使用obclient命令登录当前启动的集群。

obclient -h127.1 -P2883 -uroot@sys#obce-single -prootPWD123 -c -A oceanbase #密码为rootPWD123

--查看租户信息:

select pool.tenant_id, tenant.tenant_name,name as pool_name,unit_config_id, unit_count,

unit.unit_id,pool.zone_list, unit.svr_ip , unit.svr_port

from

__all_resource_pool pool inner join __all_tenant tenant on pool.tenant_id=tenant.tenant_id

inner join __all_unit unit on pool.resource_pool_id=unit.resource_pool_id

where pool.tenant_id>1000

order by tenant.tenant_name, zone_list;

目前还没有租户信息。

创建相关租户资源

创建租户所需的资源规格和资源池:

创建 resource unit(1C2G)

create resource unit mini max_cpu=1, min_cpu=1, max_memory='2G', min_memory='2G', max_iops=10000,

min_iops=1000, max_session_num=1000000, max_disk_size='4G';

创建 resource pool

create resource pool mini_pool_t1 unit=mini ,unit_num=1;

创建业务租户:

create tenant obcp_t1 charset='utf8mb4', replica_num=1, zone_list=('zone1'), primary_zone='RANDOM',

resource_pool_list=('mini_pool_t1') set ob_tcp_invited_nodes='%',ob_compatibility_mode='mysql';

8、创建数据库及表,插入数据测试等。

用新创建的租户重新登录数据库,连接新建业务租户:obcp_t1,默认连接密码为空

执行命令:obclient -h 127.0.0.1 -P 2883 -u root@obcp_t1#obce-single -c -A oceanbase

创建数据库:testdb

执行命令:create database testdb;

创建数据表:t1

执行命令:use testdb;

create table test1(id int primary key,name varchar(256),age int,sex int);

desc test1;

数据表插入查询操作:

insert into test1 values(1,'zhangsan',25,0),(2,'lisi',26,0),(3,'xiaoli',22,1);

select * from test1;

9、总结

本次主要体验的是使用docker镜像通过obd快速部署ob数据库,docker镜像安装后的测试过程都挺顺利的,前期准备工作比较耗时,

安装虚拟机软件,创建虚拟机,特别是离线方式下安装docker软件和导出导入上传docker镜像等容易出错,且耗费时间,需要耐心

细致的处理,也跟平时的知识积累熟练程度有关系,功夫在诗外,目的是l练习数据库,顺带把操作系统,虚拟化和docker的知识都

又重新梳理了一遍。不管怎么说,从零开始搭建一个oceanbase-ce docker测试环境,既有挑战性,也有满满的成就感。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论