【简介】

OBDeploy是OceanBase集群部署的工具,可以通过简单的几行命令,就能快速的进行OceanBase部署。但对于初学者来讲,可能会比较困惑,Deploy到底做了哪些事情?里面的具体步骤有哪些?虽然部署会成功,可能对于细节还是一头雾水。万一部署失败,排障的过程就会非常麻烦,所以我们尝试脱离OBDeploy,进行手工部署OceanBase集群,以了解一下具体的安装细节。

另外一方面,用OBDeploy部署,有一些莫名其妙的限制。比如目录是动态MD5生成,安装包是在/home/admin目录下,等等。这些限制对于标准化部署,可能不是那么标准。所以,脱离OBDeploy,部署OCeanbase,也有实际意义。

【场景选择】

OceanBase部署的场景很多,有单机,本机,群集,是否带OBProxy等等。在OBDeploy中,example目录下,有一些示例模板。

模板名称 说明
distributed-example.yaml 服务器内存>50G, 多节点部署
distributed-with-obproxy-example.yaml 服务器内存>50G,多节点部署,并且部署obproxy
local-example.yaml 服务器内存>50G, 本机单节点部署,只有一个zone
mini-distributed-example.yaml 服务器内存小,多节点部署。
mini-distributed-with-obproxy-example.yaml 服务器内存小,多节点部署。并且部署obproxy
mini-local-example.yaml 服务器内存小,本机单节点部署,只有一个zone
mini-single-example.yaml 服务器内存小,远程单节点部署,只有一个zone
mini-single-with-obproxy-example.yaml 服务器内存小,单节点部署,单zone,且部署obproxy
single-example.yaml 服务器内存>50G, 单节点部署,只有一个zone
single-with-obproxy-example.yaml 服务器内存>50G, 单节点部署,单zone, 有obproxy

这里,我们选择mini-distributed-example.yaml这个模板。Mini指的是我们服务器内存小,测试用途。实际规格是20C 256G,distributed指的是三节点部署。我们跳过obproxy的安装,因此选用该模板。 我们用RPM包的方式进行安装。

准备如下四台服务器:

SERVERA 	10.10.10.8	[中控机,可以用虚拟机,用于从外网下载RPM包,以及OBDEPLOY工具]
SERVERB 10.10.10.139
SERVERC 10.10.10.135
SERVERD 10.10.10.133

PS:SERVERB, SERVERC, SERVERD需要用物理机。虚拟机会在群集创建的步骤,非常容易超时,导致搭建失败

【环境准备】

1.在所有服务器上,创建用户obuser

sudo useradd obuser;  sudo passwd obuser

2.切换到obuser账号,创建SSH

ssh-keygen –t RSA

3.把obuser账号加入到sudoer中

sudo visudo

4.在中控机器上,.ssh目录下,复制key:

ssh-copy-id obuser@10.10.10.111
ssh-copy-id obuser@10.10.10.131
ssh-copy-id obuser@10.10.10.138

5.在中控机上,wget下载:

http://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/

这里选择的版本是当前的版本,如果有最新的,应该选择最新的版本:

libobclient-2.0.0-2.el7.x86_64.rpm
obclient-2.0.0-2.el7.x86_64.rpm
ob-deploy-1.0.2-2.el7.x86_64.rpm
obproxy-3.1.0-1.el7.x86_64.rpm
oceanbase-ce-3.1.0-2.el7.x86_64.rpm
oceanbase-ce-libs-3.1.0-2.el7.x86_64.rpm
oceanbase-ce-sql-parser-3.1.0-2.el7.x86_64.rpm

并把该下载的文件,传递到SERVERB, SERVERC, SERVERD上。

scp *.rpm obuser@10.10.10.111:~
scp *.rpm obuser@10.10.10.131:~
scp *.rpm obuser@10.10.10.138:~

【服务器准备】

1)在每台工作机上,修改环境变量:

sudo sed -i '$a vm.max_map_count=655360\nfs.aio-max-nr=1048576' /etc/sysctl.conf
sudo sed -i '$a* soft nofile 655350\n* hard nofile 655350\n* soft nproc 655360\n* hard nproc 655360' /etc/security/limits.d/20-nproc.conf
sudo sed -i '$a* soft nofile 655350\n* hard nofile 655350\n* soft nproc 655360\n* hard nproc 655360\n* hard core unlimited\n* soft core unlimited\n* hard stack 10240\n* soft stack 10240\n* hard cpu unlimited\n* soft cpu unlimited' /etc/security/limits.conf

并重启使得生效。

2)在每台工作机上,安装ocenabase:

sudo yum install oceanbase-ce-libs-3.1.0-2.el7.x86_64.rpm
sudo yum install oceanbase-ce-3.1.0-2.el7.x86_64.rpm

安装程序会把oceanbase安装到 /home/admin/oceanbase目录下。该目录并非是我们所期望的,所以做如下调整:

cd /home/obuser
sudo mv /home/admin/oceanbase .
sudo chown –R obuser:obuser /home/obuser/oceanbase

3)库路径处理

下面步骤需要操作一下,如果不处理的话,群集可能会搭建不起来。(虽然服务可以起来)。

sudo mv /home/obuser/oceanbase/lib /home/obuser/oceanbase/libs
ln –sf /home/obuser/oceanbase/libs /home/obuser/oceanbase/lib

在每台机器上, export环境变量LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/home/obuser/oceanbase/lib:$LD_LIBRARY_PATH 

或者可以直接修改.bashrc文件,使得一直生效。

我们可以运行下面命令:

/home/obuser/oceanbase/bin/observer –help 

来验证observer是否能打印帮助信息。

【数据目录准备】

在每台机器上,创建数据目录:

sudo mkdir /data/observer
sudo chown -R obuser:obuser /data/observer mkdir -p /data/observer/admin;
mkdir -p /data/observer/.conf
mkdir -p /data/observer/log;
mkdir -p /data/observer/store; mkdir -p /data/observer/store/sstable
mkdir -p /data/observer/store/clog
mkdir -p /data/observer/store/ilog
mkdir -p /data/observer/store/slog

备注,如果后续群集搭建不成功,需要将整个目录清空。所以需要准备好清理脚本:在重建之前,必须保持目录干净:

sudo kill -9 `pidof observer`
rm -fr /data/observer/log/*
rm -fr /data/observer/run/mysql.sock
rm -fr /data/observer/run/observer.pid
rm -fr /data/observer/store/clog_shm
rm -fr /data/observer/store/ilog_shm
rm -fr /data/observer/store/clog/1
rm -fr /data/observer/store/ilog/1
rm -fr /data/observer/store/slog/1
rm -fr /data/observer/store/sstable/block_file

【启动服务】

我们启动observer的时候,一定要到 /data/observer目录下进行启动。

cd /data/observer   // 要在该目录下启动服务

第一台服务器上,运行如下命令,启动:

/home/obuser/oceanbase/bin/observer -r '10.10.10.111:5022:2883;10.10.10.131:5022:2883;10.10.10.138:5022:2883’ -o datafile_size=16G,memory_limit=8G,system_memory=4G,stack_size=512K,cpu_count=8,cache_wash_threshold=1G,workers_per_cpu_quota=10,schema_history_expire_time=1d,net_thread_count=4,major_freeze_duty_time=Disable,minor_freeze_times=10,enable_separate_sys_clog=0,enable_merge_by_turn=False,datafile_disk_percentage=20,idc='idc1' -z 'zone1' -p 2883 –P5022 -c 11 -d /data/observer/store -i eth0 –n myapp –l ERROR

第二台服务器上,启动如下命令:

/home/obuser/oceanbase/bin/observer -r '10.10.10.111:5022:2883;10.10.10.131:5022:2883;10.10.10.138:5022:2883' -o datafile_size=16G,memory_limit=8G,system_memory=4G,stack_size=512K,cpu_count=8,cache_wash_threshold=1G,workers_per_cpu_quota=10,schema_history_expire_time=1d,net_thread_count=4,major_freeze_duty_time=Disable,minor_freeze_times=10,enable_separate_sys_clog=0,enable_merge_by_turn=False,datafile_disk_percentage=20,idc='idc2' -z 'zone2' -p 2883 –P5022 -c 11 -d /data/observer/store -i eth0 –n myapp –l ERROR

第三台服务器上,启动如下命令:

/home/obuser/oceanbase/bin/observer -r '10.10.10.111:5022:2883;10.10.10.131:5022:2883;10.10.10.138:5022:2883' -o datafile_size=16G,memory_limit=8G,system_memory=4G,stack_size=512K,cpu_count=8,cache_wash_threshold=1G,workers_per_cpu_quota=10,schema_history_expire_time=1d,net_thread_count=4,major_freeze_duty_time=Disable,minor_freeze_times=10,enable_separate_sys_clog=0,enable_merge_by_turn=False,datafile_disk_percentage=20,idc='idc3' -z 'zone3' -p 2883 –P5022 -c 1 -d /data/observer/store -i eth0 –n myapp –l ERROR

服务启动应该不会有什么问题,也很少会报错。

【群集搭建】

群集启动后,我们用如下命令进行登录:

Mysql –h 10.10.10.111 –port 2883 –u root

登录后,执行下面的命令创建群集

alter system bootstrap REGION "sys_region" ZONE "zone1" SERVER "10.10.10.111:5022",REGION "sys_region" ZONE "zone2" SERVER "10.10.10.131:5022",REGION "sys_region" ZONE "zone3" SERVER "10.10.10.138:5022";

这步在物理机上,一般耗时30秒左右。但如果是虚拟机的话,可能部署的时间会更长。系统超时是10分钟。如果部署条件不符合的话,最终的结果也是超时,所以,如果创建集群超过3分钟都还没有完成的话,应该是前面的配置出现问题了。

脱离OBDeploy工具,手工部署OceanBase方法的更多相关文章

  1. 手工部署Sqlserver CLR程序集

    原文 手工部署Sqlserver CLR程序集 以前一直用VS部署Sqlserver CLR程序集简单省事,现在服务器部署在内网了,必须手动更新部署Sqlserver CLR程序集.    开始以为A ...

  2. Intellij IDEA 4种配置热部署的方法【转】【补】

    热加载 热加载可以使代码修改后无须重启服务器,就可以加载更改的代码.(其实分java和非java代码,本处可以让java代码立即生效且不重启服务) 第1种:修改服务器配置,使得IDEA窗口失去焦点时, ...

  3. Kubernetes 基于 ubuntu18.04 手工部署 (k8s)

    由于工作的需要, 手工部署一个 Kubernetes 环境(k8s).(以前都是云上搞定,拿来用) 习惯把这种工作记录下来,自己备查也和别人分享 网上相关文章很多, 我也参考了很多,这里推荐一个 链接 ...

  4. Java 使用Redis缓存工具的图文详细方法

    开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java. (1)Java的安装配置可以参考我们的 Java ...

  5. C#脱离Halcon编程开发环境使用方法

    在没有安装Halcon开发程序(HDevelop (SSE2))的电脑上面编程,使C#脱离Halcon编程开发环境使用方法,除了按照Halcon与编程环境必须要做的设置步骤外,还需要做如下两个工作: ...

  6. Java基础知识强化之集合框架笔记33:Arrays工具类中asList()方法的使用

    1. Arrays工具类中asList()方法的使用 public static <T> List<T> asList(T... a): 把数组转成集合 注意事项: 虽然可以把 ...

  7. Linux性能分析工具与图形化方法

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~. 作者:赵坤|腾讯魔王工作室后台开发工程师 在项目开发中,经常会遇到程序启动时间过长.CPU使用率过高等问题,这个时候需要依靠性能分析工具来 ...

  8. Hutool工具里,POST方法,body中传参的几种调用方法

    接口说明: POSTMAN测试: JAVA代码: package com.provy.guard.api; import java.util.HashMap; import java.util.Map ...

  9. Docker 管理工具 Portainer部署

    Docker 管理工具 Portainer部署 一.官网 官网:http://www.portainer.io 演示地址:http://demo.portainer.io 用户名:admin 密码:t ...

随机推荐

  1. Dubbo以及Zookeeper安装

    1.什么是Dubbo? Apache Dubbo 是一款高性能.轻量级的开源 Java 服务框架 提供了六大核心能力:面向接口代理的高性能RPC调用,智能容错和负载均衡,服务自动注册和发现,高度可扩展 ...

  2. Could not get JDBC Connection排查

    最近在维护的一个比较旧的项目,发现总是隔一段时间JDBC就报错: Could not get JDBC Connection; nested exception is org.apache.commo ...

  3. 面阿里P7,竟问这么简单的题目?

    关于作者:程序猿石头(ID: tangleithu),来自十八县贫困农村(查看我的逆袭之路),BAT某厂P7,是前大疆(无人机)技术主管,曾经也在创业公司待过,有着丰富的经验. 本文首发于微信公众号, ...

  4. 使用Jprofiler分析Java项目的内存开销情况并利用强制回收控制内存

    一.问题背景 自己开发的Java项目中占用太多的Heap Space.即使在Eclipse的虚拟机参数中设置"-Xms128m -Xms2048m -XX:MetaspaceSize=512 ...

  5. 3D Cube计算引擎加速运算

    3D Cube计算引擎加速运算 华为达芬奇架构的AI芯片Ascend910,同时与之配套的新一代AI开源计算框架MindSpore. 为什么要做达芬奇架构? AI将作为一项通用技术极大地提高生产力,改 ...

  6. NSight Compute 用户手册(中)

    NSight Compute 用户手册(中) NVIDIA Nsight Compute支持密码和私钥身份验证方法.在此对话框中,选择身份验证方法并输入以下信息: 密码 IP/主机名:目标设备的IP地 ...

  7. jquery给动态生成的元素绑定事件,on函数

    首先先解释一下什么是动态生成的元素:动态生成的元素即我们用jquery的内部插入函数append()所生成的html代码.相对的也有静态生成的元素:即直接编写在页面的html代码. 下面通过例子来讲解 ...

  8. Java IO学习笔记二:DirectByteBuffer与HeapByteBuffer

    作者:Grey 原文地址:Java IO学习笔记二:DirectByteBuffer与HeapByteBuffer ByteBuffer.allocate()与ByteBuffer.allocateD ...

  9. 信道均衡之非线性均衡——Tomlinson-Harashima Precoding(THP)

    线性均衡可以做在接收端,也可以做在发送端,而DFE只能做在接收端.对于DFE的讨论都是建立在判决器能够判决正确的情况下,但是如果每一个发送的符号含有多比特信息,比如PAM16,由于发送信号的最大能量是 ...

  10. NX二次开发-曲线或边分析函数

    UF_EVAL_is_arc   判断是圆形曲线或边UF_EVAL_ask_arc 圆形曲线或边分析,得到曲线或边的信息 类似的函数还有以下这些: UF_EVAL_is_ellipse // 椭圆UF ...