ElasticSearch集群部署
一、 准备工作
1.1、修改Linux句柄数
## 查看当前最大句柄数
sysctl -a | grep vm.max_map_count
## 修改句柄数
vi /etc/sysctl.conf
## 添加以下配置
vm.max_map_count=262144
## 配置生效
sysctl -p
1.2、关闭swap
因为ES的数据大量都是常驻内存的,一旦使用了虚拟内存就会导致查询速度下降,一般需要关闭swap,但是要保证有足够的内存。
## 临时关闭
swapoff -a
## 永久关闭
vi /etc/fstab
## 注释掉swap这一行的配置
#/dev/mapper/centos-swap swap swap defaults 0 0
1.3、修改最大线程数
因为ES运行期间可能创建大量线程,如果线程数支持较少可能报错。
vi /etc/security/limits.conf
## 在文件末尾添加如下配置
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
elsearch soft nproc 125535
elsearch hard nproc 125535
重新生效
Reboot
1.4、创建elsearch用户
## ElasticSearch不能以Root身份运行, 需要单独创建一个用户, 并赋予目录权限
groupadd elsearch
useradd elsearch -g elsearch -p elsearch
chown -R elsearch:elsearch /home/elsearch
1.5、关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
4.4、改集群配置文件
• linux1
vi elasticsearch-7.12.1/config/elasticsearch.yml
## 集群名称
cluster.name: my-application
## 当前该节点的名称
node.name: node-1
## 是不是有资格竞选主节点
node.master: true
## 是否存储数据
node.data: true
## 最大集群节点数
node.max_local_storage_nodes: 3
## 数据存档位置
path.data: /home/elsearch/elasticsearch-7.12.1/data
## 日志存放位置
path.logs: /home/elsearch/elasticsearch-7.12.1/log
## 绑定IP地址
network.host: 0.0.0.0
## 指定服务访问端口
http.port: 9200
## 指定API端户端调用端口
transport.tcp.port: 9300
## 集群发现默认值为127.0.0.1:9300,如果要在其他主机上形成包含节点的群集,如果搭建集群则需要填写
## es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点,也就是说把所有的节点都写上
discovery.seed_hosts: ["10.15.14.46","10.15.14.47","10.15.14.48"]
## 当你在搭建集群的时候,选出合格的节点集群,有些人说的太官方了,
## 其实就是,让你选择比较好的几个节点,在你节点启动时,在这些节点中选一个做领导者,
## 如果你不设置呢,elasticsearch就会自己选举,这里我们把三个节点都写上
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
## 在群集完全重新启动后阻止初始恢复,直到启动N个节点
## 简单点说在集群启动后,至少复活多少个节点以上,那么这个服务才可以被使用,否则不可以被使用,
gateway.recover_after_nodes: 2
## 禁用安全配置,否则查询的时候会提示警告
#xpack.security.enabled: false
## 开启跨域访问支持,默认为false
http.cors.enabled: true
## 跨域访问允许的域名, 允许所有域名
http.cors.allow-origin: "*"
#以下配置用于设置密码访问ES集群,如不需要可以不用
xpack.security.enabled: true
xpack.license.self_generated.type: basic
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.5、改java内存
Vi /home/elsearch/elasticsearch-7.12.1/config/jvm.optins
-Xms8g
-Xmx8g
两个改大一点
4.6、启动集群节点
分别启动三个ES服务
## linux1
[elsearch@linux1 ~]$ /home/elsearch/elasticsearch-7.12.1/bin/elasticsearch -d
4.7、添加用户名密码
开启密码访问
在服务器1上生成 TLS 和身份验证,将会在 config 下生成 elastic-certificates.p12 文件,将此文件传到其他两个节点的 config 目录,注意文件权限
cd /data/elasticsearch-6.8.10
bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
将 config目录下的elastic-certificates.p12文件上传至其他2台服务器的config目录下。
重启ElasticSearch服务,3台服务器都需要执行:
设置密码,在服务器1上执行命令:
bin/elasticsearch-setup-passwords interactive
随后按照提示依次输入elastic、apm_system、kibana、logstash_system、beats_system、remote_monitoring_user这6个用户的密码,完成后数据会自动同步至其他2个节点。
再次在浏览器中访问ES,http://ip地址:9200,就可以看到需要用户名密码访问了。
Linxu共享
1.1确认服务端系统是否已安装nfs
rpm -qa nfs-utils rpcbind
#安装路径下的所有rpm包
rpm -Uvh *.rpm --nodeps –f
D:\soft\es\nfs
2.NFS 配置及使用
2.1我们在服务端创建一个共享目录/data/backup/db,或者直接使用想要共享的目录,作为客户端挂载的远端入口,然后设置权限。
mkdir -p /data/backup/db
chmod 777 /data/backup/db
2.2然后,修改 NFS 配置文件/etc/exports
vim /etc/exports
/data/backup/db 10.15.14.*(rw,sync,insecure,no_subtree_check,no_root_squash)
说明一下,这里配置后边有很多参数,每个参数有不同的含义,具体可以参考下边。此处,我配置了将
/data/backup/db 文件目录设置为允许 IP 为 10.0.0.2的客户端挂载。
2.3先启动 RPC 服务。
service rpcbind start
# 或者使用如下命令亦可
/bin/systemctl start rpcbind.service
# 查看 NFS 服务项 rpc 服务器注册的端口列表
rpcinfo -p localhost
2.4再启动nfs服务
# 启动 NFS 服务
service nfs start
# 或者使用如下命令亦可
/bin/systemctl start nfs.service
# 启动 NFS 服务后 rpc 服务已经启用了对 NFS 的端口映射列表
rpcinfo -p localhost
11
2.5在服务端看下是否正确加载了设置的/etc/exports配置。
showmount -e localhost
8.在服务器端和客户端启动NTFS服务并设置开机启动
systemctl start rpcbind
systemctl start nfs
systemctl enable rpcbind
systemctl enable nfs
3.NFS 测试
3.1最后,在另一台 Linux 虚拟机上测试一下,是否能够正确挂载吧。首先,我们可以在客户端查看下 NFS 服务端 (服务端 IP 为:10.0.0.1) 设置可共享的目录信息。
showmount -e 10.15.14.46
3.2然后,在客户端创建挂在目录/share
mkdir -p /share
1
3.3最后,挂载远端目录到本地/share目录。
mount 10.15.14.46:/data/backup/db /share
自动启/etc/fstab
192.168.1.222:/data/backup/db /share nfs defaults 0 0
df -h | grep 10.0.0.1
3.4在客户端测试是否能访问服务器端/data/backup/db目录下的文件
ll /share
1
3.5最后,如果客户端要卸载 NFS 挂载的话,使用如下命令即可。
umount /share
2 修改elasticsearch配置文件
修改 elasticsearch.yml 配置文件,增加如下配置:
path.repo: ["/share"]
重启
创建备份仓库
作者所有。未经允许禁止转载,如需转载请联系作者获得授权。
curl -XPUT "http://10.15.14.49:9200/_snapshot/my_backup" -H 'Content-Type: application/json' -d '{ "type": "fs", "settings": { "location": "/share2" }}'
curl -XGET 'http://10.15.14.49:9200/_snapshot?pretty'
curl -XDELETE http://10.15.14.49:9200/_snapshot/my_backup/bak1
2备份
curl -XPUT "http://10.15.14.49:9200/_snapshot/my_backup/bak1?wait_for_completion=true"
curl -XPUT http://10.15.14.49:9200/_snapshot/my_backup/bak1?wait_for_completion=true"
'{"indices":"my_index"}'
3 压缩
tar zcvf all.tar.gz *
5 还原
curl -XPOST "http://10.15.14.49:9200/_snapshot/my_backup/bak1/_restore?wait_for_completion=true" -H 'Content-Type: application/json' -d '{"indices":"zhuanli_search_info_v2"}'
curl -XPOST "http://10.15.14.49:9200/_snapshot/my_backup/bak1/_restore?wait_for_completion=true" -H 'Content-Type: application/json' -d '{"indices":"zhuanli_search_info_v2,zhuanli_search_sim_v2"}'
==============================================================================================
1. 创建存储库
curl -XPUT -u'elastic:mZy8uIh3!Cy' "http://192.168.211.43:9200/_snapshot/my_backup" -H 'Content-Type: application/json' -d '{ "type": "fs", "settings": { "location": "/esbak" }}'
2. 删除--快照
curl -XDELETE -u'elastic:mZy8uIh3!Cy' http://192.168.211.43:9200/_snapshot/my_backup/bak1
3. 备份--快照
curl -XPUT -u'elastic:mZy8uIh3!Cy' "http://192.168.211.43:9200/_snapshot/my_backup/bak1?wait_for_completion=true" -H 'Content-Type: application/json' -d '{ "indices": "zhuanli_search_info_v2,z_search_sim_v2"}'
4. 压缩
tar zcvf all.tar.gz *
tar -xf all.tar.gz
unrar x all.rar
5. 还原
curl -XPOST "http://10.15.14.49:9200/_snapshot/my_backup/bak1/_restore?wait_for_completion=true" -H 'Content-Type: application/json' -d '{"indices":"z_search_info_v2"}'
curl -XPOST "http://10.15.14.49:9200/_snapshot/my_backup/bak1/_restore?wait_for_completion=true" -H 'Content-Type: application/json' -d '{"indices":"z_search_info_v2,zhuanli_search_sim_v2"}'