1 点击进入注册账号https://www.aliyun.com/
2 实名认证
一、下载并解压Elasticsearch
1 下载
地址https://www.elastic.co/cn/downloads/elasticsearch
cd /www/esdata
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.0-linux-x86_64.tar.gz
tar -zxvf elasticsearch-7.6.0-linux-x86_64.tar.gz
也可以化为云下载
https://mirrors.huaweicloud.com/elasticsearch/
https://mirrors.huaweicloud.com/kibana/
2 下载jdk,并将文件夹拷贝到外面(这里为了简便实用宝塔操作了)
3 修改jdk的路径
#newadd后面的为修改的代码
1 修改/master/bin/elasticsearch 多个节点都需要设置
#
# ES_JAVA_OPTS="-Xms8g -Xmx8g" ./bin/elasticsearch
#newadd配置为elasticsearch自带jdk
export JAVA_HOME=/www/esdata/jdk
export PATH=$JAVA_HOME/bin:$PATH
source "`dirname "$0"`"/elasticsearch-env
if [ -z "$ES_TMPDIR" ]; then
ES_TMPDIR=`"$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.TempDirectory`
fi
ES_JVM_OPTIONS="$ES_PATH_CONF"/jvm.options
ES_JAVA_OPTS=`export ES_TMPDIR; "$JAVA" -cp "$ES_CLASSPATH" org.elasticsearch.tools.launchers.JvmOptionsParser "$ES_JVM_OPTIONS"`
#newadd添加jdk判断
if [ -x "$JAVA_HOME/bin/java" ]; then
JAVA="/www/esdata/jdk/bin/java"
else
JAVA=`which java`
fi
# manual parsing to find out, if process should be detached
2 修改bin/elasticsearch-cli
set -e -o pipefail
#newadd配置为elasticsearch自带jdk
export JAVA_HOME=/www/esdata/jdk
export PATH=$JAVA_HOME/bin:$PATH
source "`dirname "$0"`"/elasticsearch-env
IFS=';' read -r -a additional_sources <<< "$ES_ADDITIONAL_SOURCES"
for additional_source in "${additional_sources[@]}"
do
source "$ES_HOME"/bin/$additional_source
done
IFS=';' read -r -a additional_classpath_directories <<< "$ES_ADDITIONAL_CLASSPATH_DIRECTORIES"
for additional_classpath_directory in "${additional_classpath_directories[@]}"
do
ES_CLASSPATH="$ES_CLASSPATH:$ES_HOME/$additional_classpath_directory/*"
done
# use a small heap size for the CLI tools, and thus the serial collector to
# avoid stealing many CPU cycles; a user can override by setting ES_JAVA_OPTS
ES_JAVA_OPTS="-Xms4m -Xmx64m -XX:+UseSerialGC ${ES_JAVA_OPTS}"
#newadd添加jdk判断
if [ -x "$JAVA_HOME/bin/java" ]; then
JAVA="/www/esdata/jdk/bin/java"
else
JAVA=`which java`
fi
exec \
"$JAVA" \
$ES_JAVA_OPTS \
-Des.path.home="$ES_HOME" \
二 修改系统的参数
1 修改创建限制
/etc/security/limits.conf 最后
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
2 编辑/etc/sysctl.conf配置文件(解决最大虚拟内存太小)
vi /etc/sysctl.conf
添加如下配置:
vm.max_map_count=262144
保存后执行命令:
sysctl -p
3 创建启动ES账号
出于安全问题elasticsearch 不让用root用户直接运行,需要创建一个新用户。
创建组和用户:
groupadd es
useradd es -g es
授权:
chown -R es:es /www/esdata
切换用户:
su - es
三 配置参数
文件夹修改为修改为 master
1 修改 config/jvm.options配置启动内存
-Xms512m
-Xmx512m
这里是启动占用内存 根据自己的服务器内存配置, 每个节点都这么多, 我测试的是4g内存, 3个节点, 所以这里设置512.还有启动服务的预留. 这个自己根据情况设置, 默认是1g
2 修改config/elasticsearch.yml配置
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.name: elastic
node.name: master
node.master: true
#node.data: true
cluster.initial_master_nodes: ["master"]
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["127.0.0.1"]
#xpack.security.enabled: true
#xpack.security.transport.ssl.enabled: true
#xpack.security.transport.ssl.verification_mode: certificate
#xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
#xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
3 启动
后台启动的结束进程方法
ps -aux|grep elasticsearch
查到端口后 kill
kill *****
启动
su - es
ps -aux|grep elasticsearch
kill ***
cd /www/esdata/master
./bin/elasticsearch -d
cd /www/esdata/node1
./bin/elasticsearch -d
调试启动
./bin/elasticsearch
后台启动
./bin/elasticsearch -d
4 测试启动
http://***.**.**.**:9200/ 浏览器访问
5 制作node
复制一份master 为node1 需要几个就修改几份
修改配置
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.name: elastic
node.name: node1
node.master: false
node.data: true
#cluster.initial_master_nodes: ["master"]
network.host: 0.0.0.0
http.port: 9201
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
#xpack.security.enabled: true
#xpack.security.transport.ssl.enabled: true
#xpack.security.transport.ssl.verification_mode: certificate
#xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
#xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
6 集群测试
之前测试
master和node1 索引创建为 1个分片 1个副本
master和node1和node2 索引创建为 3个分片 1个副本
cpu占用较高
master和node1和node2 索引创建为1个分片 2个副本
正在测试这种配置
至此就完成了
如果是windows的 请参考 https://blog.csdn.net/liutietuo/article/details/104038691
四 安装kibana
1 下载
cd /www/esdata
wget https://mirrors.huaweicloud.com/kibana/7.6.0/kibana-7.6.0-linux-x86_64.tar.gz
tar -zxvf kibana-7.6.0-linux-x86_64.tar.gz
2 配置
.修改config/kibana.yml
启用以下配置:
server.host: 127.0.0.1
elasticsearch.hosts: ["http://*.*.*.*:9200"]
i18n.locale: "zh-CN"
3.后台启动kibana
cd /www/esdata/kibana/bin
./kibana
4 访问
http://199.199.199.199:5601 外网ip
五 备份
1 备份路径参数yml里面添加
path.repo: ["/www/esdata/backups", "/www/esdata/longterm_backups"]
2 建立仓储
PUT http://*.*.*.*:9200/_snapshot/backups
{
"type": "fs",
"settings": {
"location": "/www/esdata/backups/store",
"max_snapshot_bytes_per_sec": "20mb",
"max_restore_bytes_per_sec": "20mb",
"compress": true
}
}
解释
PUT会重新创建该仓库。 POST请求会更新已有的仓库配置,
type:仓库的类型为共享文件系统
location: 指定仓库的路径,store必须为path.repo 的子目录
max_snapshot_bytes_per_sec:快照数据进入仓库时,该参数可以控制过程的限流情况,默认为每秒20M
max_restore_bytes_per_sec:从仓库恢复数据时,该参数控制过程限流情况,默认值:每秒20M
注意:如果挂在的路径为远程目录时,应该合理配置该值,不至于网络流量被占满。
compress: 是否压缩
3 备份方法
put请求
http://*.*.*.*:9200/_snapshot/backups/{版本号,每次不一样}?wait_for_completion=true
//其他
二 生成证书
./bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""cls
二、修改配置。
配置文件在config/elasticsearch.yml。
master配置
#跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
#设置集群名称
cluster.name: elastic
#设置节点名称
node.name: master
#设置此节点是master节点
node.master: true
#节点
#cluster.initial_master_nodes: ["slave0", "slave1"]
cluster.initial_master_nodes: ["node0"]
#设置往外暴露ip,因为此时在windows下,所以直接暴露本地
network.host: 127.0.0.1
#配置数据存储地址,我这里没有配置使用默认地址
#path.data=""
#配置日志存储地址
#path.log=""
#xpack是个收费插件,功能强大.可自行百度
xpack.ml.enabled: false
上面的中文 我建议删除, 否则可能报错.如下:
AMLException[java.io.CharConversionException: Invalid UTF-8 start byte 0xbf (at char #2833, byte #2047)
at [Source: sun.nio.ch.ChannelInputStream@47caedad; line: 1, column: 1]]; nested: YAMLException[java.io.CharConversionException: Invalid UTF-8 start byte 0xbf (at char #2833, byte #2047)]; nested: CharConversionException[Invalid UTF-8 start byte 0xbf (at char #2833, byte #2047)];
启用X-Pack
配置末尾新增如下配置项:
xpack.security.enabled: true
bin/elasticsearch-certutil ca -out config/elastic-certificates.p12 -pass ""
这是证书
继续修改yml配置文件
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
设置密码
执行设置用户名和密码的命令,这里需要为4个用户分别设置密码,elastic, kibana, logstash_system,beats_system
bin/elasticsearch-setup-passwords interactive --手动配置每个用户密码模式
bin/elasticsearch-setup-passwords auto --自动配置每个用户密码模式
用户elastic为超级管理员,其它用户暂未使用到。
这样要开启数据库 才能设置.
扩容硬盘后文件移动
移动节点文件到其他硬盘
rsync -avh /data/esdata/node1 /data2/esdata 这个拷贝100g文件,大约20分钟 ,可以开两个线程拷贝不同的节点
什么配置都不用修改
先启动没有移动的那个maser节点,
这是其他节点会显示Unassigned
等启动完成 40/120 之后
在逐一启动其他移动的节点
节点会慢慢恢复的 ,恢复时间大约30分钟
如果主要节点卡住 ,可以通过重启的方式重新组装集群