【TcaplusDB知识库】部署TcaplusDB Local 版的准备操作

1. 版本介绍

TcaplusDB Local版,是为用户提供的一个满足本地开发调试的版本(基于Docker部署的可下载版本),相比腾讯云 TcaplusDB 版,本地版可以方便用户在无法连通云环境的开发环境进行代码调试,同时在功能上和腾讯云版本无差别。此文档主要介绍用户如何在本地开发环境部署 TcaplusDB 本地 Docker 环境。

部署过程中如遇到问题,可先查阅7. 常见问题列表,列表没有解决方案时,可联系TcaplusDB团队协助解决。

2. 版本兼容性说明<div id="2"></div>

目前已经在下列环境做过兼容性测试,建议尽量在进行过兼容性测试的环境上部署TcaplusDB的Local版。

已完成兼容测试的环境
Windows10 + WSL2(CentOS 7)
MAC + Parallels + Debian
CentOS 7
TLinux1.2/TLinux2.2

TcaplusDB Local版,要求是在Linux环境以Docker容器的方式运行,如果机器为Windows或者MAC,则先在这些系统上运行Linux虚拟机或者WSL(Windows),再在虚拟机中拉起Docker容器。

在未进行兼容性测试的环境部署TcaplusDB Local版,可能会出现一些未知兼容性问题。

3. 版本部署环境要求

  • 部署机器的CPU应当不少于4核,内存总容量不少于8G,启动TcaplusDB Local版容器之前,内存的空闲容量不少于6G。

  • 部署机器磁盘大小建议 100G,存放Docker容器的磁盘可用空间应当大于 50GB。

  • 部署机器需要提前安装Docker。

  • 创建Docker容器的用户必须具有通过sudo执行docker命令的权限。

  • 部署机器应当关闭了SELinux。

  • 如果部署机器是Windows + WSL2,则应当正确设置vsyscall,设置方法参见附件3

  • 如果部署机器是Debian(或者Debian虚拟机),则应当正确设置vsyscall,设置方法参见附件4

4. 版本部署

4.1. 部署环境检查和准备

下载环境扫描脚本。

wget https://tcaplus-tools-1301716906.cos.ap-guangzhou.myqcloud.com/tcaplus_tools.sh

运行环境扫描脚本,扫描环境资源,并检查是否满足TcaplusDB Local版最低运行要求。

sh tcaplus_tools.sh check_environment

环境扫描结果样例:

Environment Information: 
  OS                       : Tencent tlinux release 2.2 (Final)
  CPU Arch                 : x86_64
  CPU Cores                 : 8
  Memory Total (MB)         : 15787
  Memory Free (MB)         : 1025
  Memory Cached (MB)       : 4542
  Disk Free (MB)           : 15787
  Docker Version           : Docker version 18.09.7, build 2d0083d
  LDD Version               : ldd (GNU libc) 2.17
  GCC Version               : gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)
  G++ Version               : g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)
  Go Lang Version           : Not found
  Java Version             : Not found
  Python Version           : Python 2.7.5
  SELinux Setting           : Disabled

环境扫描结果各项指标参考值:

指标 参考值
OS 参见版本兼容性说明
CPU Arch x86_64
CPU Cores >= 4
Memory Total(MB) >= 8192 (8G)
Memory Free(MB) >= 6144 (6G)
Disk Free(MB) >= 51200 (50G)
Docker Version 建议 >= Docker 1.13.1 或者 >= Docker CE 18.09.7 安装方法参见附录1
SELinux Settings Disabled 关闭方法参见附录2

TcaplusDB的一些进程依赖于 mdadm, 如果部署机器默认没有安装,就需要手动安装一下。

#centos
yum install -y mdadm
#debian
apt-get update
apt-get install -y mdadm

4.2. 检查Docker是否启动

登录部署机器。

检查Docker服务是否安装并已正常启动。Docker的安装参见附录1

# 查看Docker服务状态,检查服务是否已经启动
sudo service docker status

# 启动Docker服务命令
sudo service docker start

4.3. 下载并导入Local版镜像

下载TcaplusDB Local版镜像。

wget https://tcaplus-docker-1301716906.cos.ap-guangzhou.myqcloud.com/tcaplusdb-local-3.53.1.tar.gz

导入TcaplusDB Local版镜像到本地Docker镜像库。

sudo docker load -i tcaplusdb-local-3.53.1.tar.gz

查看本地Docker镜像库,检查镜像是否导入成功。

sudo docker images

本地Docker镜像库,如出现对应的镜像信息,即表示导入成功。

REPOSITORY                                               TAG                 IMAGE ID            CREATED             SIZE
tcaplusdb-local 3.53.1 34c03389c8d3 3 days ago 6.74GB

4.4. 创建Local版容器

容器创建命令样例:

sudo docker run -itd --shm-size=2G --privileged -e TCAPLUS_CONTAINER_PUBLIC_IP="x.x.x.x" -e TCAPLUS_CONTAINER_OMS_PASSWORD="***" -p 80:80 -p 9999:9999 -p 13755-13765:13755-13765 --name test tcaplusdb-local:3.53.1

客器启动参数说明:

参数 说明
--shm-size=2G 【可选】指定容器的共享内存大小,最低要求为2G,当未指定或者容器启动的时候检测到共享内存小于2G时,会强制设置成最小值2G。
--privileged 必选】指定以特权模式启动容器,TcaplusDB Local版启动时会涉及一些系统参数的修改,如果不以特权模式启动容器,会导致启动失败。
--name test 必选】指定容器名称。后续可以直接将该名称作为查看容器日志,启停容器的参数。
-e TCAPLUS_CONTAINER_PUBLIC_IP="x.x.x.x" 【可选】指定TcaplusDB容器对外提供服务的IP,如果需要在容器外访问TcaplusDB,则需要设置,该值一般为母机的对外IP。
-e TCAPLUS_CONTAINER_OMS_PASSWORD="***" 必选】指定TcaplusDB OMS默认用户tcaplus的登录密码。出于安全考虑,TcaplusDB容器并不提供默认登录密码,需要用户在容器启动的时候指定。 【说明】TcaplusDB服务启动之后,用户可以通过tcaplus用户名和该密码登录TcaplusDB OMS页面。
-p 80:80 -p 9999:9999 -p 13755-13765:13755-13765 【可选】以bridge网络模式运行容器的时候,如果需要在容器访问服务,则需要通过-p将容器内的端口与母机的端口建立映射关系,在容器外,通过母机的端口访问即可。 【说明】目前TcaplusDB Local版需要对外暴露的端口主要有80,9999,13755-13765,TcaplusDB监听的端口及说明见附件5
tcaplusdb-local:3.53.1 必选】镜像名和Tag。
--cpus=4 【可选】如果有必要,可使用该参数指定容器可使用的CPU核数,参数值应当大于等于4。
--memory=8G 【可选】如果有必要,可使用该参数指定容器可使用的内存容量,参数值应当大于等于8G。
--storage-opt size=50G 【可选】如果有必要,可使用该参数指定容器可使用的磁盘容量,参数值应当大于等于50G。 【注意】部分Docker版本,默认情况下,容器可使用的磁盘容量为10G,会出现服务运行一段时间后,磁盘很快就满的情况,此时应当通过该参数增加磁盘容量。
--network 自定义网络名 【可选】在一些环境下,可能存在母机网段与容器默认网段冲突的情况,此时应当创建自定义Docker网络,并通过该参数指定容器使用该网络,避免网络冲突。 【说明】Docker容器通常默认为容器网段为192.168或者172.17,当母机正好也处在这些网段时,应该创建一个与母机网段不同的Docker网络,如母机的网段为172.17,则可创建一个192.168网段的Docker网络,并在创建容器时,指定使用该网络。Docker网络的创建方法参考附录6

更多容器参数及说明参见:

sudo docker run --help

容器创建后会自动启动TcaplusDB服务,此时可通过“docker logs”命令查看服务启动日志,以了解服务启动进度和状态,通常服务的启动时间大约为30秒。

当容器启动日志最后出现“Run Success”字样时,即表示服务已经启动成功,可提供服务了。

sudo docker logs 容器名

4.5. 进入Local版容器

如果有需要进入容器查看信息或者定位问题,可执行下面的命令进入。

sudo docker exec -it 容器名 /bin/bash

4.6. 停止Local版容器

如果容器使用完毕,需要暂时关闭,释放资源,可以执行下面的命令关闭。

sudo docker container stop --time=60 容器名

注意,由于TcaplusDB进程退出需要一定时间,如果强制关闭,会导致数据引擎文件损坏,进而影响容器的再次启动。这里需要指定显示指定关闭超时时间为60秒,防止TcaplusDB进程还没正常关闭退出,就被Docker强制杀死的情况(Docker默认关闭超时时间10秒,时间到了之后,容器如果还未关闭退出,就会被强制关闭)。

4.7. 启动Local版容器

针对已经关闭的容器,如果想再次拉起服务,可以执行下面的命令启动。

sudo docker container start 容器名

4. 版本测试

版本部署完成后,可通过SDK,OMS等方式连接TcaplusDB,进行数据读写或者集群管理。

TcaplusDB Local版默认创建了测试业务,游戏区和表,可登录Tcaplus OMS查看相关信息。

4.1. 通过OMS运维连接

此部分请参考:使用TcaplusDB OMS控制台

OMS的登录地址为http://<host>:<port>。基中host为TCAPLUS_CONTAINER_PUBLIC_IP(如果有指定)或者母机的IP。port为容器的80端口映射到母机的端口号。

登录OMS的默认用户名为tcaplus,密码为启动容器的时候指定的TCAPLUS_CONTAINER_OMS_PASSWORD参数值。

4.2. 通过SDK方式连接

此部分请参考: TcaplusDB入门

5. 版本下载

版本号 下载链接 功能说明
3.51.1 下载 基线版本,包含Tcaplus 3.51.1全功能集。 API:C++/Go/Java SDK,Web Service,RESTful,CGI。
3.53.1 下载 增加标准SQL访问接口,提供JDBC Driver,C++ Driver。

6. 附录

6.1. 安装Docker<div id="6-1"></div>

Docker 安装一般通过系统命令来安装,如 yum、apt-get 等,以 CentOS7举例,安装方式如下:

# CentOS 7环境,CVM实例
yum install -y docker

# Debian 8.2环境
apt-get update
apt-get install -y docker-ce containerd.io

# CentOS 8环境,CVM实例,用dnf来安装
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
dnf repolist -v
dnf list docker-ce --showduplicates | sort -r
dnf install docker-ce --nobest

注意:在安装Docker过程中,注意镜像源的配置,可参考网上相关文档资料,配置成国内镜像源。

安装完Docker之后,可以用docker命令检查是否安装成功。

安装成功,则执行如下命令启动 docker 服务。

# 启动Docker服务
sudo service docker start

6.2. 关闭SELinux<div id="6-2"></div>

查看SELinux状态。

getenforce

临时关闭。

setenforce 0

永久关闭。编辑/etc/selinux/config文件,设置SELINUX=Disabled,重启机器。

6.3. 设置vsyscall(Windows + WSL2)<div id="6-3"></div>

在Windows 10 操作系统的系统盘- 用户 - <用户名>目录下,修改.wslconfig文件(如C:\Users\test\.wslconfig),若没有这个文件,则需要先创建。

在其中修改/添加如下内容:

[wsl2]
kernelCommandLine = vsyscall=emulate

6.4. 设置vsyscall(Debian)<div id="6-4"></div>

参见说明

6.5. 容器内监听的端口及说明<div id="6-5"></div>

端口 组件 说明
21 SFTP FTP服务端口。 新搭建一个FTP,是为了解决tcm自带的传包功能速度慢的问题
80 TcapOMS OMS HTTP服务端口
443 TcapOMS OMS HTTPS服务端口
3306 MySQL MySQL数据库服务端口
4500 Tcapdb Tcapdb服务端口
6000 Tcapcenter Tcaplus Center服务端口
8899 Tcenterd Tcenterd服务端口
9010 Tconnd Tconnd服务端口
9017 Tbuspp Tbuspp服务端口
9020 Tbuspp Tbuspp服务端口
9200 Elasticsearch Elasticsearch服务端口
9300 Elasticsearch Elasticsearch服务端口
9898 Tcapdir Tcaplus Dir服务端口
9999 Tcapdir Tcaplus Dir服务端口
13755 Tcaproxy Tcaplus Proxy服务端口
13756 Tcaproxy Tcaplus Proxy服务端口
31001 Tcaprestproxy Tcaplus REST Proxy服务端口
36000 SSH SSH服务端口
45755 Tcapsvr Tcaplus Server服务端口
45760 Tcapsvr Tcaplus Server服务端口
46755 Tcapsvr Tcaplus Server服务端口
46760 Tcapsvr Tcaplus Server服务端口

6.6 创建Docker网络<div id="6-6"></div>

执行下面的命令创建Docker网络。

sudo docker network create --driver=bridge --subnet=192.168.10.0/24 subnet_192_168_10
  • 192.168.10.0/24为Docker网络网段及掩码定义。

  • subnet_192_168_10为Docker网络名,创建容器命令中--network后面带的就是这个网络名。

7. 常见问题<div id="7"></div>

参见常见问题文档。


TcaplusDB是腾讯出品的分布式NoSQL数据库,存储和调度的代码完全自研。具备缓存+落地融合架构、PB级存储、毫秒级时延、无损水平扩展和复杂数据结构等特性。同时具备丰富的生态、便捷的迁移、极低的运维成本和五个九高可用等特点。客户覆盖游戏、互联网、政务、金融、制造和物联网等领域。

【TcaplusDB知识库】如何部署TcaplusDB Local 版的更多相关文章

  1. [TcaplusDB知识库]数据库支撑底盘引擎计算层介绍

    在上次的TcaplusDB知识库中,TcaplusDB君为大家讲解了TcaplusDB所用的基于HASH表的Key-value存储引擎TXHDB.存储引擎作为数据库的支撑底盘,其重要性无可置疑,而在本 ...

  2. 「TcaplusDB知识库」概念(表、键、记录、索引)

       TcaplusDB作为一款NoSQL数据库,语法与传统的SQL关系库有所差异.本文将详细介绍TcaplusDB表.记录.索引这三个数据库中常用术语在TcaplusDB中的概念与意义. 术语\概念 ...

  3. CentOS7.2非HA分布式部署Openstack Pike版 (实验)

    部署环境 一.组网拓扑 二.设备配置 笔记本:联想L440处理器:i3-4000M 2.40GHz内存:12G虚拟机软件:VMware® Workstation 12 Pro(12.5.2 build ...

  4. CentOS7.4安装部署openstack [Liberty版] (二)

    继上一篇博客CentOS7.4安装部署openstack [Liberty版] (一),本篇继续讲述后续部分的内容 一.添加块设备存储服务 1.服务简述: OpenStack块存储服务为实例提供块存储 ...

  5. CentOS7.4安装部署openstack [Liberty版] (一)

    一.OpenStack简介 OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目. OpenStack是一个 ...

  6. dokcer部署code-server web版vscode

    #dokcer部署code-server web版vscode codercom/code-server:latest不支持插件在线安装 codercom/code-server:v2目前为最新版1. ...

  7. 以windows服务方式快速部署免安装版Postgres数据库

    目录 以windows服务方式快速部署免安装版Postgres数据库 1.下载Postgresql数据库免安装包 2.安装环境准备及验证 解压文件 测试环境依赖 3.创建并初始化数据目录 创建数据目录 ...

  8. [TcaplusDB知识库]TcaplusDB客户端及常用命令

    数据库大都支持命令行访问,TcaplusDB也不例外,通过安装TcaplusDB客户端,您可以方便快捷地从命令行管理与访问数据库. TcaplusDB客户端 首先在 TcaplusServiceApi ...

  9. 在自己的服务器上部署 GitLab 社区版

    GitLab 简介 因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.这篇文章是在 Gitlab 7.4 的环境下配置的,相关内容可能已经过时. 后续做了一次迁移,将 Gi ...

随机推荐

  1. Python Pandas的使用 !!!!!详解

     Pandas是一个基于python中Numpy模块的一个模块 Python在数据处理和准备⽅⾯⼀直做得很好,但在数据分析和建模⽅⾯就差⼀些.pandas帮助填补了这⼀空⽩,使您能够在Python中执 ...

  2. Redis 深入

    1.缓存更新 一般来说缓存的更新有两种情况: 先删除缓存,再更新数据库. 先更新数据库,再删除缓存. 这两种情况在业界,大家对其都有自己的看法.具体怎么使用还得看各自的取舍.当然肯定会有人问为什么要删 ...

  3. 【UE4 C++ 基础知识】<4> 枚举 Enum、结构体 Struct

    枚举 UENUM宏搭配BlueprintType可以将枚举暴露给蓝图,不使用的话,仅能在C++使用 //定义一个原生enum class enum class EMyType { Type1, Typ ...

  4. vue3.x异步组件

    在大型应用中,我们可能需要将应用分割成小一些的代码块,并且只在需要的时候才从服务器加载一个模块 vue2.x 曾经简单的异步组件 components: { AsyncComponent: () =& ...

  5. DevOps 时代的高效测试之路

    10 月 22 日,2021 届 DevOps 国际峰会在北京顺利召开,来自国内外的顶级技术专家共同畅谈 DevOps 体系与方法.过程与实践.工具与技术.CODING 测试及研发流程管理产品总监程胜 ...

  6. Uniapp云打包生成apk下载链接

    使用uni[]()app云打包生成安装包下载链接 manifest.json 中配置自动获取appid manifest.json中配置app 图标 按教程生成.keystore证书 使用云打包生成安 ...

  7. rabbitmq死信队列和延时队列的使用

    死信队列&死信交换器:DLX 全称(Dead-Letter-Exchange),称之为死信交换器,当消息变成一个死信之后,如果这个消息所在的队列存在x-dead-letter-exchange ...

  8. Noip模拟39 2021.8.14

    T1 打地鼠 都切掉了的简单题 1 #include<bits/stdc++.h> 2 #define int long long 3 using namespace std; 4 con ...

  9. 模拟赛18 T1 施工 题解

    前言: 真的是不容易啊.这个题在考场上想到了最关键的性质,但是没写出来. 后来写出来,一直调,小错不断. 没想到改的最后一个错误是两个int 乘起来爆了int 其实最后我还是觉得复杂度很假.\(n^2 ...

  10. Python课程笔记(八)

    一些简单的文件操作,学过linux的话理解感觉不会很难.课程代码 一.OS 目录方法 这个模块提供了一种方便的使用操作系统函数的方法 函数 说明 os.mkdir("path") ...