Elasticsearch安装及配置
2020-01-20 本文已影响0人
哈哈新开张
中国网下载地址,各种版本和平台的都有 https://elasticsearch.cn/download/
java 下载 https://www.oracle.com/technetwork/java/javase/downloads/index.html
环境 Centos7 ES7.5
注意事项:
1 Java版本不要过低
安装java,下载后解压缩,复制到自己指定目录
vim /etc/profile 文件末尾添加
export JAVA_HOME=/usr/local/jdk1.8 #指定自己的jdk文件路径
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
执行:source /etc/profile 使配置生效
启动ES时可能会报错如下
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
1 修改/etc/security/limits.conf文件,增加配置,用户退出后重新登录生效;用户退出后重新登录生效;用户退出后重新登录生效
*** soft nofile 65536
*** hard nofile 65536
其中*** 为启动ES的用户,切记不要用root用户启动
2 修改/etc/sysctl.conf文件,增加配置
vi /etc/sysctl.conf
vm.max_map_count=262144
sysctl -p
2 启动Elasticsearch时,不要使用root用户,最好新建一个group和用户,命令如下
groupadd elsearch
useradd elsearch -g elsearch
passwd elsearch
启动前要检查配置的端口(9200)是否开放,否则web端无法访问
firewall-cmd --zone=public --list-ports (查看所有开放的端口)
firewall-cmd --zone=public --add-port=9200/tcp --permanent (开放9200端口)
firewall-cmd --reload (重新加载使之神效)
进入其目录,更改elasticsearch文件夹及内部文件的所属用户及组为elsearch:elsearch
chown -R elsearch:elsearch elasticsearch-6.8.0
此时要保证 启动用户有执行es安装目录的权限,端口打开,如果设置开机启动如
在/etc/rc.d/rc.local 中添加 su cq -c "/usr/local/elastic/bin/elasticsearch -d" 并给此文件可执行权限
配置详解
elasticsearch的config文件夹里面有两个配置文 件:elasticsearch.yml和logging.yml,第一个是es的基本配置文件,第二个是日志配置文件,es也是使用log4j来记录日 志的,所以logging.yml里的设置按普通log4j配置文件来设置就行了。下面主要讲解下elasticsearch.yml这个文件中可配置的 东西。
#集群名称,同一个集群内的所有节点集群名称必须保持一致
cluster.name: fuck
#集群内的节点名称,同一个集群内的节点名称要具备唯一性
node.name: node_41
#允许节点是否可以成为一个master节点,ES是默认集群中的第一台机器成为master,如果这台机器停止就会重新选举
node.master: true
#允许该节点存储索引数据(默认开启)
#关于Elasticsearch节点的角色功能详解,请看:https://www.dockerc.com/elasticsearch-master-or-data/
node.data: true
#es绑定地址,支持IPv4及IPv6,默认绑定127.0.0.1;es的HTTP端口和集群通信端口就会监听在此地址上
network.host: 10.150.55.94
#是否启用tcp无延迟,true为启用tcp不延迟,默认为false启用tcp延迟
network.tcp.no_delay: true
#是否启用TCP保持活动状态,默认为true
network.tcp.keep_alive: true
#设置集群节点通信的TCP端口,默认就是9300
transport.tcp.port: 9300
#设置是否压缩TCP传输时的数据,默认为false
transport.tcp.compress: true
#是否开启跨域访问
http.cors.enabled: true
#开启跨域访问后的地址限制,*表示无限制
http.cors.allow-origin: "*"
#设置http请求内容的最大容量,默认是100mb
http.max_content_length: 100mb
#定义ES对外调用的http端口,默认是9200
http.port: 9200
#集群内同时启动的数据任务个数,默认是2个
cluster.routing.allocation.cluster_concurrent_rebalance: 2
#添加或删除节点及负载均衡时并发恢复的线程个数,默认4个
cluster.routing.allocation.node_concurrent_recoveries: 4
#初始化数据恢复时,并发恢复线程的个数,默认4个
cluster.routing.allocation.node_initial_primaries_recoveries: 4
# 开启 xpack 功能,如果要禁止使用密码,请将以下内容注释,直接启动不需要设置密码
# 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
###################Elasticsearch7.0新增配置
#写入候选主节点的设备地址,来开启服务时就可以被选为主节点,由discovery.zen.ping.unicast.hosts:参数改变而来
discovery.seed_hosts: ["10.150.55.94:9301", "10.150.55.95:9301","10.150.30.246:9301"]
#写入候选主节点的设备地址,来开启服务时就可以被选为主节点
cluster.initial_master_nodes: ["10.150.55.94:9301", "10.150.55.95:9301","10.150.30.246:9301"]
#设置每个节点在选中的主节点的检查之间等待的时间。默认为1秒
cluster.fault_detection.leader_check.interval: 15s
discovery.cluster_formation_warning_timeout: 30s
#Elasticsearch7新增参数,启动后30秒内,如果集群未形成,那么将会记录一条警告信息,警告信息未master not fount开始,默认为10秒
cluster.join.timeout: 30s
#Elasticsearch7新增参数,节点发送请求加入集群后,在认为请求失败后,再次发送请求的等待时间,默认为60秒
cluster.publish.timeout: 90s
#Elasticsearch7新增参数,设置主节点等待每个集群状态完全更新后发布到所有节点的时间,默认为30秒
###################本地网关模块在整个集群重新启动时存储集群状态和分片数据。以下参数是配置 尝试恢复集群状态和集群数据的触发点,必须在每个主节点上都做做如下配置。
#预期在集群中的(数据或主)节点数。只要预期的节点数已加入集群,就会启动本地分片的恢复。默认为0
gateway.expected_nodes: 0
#预期在集群中的主节点数。一旦预期的主节点数加入集群,就会开始恢复本地分片。默认为0
gateway.expected_master_nodes: 0
#预期在集群中的数据节点数。一旦预期数量的节点已加入集群,就会启动本地分片的恢复。默认为0
gateway.expected_data_nodes: 0
#如果未达到预期的节点数,则恢复过程将等待配置的时间量,然后再尝试恢复。如果只要配置了expected_nodes,则默认这个参数值为5m
gateway.recover_after_time: 5m
#一旦recover_after_time持续时间超时,只要满足以下条件,恢复就会开始:
#只要此许多数据或主节点已加入集群,即可恢复。
gateway.recover_after_nodes: 2
#只要这么多主节点已加入集群,就可以恢复。
gateway.recover_after_master_nodes
#只要这么多数据节点已加入集群,就可以恢复。
gateway.recover_after_data_nodes
###################以下配置取默认值,先注释
#ES是搜索引擎,会创建文档,建立索引,此路径是索引的存放目录,如果我们的日志数据较为庞大,那么索引所占用的磁盘空间也是不可小觑的
#这个路径建议是专门的存储系统,如果不是存储系统,最好也要有冗余能力的磁盘,此目录还要对elasticsearch的运行用户有写入权限
#path可以指定多个存储位置,分散存储,有助于性能提升,以至于怎么分散存储请看详解https://www.dockerc.com/elk-theory-elasticsearch/
#path.data: /data/ES-Cluster/master/ES-master-10.150.55.94/data1,/data/ES-Cluster/master/ES-master-10.150.55.94/data2
#elasticsearch专门的日志存储位置,生产环境中建议elasticsearch配置文件与elasticsearch日志分开存储
#path.logs: /data/ES-Cluster/master/ES-master-10.150.55.94/logs
#在ES运行起来后锁定ES所能使用的堆内存大小,锁定内存大小一般为可用内存的一半左右;锁定内存后就不会使用交换分区
#如果不打开此项,当系统物理内存空间不足,ES将使用交换分区,ES如果使用交换分区,那么ES的性能将会变得很差
#bootstrap.memory_lock: true
#network.tcp.reuse_address: true
#是否应该重复使用地址。默认true,在Windows机器上默认为false
#tcp发送缓冲区大小,默认不设置
#network.tcp.send_buffer_size: 128mb
#tcp接收缓冲区大小,默认不设置
#network.tcp.receive_buffer_size: 128mb
###################Elasticsearch7.0版本已被移除的老配置
discovery.zen.ping.unicast.hosts: ["10.150.55.94:9301", "10.150.55.95:9301","10.150.30.246:9301"]
#写入候选主节点的设备地址,来开启服务时就可以被选为主节点;默认主机列表只有127.0.0.1和IPV6的本机回环地址;上面是书写格式,discover意思为发现,zen是判定集群成员的协议,unicast是单播的意思,ES5.0版本之后只支持单播的方式来进行集群间的通信,hosts为主机;总结下来就是:使用zen协议通过单播方式去发现集群成员主机,在此建议将所有成员的节点名称都写进来,这样就不用仅靠集群名称cluster.name来判别集群关系了
#为了避免脑裂,集群的最少节点数量为,集群的总节点数量除以2加一,通过这个配置保证集群中具备master资格的节点达到这个个数再开始选举
discovery.zen.minimum_master_nodes: 2
#探测超时时间,默认是3秒,我们这里填120秒是为了防止网络不好的时候ES集群发生脑裂现象
discovery.zen.fd.ping_timeout: 120s
#探测次数,如果每次探测90秒,连续探测超过六次,则认为节点该节点已脱离集群,默认为3次
discovery.zen.fd.ping_retries: 6
#节点每隔15秒向master发送一次心跳,证明自己和master还存活,默认为1秒太频繁,
discovery.zen.fd.ping_interval: 15s