阿里云安装 ElasticSearch 笔记

阿里云安装 ElasticSearch 笔记

必要条件

环境须要JDK 8 及以上html

下载解压安装包

详细步骤java

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.zipnode

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.zip.sha512linux

若是没有安装shasum命令须要执行下面的命令 -> 验证文件是否完整web

yum install perl-Digest-SHAbootstrap

shasum -a 512 -c elasticsearch-6.5.4.zip.sha512vim

unzip elasticsearch-6.5.4.zip网络

cd elasticsearch-6.5.4/cors

建立用户并受权

若是直接使用root去启动 ElasticSearch 会报错负载均衡

org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root

由于官方不建议使用 root 启动,因此要新建用户并受权

useradd elasticUser

给 elasticUser 受权

chown -R elasticUser:elasticUser /usr/local/tools/elasticsearch-6.5.4

切换到 elasticUser 用户

su elasticUser

启动 ElasticSearch

cd /usr/local/tools/elasticsearch-6.5.4

./bin/elasticsearch

此时能够启动 ElasticSearch,可能报出

JavaHotSpot(TM) 64-Bit Server VM warning: INFO: error='Cannotallocate memory' (errno=12)

这是说明 Java 虚拟机的内存不够,此时能够修改 jvm.options 文件

vim config/jvm.options

-Xms1g
-Xmx1g

修改成 500M或者更小,根据机器自定义配置

-Xms500m
-Xmx500m

可是外网是没法访问的,此时须要修改配置文件

vim config/elasticsearch.yml

在尾部添加

network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["0.0.0.0"]

此时再启动 ElasticSearch 发现会报错

ERROR: [2] bootstrap checks failed
# maxfile descriptors为最大文件描述符,设置其大于65536便可
[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
# max_map_count文件包含限制一个进程能够拥有的VMA(虚拟内存区域)的数量,系统默认是65530,修改为262144
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

此时须要切换 root 用户更改两个配置文件

su root

而后输入 root 用户的密码,开始更改文件

对于 [1] 修改 /etc/security/limits.conf文件,此文件是 linux 资源使用配置文件,能够用ulimit -a查看,soft 是一个警告值,而 hard 则是一个真正意义的阀值,*表示全部用户

vim /etc/security/limits.conf

在最底部增长

# 打开文件的最大数目
* - nofile 65536
# 最大锁定内存地址空间
* - memlock unlimited

对于 [2] 修改 /etc/sysctl.conf文件,此文件是 linux 系统控制文件,做用是用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录/proc/sys中。它包含一些 TCP/IP 堆栈和虚拟内存系统的高级选项。

vim /etc/sysctl.conf

在最底部增长

# 文件包含限制一个进程能够拥有的 VMA(虚拟内存区域)的数量,默认是 65530
vm.max_map_count=262144

修改此配置须要重启机器才能生效

重要配置文件 elaticsearch.yml

cluster.name: elasticsearch

配置 elasticsearch 的集群名称,默认是 elasticsearch。elasticsearch 会自动发如今同一网段下的集群名为elasticsearch 的主机,若是在同一网段下有多个集群,就能够用这个属性来区分不一样的集群。生成环境时建议更改

node.name: node-1

节点名,默认随机指定一个 name 列表中名字,该列表在 elasticsearch 的 jar 包中config文件夹里name.txt文件中,其中有不少做者添加的有趣名字,大部分是漫威动漫里面的人物名字。生成环境中建议更改以能方便的指定集群中的节点对应的机器

node.attr.rack: r1

指定节点的部落属性,这是一个比集群更大的范围

node.master: true

指定该节点是否有资格被选举成为node,默认是true,elasticsearch 默认集群中的第一台启动的机器为master,若是这台机挂了就会从新选举master

node.data: true

指定该节点是否存储索引数据,默认true。若是节点配置node.master: falsenode.data: false,则该节点将起到负载均衡的做用

index.number_of_shards: 5

设置默认索引分片个数,默认为5片。索引分片对ES的查询性能有很大的影响,在应用环境,应该选择适合的分片大小

index.number_of_replicas: 1

设置默认索引副本个数,默认为1个副本。此处的1个副本是指index.number_of_shards的一个彻底拷贝;默认 5 个分片 1 个拷贝;即总分片数为 10,是索引建立后一次生成的,后续不可更改设置 ,number_of_replicas 是能够经过API去实时修改设置的

path.conf: /path/to/conf

设置配置文件的存储路径,默认是 ElasticSearch 根目录下的config文件夹

path.data: /path/to/data

设置索引数据的存储路径,默认是 ElasticSearch 根目录下的 data 文件夹,能够设置多个存储路径,用逗号隔开

path.logs: /path/to/logs

设置日志文件的存储路径,默认是 ElasticSearch 根目录下的logs文件夹

path.plugins: /path/to/plugins

设置插件的存放路径,默认是 ElasticSearch 根目录下的 plugins 文件夹

bootstrap.memory_lock: true

设置为true来锁住内存,防止 ElasticSearch 内存被交换出去。由于当 jvm 开始内存扩容或者收缩时 ElasticSearch 的效率会下降,因此要保证它不swap,能够把ES_MIN_MEMES_MAX_MEM两个环境变量设置成同一个值,而且保证机器有足够的内存分配给 ElasticSearch 。同时也要容许 ElasticSearch 的进程能够锁住内存,linux 下能够经过ulimit -l unlimited命令锁住内存

network.host: 192.168.0.1

这个参数是用来同时设置bind_hostpublish_host两个参数

network.bind_host: 192.168.0.1

只有本机能够访问http接口

network.publish_host: 192.168.0.1

设置其它节点和该节点交互的ip地址,若是不设置它会自动设置,值必须是个真实的ip地址

http.port: 9200

设置对外服务的http端口,默认为9200

transport.tcp.port

设置 TCP 传输端口,这个端口很是重要,节点以前传输数据也是走这个TCP端口,官方提供的ES JAVA API也是经过这个端口传输数据的

transport.tcp.compress: true

设置是否压缩TCP传输时的数据,默认为false,不压缩

http.max_content_length: 100mb

设置请求内容的最大容量,默认100mb

http.enabled: false

使用http协议对外提供服务,默认为true,开启

使用 head 等插件监控集群信息,须要打开如下配置项

http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-credentials: true

gateway.recover_after_nodes: 3

设置集群中 N 个节点启动时进行数据恢复,默认为1

discovery.zen.minimum_master_nodes: 1

设置这个参数来保证集群中的节点能够知道其它 N 个有master资格的节点,经过配置这个参数来防止集群脑裂现象 (集群总节点数量/2)+1。默认为1,对于大的集群来讲,能够设置大一点的值(2~4)

discovery.zen.ping.timeout: 3s

设置集群中自动发现其它节点时ping链接超时时间,默认为3秒,对于比较差的网络环境能够高点的值来防止自动发现时出错

discovery.zen.ping.multicast.enabled: false

设置是否打开多播发现节点,默认是true

discovery.zen.ping.unicast.hosts: [“host1”, “host2”]

设置集群中master节点的初始列表,能够经过这些节点来自动发现新加入集群的节点,能够在host后面加上端口host:port

action.destructive_requires_name: true

设置是否能够经过正则或者_all删除或者关闭索引库,默认true表示必须须要显式指定索引库名称,生产环境建议设置为true,删除索引库的时候必须显式指定,不然可能会误删索引库中的索引库