elasticsearch 6.3.2 集群配置

一、约定俗成

elasticsearch 所有关于数据的路径都位于 /data/elasticsearch 下面,因此,除了主程序以外,所有的es相关的数据都应该位于该路径下面,包括但不限于:

es 数据                      # /data/elasticsearch/es_data
es 程序日志                   # /data/elasticsearch/es_logs/elasticsearch.log
es gc 日志                   # /data/elasticsearch/es_logs/gc.log
es heap dump 路径            # /data/elasticsearch/es_heap_dump
es java io 临时路径           # /data/elasticsearch/es_java_io

一、jvm.options 参数配置

1、内存配置 (官方建议为物理内存的一半)

-Xms4g
-Xmx4g

2、java.io.tmpdir

-Djava.io.tmpdir=/data/elasticsearch/es_java_io

引用说明:

最近客户现场的技术支持接连反馈了一个问题:导入数据的时候,上传的excel会在服务器上生成一个临时文件,而这个临时文件都在 tomcat 的安装目录下,如果上传次数比较多的话,就会导致tomcat安装目录下有多个临时的excel文件,很不合理也不美观。
接到这个问题,第一反应是 java.io.tmpdir 这个系统配置没指定好,因为做上传的时候,是通过: System.getProperty(“java.io.tmpdir”);
这种方式来获取临时目录,然后把文件放到临时目录里去的,按说这些临时文件都应该在 tomcat 安装目录下的 temp 文件夹里,因为这个是tomcat的临时目录,但现在却没有,所以怀疑是 java.io.tmpdir 这个系统变量没指定好。

3、jvm heap dump path

-XX:HeapDumpPath=/data/elasticsearch/es_heap_dump

3、gc log path

8:-Xloggc:/data/elasticsearch/es_logs/gc.log
9-:-Xlog:gc*,gc+age=trace,safepoint:file=/data/elasticsearch/es_logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m

二、log4j2.properties 参数配置

https://www.elastic.co/guide/en/elasticsearch/reference/6.3/logging.html


三、elasticsearch.yml 参数配置

path.data: /data/elasticsearch/es_data           # elasticsearch 存放数据的路径
path.logs: /data/elasticsearch/es_logs           # elasticsearch 存放日志的路径

cluster.name: es_online_cluster                  # elasticsearch 集群名称

node.name: ${HOSTNAME}                           # elasticsearch 节点名称,也可以是变量 ${HOSTNAME}
node.attr.rack: r1                               # 节点服务器所在的机柜信息,此配置可不设
node.master: true                                # 定义该节点是否有资格被选举成主节点,默认是true,es是默认集群中的第一台机器为master,如果这台机器挂了就会重新选举master
node.data: true                                  # 允许该节点存储数据(默认开启)

network.host: ip_addr                            # elasticsearch 监听地址(默认为0.0.0.0)

discovery.zen.ping.unicast.hosts:["host1:port", "host2:port", "host3:port"]    # elasticsearch 默认实现单播,在单播配置下,节点向指定的主机发送单播请求
discovery.zen.minimum_master_nodes: 2            # 此设置应该始终被配置为 master 候选节点的法定个数(大多数个)。法定个数就是 ( master 候选节点个数 / 2) + 1 。

bootstrap.memory_lock: true                      # 设置为true来锁住内存。因为内存交换到磁盘对服务器性能来说是致命的,当jvm开始swapping时es的效率会降低,所以要保证它不swap

script.groovy.sandbox.enabled: false             # 该配置只有在安装 groovy 的插件之后才可以生效。否则es会报错

action.auto_create_index: false                  # 如果你想禁止自动创建索引,你可以通过在 elasticsearch.yml 的每个节点下添加下面的配置(注:logstash 会使用事件中的时间戳来生成索引名,自动生成)
action.destructive_requires_name: true           # 这个设置使删除只限于特定名称指向的数据,而不允许通过指定 _all 或通配符来删除指定索引库。你同样可以通过 Cluster State API 动态的更新这个设置

关于Discovery settings

discovery.zen.ping.unicast.hosts:[“host1:port”, “host2:port”, “host3:port”] # elasticsearch 默认实现单播,在单播配置下,节点向指定的主机发送单播请求

Elasticsearch将绑定到可用的环回地址,并将扫描端口9300到9305以尝试连接到运行在同一台服务器上的其他节点。 #这提供了自动集群体验,而无需进行任何配置。数组设置或逗号分隔的设置。每个值的形式应该是host:port或host #(如果没有设置,port默认设置会transport.profiles.default.port 回落到transport.tcp.port)

补充:多播配置下,节点向集群发送多播请求,其他节点收到请求后会做出响应,但是组播会将所有当前网络中启动的节点都加入到集群中,强烈不推荐
discovery.zen.ping.multicast.group:224.2.2.4 组地址
discovery.zen.ping.multicast.port:54328 端口
discovery.zen.ping.multicast.ttl:3 广播消息ttl
discovery.zen.ping.multicast.address:null绑定的地址,null表示绑定所有可用的网络接口
discovery.zen.ping.multicast.enabled:true 多播自动发现禁用开关

关于内存错误

memory locking requested for elasticsearch process but memory is not locked 这个报错说 elasticsearch 内存锁定失败

如果要开启该参数,则配置:
vim /etc/security/limit.conf

tracker soft memlock unlimited
tracker hard memlock unlimited

关于 groovy 脚本

通过设置集群中的所有节点的 elasticsearch.yml 文件来禁用动态 Groovy 脚本,防止动态 Groovy 脚本作为请求的一部分接受,或者从特殊的 .scripts 索引中被检索。当然,你仍然可以使用存储在每个节点的 config/scripts/ 目录下的 Groovy 脚本。


四、三台es集群配置

elasticsearch-1

cluster.name: es_online_cluster
node.name: ${HOSTNAME}
node.data: true
node.master: true
path.data: /data/elasticsearch/es_data
path.logs: /data/elasticsearch/es_logs
bootstrap.memory_lock: true
network.host: 10.81.90.235
discovery.zen.ping.unicast.hosts: ["10.81.90.235:9300", "10.81.160.31:9300", "10.81.71.23:9300"]
discovery.zen.minimum_master_nodes: 2
action.destructive_requires_name: true

elasticsearch-2

cluster.name: es_online_cluster
node.name: ${HOSTNAME}
node.data: true
node.master: true
path.data: /data/elasticsearch/es_data
path.logs: /data/elasticsearch/es_logs
bootstrap.memory_lock: true
network.host: 10.81.160.31
discovery.zen.ping.unicast.hosts: ["10.81.90.235:9300", "10.81.160.31:9300", "10.81.71.23:9300"]
discovery.zen.minimum_master_nodes: 2
action.destructive_requires_name: true

elasticsearch-3

cluster.name: es_online_cluster
node.name: ${HOSTNAME}
node.data: true
node.master: true
path.data: /data/elasticsearch/es_data
path.logs: /data/elasticsearch/es_logs
bootstrap.memory_lock: true
network.host: 10.81.71.23
discovery.zen.ping.unicast.hosts: ["10.81.90.235:9300", "10.81.160.31:9300", "10.81.71.23:9300"]
discovery.zen.minimum_master_nodes: 2
action.destructive_requires_name: true

五、启动 elasticsearch 节点

node1: /usr/local/elasticsearch-6.3.2/bin/elasticsearch -d
node2: /usr/local/elasticsearch-6.3.2/bin/elasticsearch -d
node3: /usr/local/elasticsearch-6.3.2/bin/elasticsearch -d

六、查看集群状态

1、查看集群启动日志
观察三台服务器的 /data/elasticsearch/es_logs/es_online_cluster.log 日志,看是否有报错

2、查看集群状态
下面是es默认自带的命令

=^.^=
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/tasks
/_cat/indices
/_cat/indices/{index}
/_cat/segments
/_cat/segments/{index}
/_cat/count
/_cat/count/{index}
/_cat/recovery
/_cat/recovery/{index}
/_cat/health
/_cat/pending_tasks
/_cat/aliases
/_cat/aliases/{alias}
/_cat/thread_pool
/_cat/thread_pool/{thread_pools}
/_cat/plugins
/_cat/fielddata
/_cat/fielddata/{fields}
/_cat/nodeattrs
/_cat/repositories
/_cat/snapshots/{repository}
/_cat/templates

例如:查看节点状态
curl http://xxx.xxx.com/_cat/nodesv

ip           heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
10.81.90.235            6          68   0    0.00    0.01     0.05 mdi       -      es-online-1
10.81.160.31            6          65   0    0.00    0.01     0.05 mdi       -      es-online-2
10.81.71.23             8          65   0    0.00    0.01     0.03 mdi       *      es-online-3

例如:查看集群状态
curl http://xxx.xxx.com/_cluster/healthpretty

{
  "cluster_name" : "es_online_cluster",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 3,
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值