1. 安装前准备
- ES主节点选择192.168.10.115, 一共三个节点(192.168.10.114/115/116);
- 安装环境CentOS 7.3, JDK1.8.0_131
- 下载:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz
2. 配置ElasticSearch
2.1 修改系统相关文件
启动前需要修改配置文件, 具体原因请看后面“问题汇总部分”
PS: 每个节点都要配置
- 设置内核参数
vim /etc/sysctl.conf
添加如下内容:
fs.file-max=65536
vm.max_map_count=262144
之后可以使用sysctl –a查看 –p刷新
- 设置资源参数
[root@hadoop3 opt]# vi /etc/security/limits.conf
# 添加一下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
- 修改进程数
[root@hadoop3 opt]# vi /etc/security/limits.d/20-nproc.conf
* soft nproc 4096
2.2 修改集群配置文件
一共3个节点,拥有相同的集群名,修改节点名称和对应的IP即可
# 配置es的集群名称, es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。
cluster.name: bi-cluster
# 节点名称
node.name: node-master
# 存储数据的目录
path.data: /home/elasticsearch/data
# 存储日志的目录
path.logs: /home/elasticsearch/logs
# 设置绑定的ip地址还有其它节点和该节点交互的ip地址
network.host: 0.0.0.0
# 指定http端口,你使用head、kopf等相关插件使用的端口
http.port: 9200
# 设置节点间交互的tcp端口,默认是9300
transport.tcp.port: 9300
#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点。
discovery.zen.ping.unicast.hosts: ["10.108.4.203:9300", "10.108.4.204:9300", "10.108.4.205:9300"]
#如果没有这种设置,遭受网络故障的集群就有可能将集群分成两个独立的集群 - 分裂的大脑 - 这将导致数据丢失
discovery.zen.minimum_master_nodes: 3
配置项要统一,要么加空格,要么都不加。
其它节点的文件直接拷贝过去依次修改:
scp -r config/elasticsearch.yml root@hadoop5:/opt/elasticsearch-6.2.4/config/
启动
[elastic@hadoop3 elasticsearch-6.2.4]$ bin/elasticsearch -d
-d 表示后台运行。
问题汇总
问题1. 执行./bin/elasticsearch的时候会报错
[2018-06-01T15:54:33,974][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [node-master] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.2.4.jar:6.2.4]
at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.2.4.jar:6.2.4]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.2.4.jar:6.2.4]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.2.4.jar:6.2.4]
官方大概的意思是这么说的:
永远不要以root用户身份运行Elasticsearch,因为这将允许任何成功的努力绕过其他安全层来在您的服务器上执行任何操作。 如果它检测到它以root身份运行,那么弹性搜索将拒绝启动,但是这是非常重要的,因此它值得双重和三重检查。
所以需要新增普通用户而不要使用root用户:
[root@hadoop3 opt]# groupadd es
[root@hadoop3 opt]# useradd es -g es -p es
[root@hadoop3 opt]# chown -R es:es elasticsearch-6.2.4
问题2. 用新用户启动报错:
ERROR: [3] bootstrap checks failed
[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[3]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
解决方式:
请看文章“系统相关配置部分”
1.设置内核参数
2.设置资源参数
问题3.
报错max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
是因为操作系统安全检测配置影响的,我们需要切换到root用户下做如下配置:
[root@hadoop3 opt]# vi /etc/security/limits.conf
# 添加一下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096