安装Elasticsearch
在es 5.0以后的版本需要java版本为1.8以上。否则启动时就会报错。
学习ES第一步就是安装运行它!
JAVA安装地址:www.java.com
ES下载地址:https://www.elastic.co/downloads/elasticsearch
tar xf elasticsearch-*.zip ;cd elasticsearch-*
执行以下命令可在前台启动:
./bin/elasticsearch
启动后,如果只有本地可以访问,尝试修改配置文件 elasticsearch.yml(注意配置文件格式不是以#开头的要空一格, :后要空一格) 为 network.host: 0.0.0.0
如果想在后台以守护进程模式运行,添加-d参数。
安装出现的问题
问题一error: can not run elasticsearch as root
- 因为安全问题elasticsearch 不让用root用户直接运行,所以要创建新用户
- liunx创建新用户 然后给创建的用户加密码
- 给安装目录775 的权限
- su进入新用户 启动
问题二:ERROR: bootstrap checks failed
在elasticsearch.yml中配置,注意要在Memory下面:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
问题三:max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
- 切换到root用户修改配置sysctl.conf
- vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
并执行命令:shell> sysctl -p
问题四:ERROR: bootstrap checks failed max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536] max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]
- 切换到root用户,编辑limits.conf 添加类似如下内容 vi /etc/security/limits.conf
- 添加如下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
问题五:max number of threads [1024] for user [lish] likely too low, increase to at least [2048]
切换到root用户,进入limits.d目录下修改配置文件。
vi /etc/security/limits.d/90-nproc.conf 修改如下内容:
* soft nproc 1024 #修改为 * soft nproc 2048
问题六:修改了以上内核参数,但是非root用户不生效
方法1.重启
方法2.需启动用户为sudo用户
(1)sudo 到root用户,然后
(2)su - youuser
(3)然后再启动
ES5集群安装
三台机器,配置
192.168.10.10 | master and data and head and cerebo |
192.168.10.11 | data |
192.168.10.12 | data |
三台机器都需要安装ES 5:
下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.3.tar.gz
解压:tar zxvf elasticsearch-5.3.0.tar.gz
三台机器除配置文件以外其他一样:
192.168.10.10:
cluster.name: wx-application
node.name: node-1
network.host: 192.168.192.10
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
path.logs: /home/es/elasticsearch-5.5.3/logs
path.data: /home/es/elasticsearch-5.5.3/data
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.192.10"]
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
192.168.10.11:
cluster.name: wx-application
node.name: node-2
network.host: 192.168.192.11
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
path.logs: /home/es/elasticsearch-5.5.3/logs
path.data: /home/es/elasticsearch-5.5.3/data
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.192.10"]
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
192.168.10.12:
cluster.name: wx-application
node.name: node-3
network.host: 192.168.192.12
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
path.logs: /home/es/elasticsearch-5.5.3/logs
path.data: /home/es/elasticsearch-5.5.3/data
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.192.10"]
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
用非root用户启动:-d 后台启动:./elasticsearch-
5.5.3/bin/elasticsearch
-d
内网环境下head 插件安装
公网环境下,head插件需要安装 node,然后用npm安装grunt。
1.由于head插件本质上还是一个nodejs的工程,因此需要安装node,使用npm来安装依赖的包
2.grunt是一个很方便的构建工具,可以进行打包压缩、执行等等的工作,5.0里的head插件就是通过grunt启动的。因此需要安装一下grunt。
既然是内网环境那么就需要找一台公网机器,将上面操作执行之后会在head目录下生成一个node_modules的文件夹。然后将整个head目录打包至内网机器。为寻求方便以下链接为我自己打包好的供ES5.x使用的head插件包(有需要的可以自己下载):
https://download.csdn.net/download/wangxin3618/10818935
修改head源码:
vim /home/es/elasticsearch-head/Gruntfile.js
connect: {
server: {
options: {
port: 9100,
hostname: '*',
base: '.',
keepalive: true
}
}
}
增加hostname属性,设置为*
修改连接地址:
目录:vim /home/es/elasticsearch-head/_site/app.js
修改head的连接地址:
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200"; (修改为es 的master地址)
把localhost修改成你es的服务器地址,如:
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.192.10:9200";
运行head:
·先跳转到head目录下
· grunt server &
安装cerebo
cerebo是kopf在es5上的替代者
wget
https://github.com/lmenezes/cerebro/releases/download/v0.
6.5/cerebro-
0.
6.5.tgz
bin/cerebro
服务被启动在前台,可以通过nohup命令启动到后台,通过supervisor等进程管理工具进行管理。他并没有需要在命令行额外配置的地方,可以直接通过外网端口访问此时访问 http://ip:9000/