资讯专栏INFORMATION COLUMN

带大家一步步进行OceanBase集群环境安装部署

IT那活儿 / 4282人阅读
带大家一步步进行OceanBase集群环境安装部署
亲爱滴伙伴们,大家期待已久的OceanBase集群部署介绍来了,接下来由我为大家一步步搞起。



[概述]



近期由于工作原因,需要部署OceanBase集群,而且自己对于OB的集群部署也很感兴趣。
其实阿里云推出了可以实验的环境

https://edu.aliyun.com/lab/courses/f872323bb73a49d4b14ab7b801b3ad86/detail?purchaseRecordId=d288f91e20774539a77e41a89880711d&spm=5176.12901015.0.i12901015.5d39525c5k990T

但是要89块大洋,而且只有三个小时的实验时间,虽然时间足够,但是对于第一次部署的童鞋只要遇到一些坎,就可能在三小时内实验不完,不过部署手册的资料是一直可以学习的,可以熟悉之后再去动手。(ps:阿里云实验环境的环境比较理想,所以安装遇到的问题很少,后续我会为大家再奉献一篇本地部署的时候踩过的坑)

那我这里就借花献佛,用阿里云实验提供的资料为大家介绍下如何配置OCP如何部署集群。



[实验]



部署集群步骤一般如下:

检查主机环境划分存储->服务器环境配置->ocp部署->通过ocp部署OB集群->创建租户


一. 主机环境

1. 主机环境:

2. 需要软件包:

存储划分:

OCP 服务器 :

100G , 给/home 使用
200G,  给/data/log1 使用
100G,   给/data/1使用

200G, 给/docker 使用

fdisk --查看磁盘,阿里云实验环境预留的是/dev/vdb 650G的盘
fdisk  /dev/vdb  --分区
n
1-4(第几个分区就填几,默认也可以)
+100G(划分的大小)

划分好后检查下
fdisk -l

对分区格式化
mkfs.ext4 /dev/vdb1
mkfs.ext4 /dev/vdb2
mkfs.ext4 /dev/vdb3
mkfs.ext4 /dev/vdb4

根据划分大小挂载目录
mkdir /data/
mkdir /data/log1
mkdir /data/1
mkdir /docke
mount /dev/vdb1  /home
mount /dev/vdb2 /data/log1
mount /dev/vdb3 /data/1
mount /dev/vdb4 /docker
修改/etc/fstab
vi /etc/fstab

OBserver服务器存储划分,操作与OCP类似:

3. 服务器环境

在每台服务器的/root目录下创建 t-oceanbase-antman 目录,并将相应的安装包上传到该目录。

1)在 OCP 与 OceanBase 的服务器上都安装自动化部署工具,例如:

# rpm -ivh t-oceanbase-antman-1.3.3-1896174.alios7.x86_64.rpm

2)为每台服务器都添加 admin 用户 :

#cd /root/t-oceanbase-antman/clonescripts

#./clone.sh -u

默认密码是 admin,  建议立刻修改。

3)对每台服务器的操作系统内核进行设置 :

#cd /root/t-oceanbase-antman/clonescripts

OCP 服务器:# ./clone.sh -r ocp -c

OceanBase 服务器:# ./clone.sh -r ob -c

4)安装依赖包

OCP 服务器:# ./clone.sh -r ocp -m

OceanBase 服务器:# ./clone.sh -r ob -m

5)配置 NTP 时钟同步,保证所有节点的时钟偏差在 100ms 以内

选择一台服务器作为 NPT server (例如 OCP 172.18.6.38) , 确认本地的时间设置(date 命令) ,然后修改/etc/ntp.conf 文件。建议将原 ntp.conf 改为 ntp.conf.bak  (命令:mv ntp.conf  ntp.conf.bak), 然后用 vi 创建新的 ntp.conf:
将自己设置为 ntp server,并允许 172.18.0.0 网段的 ntp client 访问(这里的NTP client 例如是 OB):

restrict 172.18.0.0 mask 255.255.0.0 nomodify

server 127.127.1.0

fudge 127.127.1.0 stratum 10

其它所有服务器作为 NTP client,同样建议将原 ntp.conf 改为 ntp.conf.bak  (命令:mv ntp.conf  ntp.conf.bak), 然后用 vi 创建新的 ntp.conf:

server 172.18.6.38

fudge 172.18.6.38 stratum 10

修改之后记得重启 ntp 服务:service ntpd restart
然后用 ntpstat, ntpq -np 等命令查看同步状态。

6)在 ocp服务器上安装 docker

OCP 服务器:# ./clone.sh -i

7)部署前环境检查

OCP 服务器:sh precheck.sh -m ocp

OceanBase 服务器:sh precheck.sh -m ob

在检查的最后,会将所有存在的问题一并列出,并且给出解决建议。可以参照建议解决问题,并再次运行环境检查。
这里实验环境因为使用最小资源配置,自检的时候可能会有资源方面的告警(mem,disk),可以忽略。


二. ocp部署

OCP 有单节点和三节点两种部署模式,在实验环境中,我们使用单节点模式。

1. 生成 OCP 的配置文件

    # cd /root/t-oceanbase-antman

       #bash init_obcluster_conf.sh

填写正确 OCP 服务器的 ip、root 和 admin 用户的密码。单节点的负载均衡模式是 none。(云主机可以填写私网 ip, OCP 和 Observer 之间全部使用私网 IP 通信)

下面配置 OCP 服务器上各个 Docker 的资源( OCP Docker, OB Docker, OBProxy Docker) ,  默认可能是以下配置: 

 因为我们的云主机总容量是 16C64G,650GB 磁盘, 所以采用以下配置:

OB_docker_cpus=16 ,   OB_docker_memory=60G

OCP_docker_cpus=8 , OCP_docker_memory=16G

OBProxy_docker_cpus=4 ,  OBProxy_docker_memory=2G

 详情见前面 章节的描述。

另外是修改安装软件的版本信息,根据你获得的实际软件的情况修改:  (以下样例针对的是前面章节中列出的安装文件对应的信息)

 image_package填写你获得安装软件的名称,例如:

ob-docker2273_202101.tar.gz

obproxy-docker173_20200603.tar.gz 

ocp-all-in-one251-20210223.tar.gz

 REPO 和 TAG 可以填写如下的信息:

 reg.docker.alibaba-inc.com/antman/ob-docker:OB2273_x86_20201214

reg.docker.alibaba-inc.com/antman/obproxy:OBP173_20200603_1923

 reg.docker.alibaba-inc.com/oceanbase/ocp-all-in-one:2.5.1-1922379

         

完成配置后进行保存。  OCP的配置文件在/root/t-oceanbase-antman 目录下, 2.X 版本的名称是 obcluster.conf,也可以手工进行修改。 


另外我们的云主机是用的最小资源(16C64G,650GB),所以我们需要额外的多做一些配置。(生产环境标准配置不需要做以下这些)

我们需要将sys(500租户)默认的 50G 内存,改为 15G, 修改 install_OB_docker.sh   

76行和100行(请注意要修改的是两行):

-e OPTSTR="cpu_count=$OB_docker_cpus,memory_limit=$OB_docker_memory,__min_full_resource_pool_memory=1073741824,_ob_enable_prepared_statement=false,memory_limit_percentage=90"

改成

-e OPTSTR="cpu_count=$OB_docker_cpus,memory_limit=$OB_docker_memory,__min_full_resource_pool_memory=1073741824,_ob_enable_prepared_statement=false,memory_limit_percentage=90,system_memory=15G"

 

另外新版本的 install.sh 文件会检查 system_memory, 我们需要注释掉检查的这一行:

修改install.sh , 注释掉1330行

# system_memory is 50G default

#[ "${OB_docker_memory%G}" -lt 64 ] && { antman_log "docker ob default system_memory is 50G, docker memory limit(${OB_docker_memory}) too small." "ERROR"; exit 1;  }

2. 开始部署 OCP

        可以先查看一下 OCP 部署的命令帮助

        #  cd /root/t-oceanbase-antman

       #  ./install.sh -h

        可以看到 OCP 的安装需要 8 steps 。下面执行 OCP 安装  

       # ./install.sh -i 1-8     <-------执行 1-8 步

看到以上信息,表示 OCP 部署已完成。如果中间失败,可以根据提示解决问题,然后再次从失败的step 再次执行。(如果要回退或卸载 OCP,使用 ./install.sh -c 1-X )

 3.  部署后检查

OCP 的访问地址: http:// : 8080  <----云主机的话注意安全策略放开 8080 端口

默认用户名 admin, 密码 root。

打开 ocp的 web 管理页面后, 就有一个集群和 3 个租户存在。(见前面章节的描述)


三. 通过ocp部署OB集群

下面可以通过 OCP 完成“添加主机“,“创建 OB 集群”,”部署 OBProxy”三个步骤。

1. 添加主机

首先添加主机,将 3 台 oceanbase 服务器主机添加进来。这里可以设置服务器型号,所在机房和区域等。

这里要填写机型、机房/区域等信息, 如果在生产环境, 应该根据是实际情况填写。例如生产环境有 100多台服务器, 有浪潮、联想、阿里、华为不同品牌,那就创建不同的机型。生产环境是三地五中心 (北京:西单、上地, 杭州:西湖区、余杭区, 深圳:前海) , 就按照实际情况创建机房(idc)/区域(region)等。 

     在实验练习环境, 你可以根据自己的想象构建一个虚拟业务环境,用以模拟生产的环境。例如 3 台服务器,1 台型号是阿里的,部署在杭州西湖区, 2 台型号是浪潮,部署在杭州余杭区。  

    选择凭据:这里其实就是写主机的登录用户信息,大家选择创建一个凭据,然后选择 root 用户,输入你的几台 OB 服务器 root 用户的密码。

2. 创建 OB 集群

 创建 OB 集群,按照要求的填写好相应信息。

创建集群的时候设置 primary zone 的优先级,这里的设定是给 sys 租户的。新版本只允许primaryzone有 1 台服务器。

 在实验环境(4C16G)的上面部署 OB 集群,需要限制资源的使用, 打开下面的“高级设置”,并且填写以下的参数(生产环境一般不需要):

memory_limit = 15G;
system_memory = 5G;
cpu_count=32;
__min_full_resource_pool_memory=2147483648;
cache_wash_threshold=2GB;
net_thread_count=8;
workers_per_cpu_quota=4;
stack_size = 512K;

 提交后可以到任务中查看部署进展,如果在某一步遇到问题,可以点击“查看日志”.

 

小 Tips:

       如果 OB 部署出现一些基础问题,例如说的磁盘挂载点没有配置好。可以采用以下的步骤:

  • OCP 上放弃创建集群的任务
  •  OCP 上删除主机
  • 黑屏登录 OB 服务器,调整基础的配置, 然后删除/data/1, /data/log1, /home/admin 下面残存的安装遗留文件(rm -rf )
  • 重启一下 OB 服务器 。(切莫忘记NTP时钟同步,重启完成后记得 service ntpd start, 以及 ntpstat, ntpq -np 等命令检查时钟)
  • 从新在 OCP 白屏上添加主机、创建集群等。

在生产环境,OBProxy 可能需要独立部署。在实验练习环境,我们将 oceanbase 和 OBProxy 部署在一起。可以在 3 台 OB 上都部署一个 OBProxy.    

3. OCP 页面添加 OBProxy 集群

访问地址参数:在生产环境, 多台 obporxy 前可以有一个 F5均衡, F5均衡对外提供一个 ip地址,这里的访问地址参数就是F5 对外的 IP。我们实验环境没有 F5,那就选择一个 obproxy 的地址填写即可。

如果是云主机(4C16G)部署, 点击下面的参数设置, 增加一个参数,限制 OBProxy 最大可使用的内存。(只是最大值,并不是实际分配或者使用值)

4. 创建租户

实验环境中需要打开一个 OCP 的开关 

因为规格过小的租户产生了很多不必要的问题,所以 OB 与 OCP 上都对租户的规格做了限制。

OB 的 2.X 版本之后,默认只能创建 5G 以上的租户。在我们实验环境创建集群的时候,我们将这个限制参数调整成了 2G,也就是可以创建 2G 的租户。(见前面章节部署 OB 集群的参数设置)

最新的OCP2.5版本在创建租户时进行自定义 Unit规格,默认将小于 5G 内存的 unit 屏蔽了,因为生产环境中创建过小的资源用户产生了很多不必要的问题。在 OCP 2.5.1之后增加了一个开关,打开该开关后在 OCP 上小于 5G 的 unit 才会显示出来。(该操作仅限于演示或实验环境)  

首先需要获得 OCP 所使用的metadb数据库的登录密码:

       cd /root/t-oceanbase-antman/tools,
       执行./getpass.sh,获得meta密码

登录到 OCP 的 metadb 数据库, 并打开开关 : 

     mysql -h -P2883 -uroot@ocp_meta#obcluster -p<密码>
     show databases;
     use ocp ;
     select * from config_properties where `key` like %small% G ;  <----因为 key 是一个关键词,要在前后加着重号(数字键 1 旁边的反引号` )

  

      update config_properties set value=true where `key` like %small% ;  <----将这个开关打开 。

云主机(4C16G)的请注意以下事项:

1)创建普通租户的时候请注意限制大小, 每个租户CPU 可以设置为 5, 内存不要超过 2G 。
  • 云主机 是4C16G
  • 我们创建集群的时候设定 observer 的内存(memory_limit)是15 G.
  • 系统租户内存(ID500租户 system_memory)我们设定的是5G (15-5=10)
  • 管理 sys(ID1租户)  租户默认是内存是 2-3, 一般是用了2.5G (15-5-2.5=7.5)
  • 剩下来给普通租户的已经是 7.5G 了。 可以创建 3 个2G租户。

2)sys管理租户(ID1 租户)占用内存2.5G, 可以再降低到 2G,再释放0.5,  这样的话可以再多创建一个2G 的普通租户。(可选)

白屏中看管理 sys 租户的资源,可以在白屏直接修改

也可以在黑屏中修改:

select * from __all_unit_config ;    <---查看所有的 unit 规格配置,其中 sys_unit_config 是系统 sys 管理租户使用的Unit 。
alter resource unit sys_unit_config max_memory=’2G’ ,min_memory=’2G’, max_cpu=5, min_cpu=5 ;

 

 在白屏界面上可以直接创建租户,也可以使用命令在黑屏创建租户, 黑屏创建租户样例: 

创建 unit(5C2G):   

create resource unit mini  max_cpu=5, min_cpu=5, max_memory=2G, min_memory=2G, max_iops=10000, min_iops=1000, max_session_num=1000000, max_disk_size=10G;

创建 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,zone2,zone3), primary_zone=zone1,zone2,zone3, resource_pool_list=(mini_pool_t1) set ob_tcp_invited_nodes=%;

创建Oracle 租户:

create tenant obcp_t1 charset=utf8mb4, replica_num=1, zone_list=(zone1,zone2,zone3), primary_zone=zone1,zone2,zone3, resource_pool_list=(mini_pool_t1) set ob_tcp_invited_nodes=% , ob_compatibility_mode=oracle;


在黑屏创建好租户后,在 OCP 白屏也会看得到,不过同步需要一点点时间。

OceanBase 的基础安装和配置基本就完成了,下面大家可以开始其它的实验练习了。


补充:云主机实验环境,在 sys 租户下执行这两个命令。因为我们实验环境留给log的空间比较小,避免被 log日志塞满。以下两条命令是启动日志文件循环,并且只保留 10 个日志文件。 

alter system set enable_syslog_recycle=true;

alter system set max_syslog_file_count=10;



[结论]



OceanBase的安装部署还是很简单的,尤其是现在官方提供了比较详细的资料,但是实验环境比较理想,实际环境中安装还是会遇到各种问题,大家有机会可以自己搭建下对于理解OB的架构有些帮助,下次给大家分享我遇到的一些小问题及解决方法。实验环境一般也不会部署oms迁移工具,后续我会给大家介绍下通过dbcat+datax从oracle迁移数据到OB。

努力晨昏事,躬行味始长 --诸位共勉。


END


更多精彩干货分享

点击下方名片关注

IT那活儿

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129864.html

相关文章

  • 厉害了,蚂蚁金服!创造了中国自己的数据库OceanBase(下)

    摘要:技术成就划时代的分布式数据库通过核心业务的不断上线,蚂蚁金服帮助渡过了自研基础软件产品最艰难的应用关。年天猫双十一,支付宝创造了万笔每秒支付峰值的业界新纪录,这对于数据库来说,意味着每秒需要同时运行万条。 技术成就:划时代的分布式数据库 通过核心业务的不断上线,蚂蚁金服帮助OceanBase渡过了自研基础软件产品最艰难的应用关。OceanBase不只是被研发出来的,更是被用出来的,是在...

    shiina 评论0 收藏0
  • 性能跃升50%!解密自主研发的金融级分布式关系数据库OceanBase 2.0

    摘要:小蚂蚁说相信大家对蚂蚁金服自主研发的金融级分布式关系数据库的故事不再陌生了。文末有彩蛋在普通硬件上提供极限性能的数据库服务是完全自主研发的金融级分布式关系数据库,从架构上可以通过扩展机器来解决集群服务能力的扩展需求。 小蚂蚁说:相信大家对蚂蚁金服自主研发的金融级分布式关系数据库OceanBase的故事不再陌生了。在刚刚过去的2018年天猫双11中,成交额2135亿再次创造了新纪录,而支...

    UsherChen 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<