在红帽系统中部署crate,有两种方法:
- 使用yum安装,安装过程中会自动添加crate.service文件
- 使用源码包安装,需要手动编写crate.service文件
1. yum安装
这个只需要按照官网文档操作即可,地址:http://crate.io/docs/install/local/linux/
安装过程中,可能会提示jre > 1.7,这时需要更新系统的java版本了,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,安装完Jdk后就OK了
安装完毕后,只需要将crate.yml文件配置好便可以启动了,很方便,输入:
systemctl start crate.service
部署集群时需要在3个节点上都执行yum install crate,安装完毕后修改crate.yml,按照下面的方法改好crate.yml文件后,就可以使用systemctl重启就行
2. 源码包安装
下载源码包,目前最新是:1.1.4,地址:https://cdn.crate.io/downloads/releases/crate-1.1.4.tar.gz,
下载完毕后,需要手动配置crate_home等环境变量:
# cratedb environment
export CRATE_HEAP_SIZE=4g //这个根据实际情况配置,官方文档指导说不可超过30G,建议26G
export CRATE_HOME=/home/hadmin/crate
PATH=$CRATE_HOME/bin:$PATH
源码包配置的环境变量还是在crate.yml中配置:
psql.enabled: true
psql.port: 3892 //这个是给Java jdbc通信使用的
prepareThreshold: 0
http.max_content_length: 150mb
indices.store.throttle.max_bytes_per_sec: 150mb
threadpool.bulk.type: fixed
threadpool.bulk.size: 128
threadpool.bulk.queue_size: 5000
cluster.name: Cluster //集群名称,如果说3个节点是在同一个集群中,那么这个名称一定要保持一致
node.name: dscn2 //集群中节点的名称,可以写主机名,名字要有唯一性,这是第二个节点,所以是dscn2
index.number_of_replicas: 2
path.conf: /home/hadmin/crate/config
path.data: /home/hadmin/data/crate
path.work: /home/hadmin/data/crate/tmp
path.logs: /home/hadmin/data/crate/logs
path.plugins: /home/hadmin/crate/plugins
blobs.path: /home/hadmin/data/crate/crate_blob_data/disk
network.host: 192.168.13.51 //这个要改为当前主机的ip地址,也可以是主机名
gateway.recover_after_nodes: 3
discovery.zen.minimum_master_nodes: 2 //在3节点集群中,设置这个值为2,表示有2个节点集群就能存活,失去1个节点不会有影响,这是高可用的必要配置
gateway.expected_nodes: 3
discovery.zen.ping.timeout: 10s
discovery.zen.fd.ping_interval: 10s
discovery.zen.ping.unicast.hosts: //3节点集群的必要配置,集群间通信,写主机名和Ip都可以
- dscn1:4300
- dscn2:4300
- dscn3:4300
配置3节点集群,只需要将当前crate目录复制到相应的服务器上,修改crate.yml文件中的相关内容即可
手动配置时,需要自己写crate.service文件:
[Unit]
Description=CrateDB daemon
After=network.target
[Service]
Type=simple
User=hadmin
Group=hadmin
ExecStart=/home/hadmin/myproject/crate/bin/crate.sh start
ExecStop=/home/hadmin/myproject/crate/bin/crate.sh stop
StandardOutput=journal
StandardError=journal
TimeoutStopSec=20
LimitMEMLOCK=infinity
LimitNOFILE=65536
Restart=always
[Install]
WantedBy=multi-user.target
crate.sh内容为:
#!/bin/bash
source /home/hadmin/myproject/conf/env.sh
if [ "$1" = "start" ]
then
$CRATE_HOME/bin/crate
elif [ "$1" = "stop" ]
then
pid=$(ps -ef|grep io.crate.bootstrap.CrateDB |grep jar |awk '{print $2}')
echo "KILLING cratedb PROCESS "$pid
kill -9 $pid
fi
env.sh就是最上面的内容,env.sh的最后一行别忘了
export PATH
集群配置官方指导文档:http://crate.io/docs/scale/multi_node_setup/