这篇博客主要是讲CrateDB的部署环境和开发环境的搭建,搭建过程如果有任何问题欢迎随时在评论区交流
Java版本>=11,无论是测试、生产环境的部署,还是本地开发环境都需要部署11.0以上版本的jdk,以及配置好JAVA_HOME。注意:CrateDB不能以root账号运行,以下所有命令都需要用一个非root执行。
这篇博客亲身试验在mac和centos下部署是可行的,如果是其他平台,可以参考官网的文档,看看需不需要下载不同安装包或者不同的步骤,官网地址:https://crate.io
安装包既可以直接从官网上下载二进制版本并解压:https://crate.io/download/
也可以通过源码打包:
1.1 clone:git clone https://github.com/crate/crate.git
1.2 编译:./gradlew compileJava
1.3 打二进制包: ./gradlew distTar
CrateDB使用gradle管理工程,这个过程会下载gradle工具,所以可能会有一丢丢慢,打包完成的二进制包位于app/build/distributions/ 目录下,拷出二进制包部署就可以了。
for mac/linux: bin/crate
for windows: bin/crate.bat
默认情况下,CrateDB是前台运行的,所以一直会打印运行信息,如果运行一段时间就退出了,说明有可能运行过程中出现了异常,如果需要后台启动,在启动命令后面加-d参数即可:
bin/crate -d
后台启动的情况下,可以输入jps命令(设置好JAVA相关的Path的情况下),看CrateDB进程是否正常启动。
在默认的配置下,CrateDB对的数据路径会设置为当前工程目录的data目录下,日志路径设置为当前目录的log目录。如果你想更改数据和日志路径,可以在配置文件config/crate/yml中添加配置:
path.data:/data/data
path.logs:/data/log
连接CrateDB需要安装crash客户端,可以用pip安装
pip install crash
安装不成功的也可以从官网地址下载二进制的crash工具:https://crate.io/docs/clients/crash/en/latest/getting-started.html#installation
下载之后连接数据库,直接输入
./crash
命令默认会连接5432端口连接的本机数据库,如果想要连接其他机器上运行的数据库,可以加命令行参数
crash -U username --hosts hostname
查看全部支持的命令行参数可以输入crate -h
连接成功之后可以建立账后密码供以后访问:
create user root with (password='123456');
grant all privileges to root;
CrateDB启动成功后会打开5432端口监听tcp请求,还会在4200端口启动Admin UI,在浏览器输入:http://yourcratehost:4200即可访问CrateDB Admin UI,输入你之前创建的账号密码即可连接。
除了单机部署之外,CrateDB还可以很方便的以集群模式进行部署,CrateDB集群模式部署需要>=3台机器,网路畅通,无需在配置文件中规定Master节点,CrateDB会自动选举出Master节点。这一点类似于zookeeper。
这里以配置三节点集群为例,假设三台机器的IP分别为10.3.8.211,10.4.1.2,10.4.1.1
首先在单台机器配置集群参数,添加到config/crate.yml中:
path.data:/data/data
path.logs:/data/log
network.host:_site_,_local_
cluster.initial_master_nodes:10.3.8.211,10.4.1.2,10.4.1.1
cluster.name:clsutertest
discovery.seed_hosts:10.3.8.211,10.4.1.2,10.4.1.1
gateway.expected_nodes:3
gateway.recover_after_nodes:2
配置完成后分发安装包到各个节点中,在各台机器上一次启动CrateDB,启动方式与单机相同。
注:这里仅覆盖普通机型、CentOS系统的安装配置,部分机型上一集群模式启动CrateDB时,会报错这台机器的JVM参数或者内核参数不符合CrateDB要求,这种情况下一般按照报错信息对应修改机器配置即可,抱歉这里无法一一列举可能需要的内核参数修改。
全部启动后,可以通过任一台机器的4200端口访问Admin UI,以及连接任意一台IP执行查询:
crash -U root --hosts 10.3.8.211
如果想要阅读CrateDB源码,或者再CrateDB上做二次开发,可以搭建开发环境,将CrateDB导入IDE中进行实际的调试。
开发环境依然需要Java11环境,以及配置JAVA_HOME:
进入CrateDB源码目录,执行:
./gradlew compileJava
./gradlew idea
然后通过idea导入CrateDB项目,项目类型选择gradle。
修改代码完成项目开发之后,你需要执行:
./gradlew clean
清除过期的Java类文件;以及执行:
./gradlew test
跑全部的单元测试样例
最终执行 ./gradlew distTar将你的代码重新打包发布。
大家如果想对CreateDB有一些深入了解的话,可以看一下我的CrateDB系列文章:
分布式数据库-CrateDB架构分析与源码阅读之总体概述与架构分析 https://blog.csdn.net/u013970710/article/details/103219791
分布式数据库-CrateDB架构分析与源码阅读之常用命令 https://blog.csdn.net/u013970710/article/details/103219825
分布式数据库-CrateDB架构分析与源码阅读之搭建部署 https://blog.csdn.net/u013970710/article/details/103219820
分布式数据库-CrateDB架构分析与源码阅读之源码阅读 https://blog.csdn.net/u013970710/article/details/103219804
分布式数据库-CrateDB架构分析与源码阅读之最佳实践 https://blog.csdn.net/u013970710/article/details/103219797
分布式数据库-CrateDB架构分析与源码阅读之空间存储与空间计算 https://blog.csdn.net/u013970710/article/details/103226889