服务信息如下:
节点 | 主机IP | 版本 | HTTP端口 | TCP端口 | jdk版本 |
---|---|---|---|---|---|
节点1 | 192.168.1.62 | 7.13.0 | 19204 | 19304 | es二进制包自带jdk版本 |
节点2 | 192.168.1.63 | 7.13.0 | 19204 | 19304 | es二进制包自带jdk版本 |
说明:以下操作都需要在ES集群各个节点执行。
echo '* soft nofile 65536' >> /etc/security/limits.conf
echo '* hard nofile 65536' >> /etc/security/limits.conf
echo '* soft memlock unlimited' >> /etc/security/limits.conf
echo '* hard memlock unlimited' >> /etc/security/limits.conf
echo 'vm.max_map_count=655360' >> /etc/sysctl.conf
sysctl -p
说明:以下操作都需要在ES集群各个节点执行。
1、创建elastic用户
useradd -d /data/es-cluster -m elastic
passwd elastic
2、进入elastic用户,下载解压软件包
su elastic
cd /data/es-cluster
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.0-linux-x86_64.tar.gz
tar axf elasticsearch-7.13.0-linux-x86_64.tar.gz
3、进入elastic用户,创建数据目录和快照备份目录
mkdir elasticsearch-7.13.0/data
mkdir elasticsearch-7.13.0/backup
4、配置jdk环境变量
vim elasticsearch-7.13.0/bin/elasticsearch-env
export ES_JAVA_HOME=/data/es-cluster/elasticsearch-7.13.0/jdk
说明:如果是在root用户下操作的,记得对目录进行授权,使属主和属组均为elastic。
说明:以下操作都需要在ES集群其中一个节点执行即可,这里默认在节点1的elastic用户下执行。
1、生成p12格式证书
注意:其中生成生成p12格式证书必须与下面的生成密码操作在同一主机上执行。
# 进入elastic用户下
cd elasticsearch-7.13.0
./bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
2、将elastic-certificates.p12证书文件拷贝到节点2主机上的对应目录
# 进入elastic用户下
cd elasticsearch-7.13.0
scp config/elastic-certificates.p12 [email protected]:/data/es-cluster/elasticsearch-7.13.0/config
说明:只有elastic-certificates.p12文件在config目录下,才可以写在配置文件定义相对路径,否则,就必须写全路径。
1、节点1配置文件如下所示:
# 进入elastic用户下
cd /data/es-cluster && vim elasticsearch-7.13.0/config/elasticsearch.yml
# 集群名称
cluster.name: my-application
# 节点名称
node.name: node-1
# http端口
http.port: 19204
# 集群通信端口
transport.tcp.port: 19304
# 网络连接地址
network.host: 192.168.1.62
network.bind_host: 192.168.1.62
network.publish_host: 192.168.1.62
# 是否设置主节点,默认为true
node.master: true
# 是否允许节点存储数据,默认为true
node.data: true
# 为了避免脑裂,集群节点数最少为 半数(N/2)+1
discovery.zen.minimum_master_nodes: 2
# 从7.0版本开始,如果要启动在多个物理主机上启动一个全新的集群,必须指定参与第一次投票选举的候选主节点。这个过程称为集群启动引导,仅在集群第一次启动时才需要
# cluster.initial_master_nodes 参数设置一系列符合主节点条件的节点的主机名或IP地址来引导启动集群
# 如果不是候选主节点,则不需要配置此项
cluster.initial_master_nodes: ["node-1","node-2"]
# 自动发现设置,配置之后集群的主机之间可以自动发现
discovery.seed_hosts: ["192.168.1.62:19304", "192.168.1.63:19304"]
# 启用elsticserach验证模块x-pack
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.license.self_generated.type: basic
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
# 跨域访问,不添加无法使用head连接es,连接时在http:ip:port/?auth_user=elastic&auth_password=密码
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
# 禁用交换区swapping
bootstrap.memory_lock: false
# 网络参数配置
network.tcp.no_delay: true
network.tcp.keep_alive: true
network.tcp.reuse_address: true
network.tcp.send_buffer_size: 256mb
network.tcp.receive_buffer_size: 256mb
# 设置是否压缩tcp传输时的数据,默认为false,不压缩
transport.tcp.compress: true
# 快照备份仓库地址
path.repo: ["/data/es-cluster/elasticsearch-7.13.0/backup"]
2、节点2配置文件如下所示:
# 进入elastic用户下
cd /data/es-cluster && vim elasticsearch-7.13.0/config/elasticsearch.yml
# 集群名称
cluster.name: my-application
# 节点名称
node.name: node-2
# http端口
http.port: 19204
# 集群通信端口
transport.tcp.port: 19304
# 网络连接地址
network.host: 192.168.1.63
network.bind_host: 192.168.1.63
network.publish_host: 192.168.1.63
# 是否设置主节点,默认为true
node.master: true
# 是否允许节点存储数据,默认为true
node.data: true
# 为了避免脑裂,集群节点数最少为 半数(N/2)+1
discovery.zen.minimum_master_nodes: 2
# 从7.0版本开始,如果要启动在多个物理主机上启动一个全新的集群,必须指定参与第一次投票选举的候选主节点。这个过程称为集群启动引导,仅在集群第一次启动时才需要
# cluster.initial_master_nodes 参数设置一系列符合主节点条件的节点的主机名或IP地址来引导启动集群
# 如果不是候选主节点,则不需要配置此项
cluster.initial_master_nodes: ["node-1","node-2"]
# 自动发现设置,配置之后集群的主机之间可以自动发现
discovery.seed_hosts: ["192.168.1.62:19304", "192.168.1.63:19304"]
# 启用elsticserach验证模块x-pack
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.license.self_generated.type: basic
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
# 跨域访问,不添加无法使用head连接es,连接时在http:ip:port/?auth_user=elastic&auth_password=密码
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
# 禁用交换区swapping
bootstrap.memory_lock: false
# 网络参数配置
network.tcp.no_delay: true
network.tcp.keep_alive: true
network.tcp.reuse_address: true
network.tcp.send_buffer_size: 256mb
network.tcp.receive_buffer_size: 256mb
# 设置是否压缩tcp传输时的数据,默认为false,不压缩
transport.tcp.compress: true
# 快照备份仓库地址
path.repo: ["/data/es-cluster/elasticsearch-7.13.0/backup"]
在elasticsearch 中,network.host、network.bind_host、network.publish_host这三个配置项都用于指定elasticsearch与外界交互的网络地址。它们的区别如下:
1、network.host:network.host 是elasticsearch 7.0版本中新增的配置项,用于指定easticsearch 与外界交互的网络地址。如果不指定该配置项,则 elasticsearch默认会监听0.0.0.0,即监听所有可用的网络接口。可以使用该配置项来限制elasticsearch监听的网络接口,从而提高安全性。
2、network.bind_host:network.bind_host是elasticsearch 1.0版本中引入的配置项,用于指定elasticsearch监听的网络接口。如果不指定该配置项,则elasticsearch 默认会监听所有可用的网络接口。可以使用该配置项来限制elasticsearch监听的网络接口,从而提高安全性。该配置项可以设置为一个具体的IP地址或主机名,也可以设置为一个通配符,如0.0.0.0或者local。
3、network.publish_host:network.publish_host是elasticsearch 1.0版本中引入的配置项,用于指定elasticsearch向外界公开的网络地址。如果不指定该配置项,则elasticsearch默认会使用network.bind_host 配置项指定的地址。可以使用该配置项来解决elasticsearch集群中的节点使用不同的网络接口的问题,从而实现跨机器通信。该配置项可以设置为一个具体的IP地址或主机名,也可以设置为一个通配符,如0.0.0.0或者local。
综上所述,network.host、network.bind_host、network.publish_host这三个配置项都用于指定elasticsearch与外界交互的网络地址,但它们的作用和使用方式略有不同。其中network.host是elasticsearch 7.0版本中新增的配置项,可以用来限制elasticsearch监听的网络接口;而network.bind_host和network.publish_host则是elasticsearch 1.0版本中引入的配置项,用于指定elasticsearch监听的网络接口和向外界公开的网络地址。
说明:以下操作都需要在ES集群各个节点执行,jvm内存根据实际情况修改。
# 进入elastic用户下
vim elasticsearch-7.13.0/config/jvm.options
-Xms4g
-Xmx4g
说明:以下操作都需要在ES集群各个节点执行。
# 进入elastic用户下
cd elasticsearch-7.13.0
./bin/elasticsearch -d
# 或者在root用户执行
su elastic -c "/data/es-cluster/elasticsearch-7.13.0/bin/elasticsearch -d"
说明:以下操作都需要在ES集群其中一个节点执行即可,这里默认在节点1执行,其中生成生成p12格式证书必须与下面的生成密码操作在同一主机上执行。
# 进入elastic用户下
cd elasticsearch-7.13.0
# 手动设置密码
./bin/elasticsearch-setup-passwords interactive
# 自动设置密码
./bin/elasticsearch-setup-passwords auto
curl -u elastic:vhgXdi3PqkkA2HEVe7Bi http://192.168.1.62:19204/_cat/health
Elasticsearch也提供了备份集群中索引数据的策略snapshot API。它会备份整个集群的当前状态和数据,并保存到集群中各个节点共享的仓库中。这个备份的进程是增量备份的,在第一次备份的基础上进行的第二次备份只备份新变化的数据。
创建elasticsearch快照进行备份,步骤如下:
# 1、建立NFS文件共享服务
# 2、配置共享目录挂载的路径,即path.repo
# 3、创建快照仓库
# 4、创建快照
# 5、恢复快照到elasticsearch集群
1、建立NFS文件共享服务
# 1、服务端,这里默认以节点1(192.168.1.62)为服务端,
sudo apt install nfs-kernel-server
chmod 777 /data/es-cluster/elasticsearch-7.13.0/backup -R
vim /etc/exports
/data/es-cluster/elasticsearch-7.13.0/backup 192.168.1.63(rw,sync,no_subtree_check)
sudo exportfs -ra
sudo systemctl restart nfs-kernel-server
#2、客户端,这里默认以节点2(192.168.1.63)为客户端
sudo apt install nfs-common
mount 192.168.1.62:/data/es-cluster/elasticsearch-7.13.0/backup /data/es-cluster/elasticsearch-7.13.0/backup/
2、创建快照仓库
说明:以下操作在ES集群任意一节点执行即可,这里默认在节点1执行。
## es_backup可任意设置,无特殊意义
curl -H "Content-Type: application/json" -XPUT http://192.168.1.62:19204/_snapshot/es_backup -d '
{
"type": "fs",
"settings": {
"location": "/data/es-cluster/elasticsearch-7.13.0/backup",
"max_snapshot_bytes_per_sec": "50mb",
"max_restore_bytes_per_sec": "50mb"
}
}'
3、查看快照仓库信息
说明:以下操作在ES集群任意一节点执行即可,这里默认在节点1执行。
curl http://192.168.1.62:19204/_snapshot/es_backup?pretty
更多详细内容请参考:Linux运维实战总结