版本问题
版本历史 1.x->2.x->5.x-6.x
为什么版本从2.x一下子就跳到5.x呢?
由于ES是ELK(Elasticsearch+logstash+Kibana)技术栈的一员,2.x的时候各个组件之间的版本不统一,版本号管理比较乱,比如ES是2.x而Kibana对应的版本为4.x。因此在5.x中对各个中间件的版本号做了统一。
单实例的安装
前往官网网址
下载安装包
点击download,我选择下载最新的版本6.3.2,选择下载tar格式的安装包,下载完成后将安装包elasticsearch-6.3.2.tar.gz放在/opt目录下。
解压安装包
cd /opt
tar -zxvf elasticsearch-6.3.2.tar.gz
解压后进入elasticsearch-6.3.2目录
启动ES
注意:要启动ES必须先安装jdk,该版本的ES要求jdk的版本在1.8以上。
sh ./bin/elasticsearch
结果并没有启动成功,而是报错:can not run elasticsearch as root
因为安全为题,不能用root启动ES,因此需要创建新用户,作为elasticsearch-6.3.2目录的拥有者
第一步:liunx创建新用户 adduser XXX 然后给创建的用户加密码 passwd XXX 输入两次密码。
第二步:切换刚才创建的用户 su XXX 然后执行elasticsearch 会显示Permission denied 权限不足。
第三步:给新建的XXX赋权限,chmod 777 * 这个不行,因为这个用户本身就没有权限,肯定自己不能给自己付权限。所以要用root用户登录付权限。
第四步:root给XXX赋权限,chown -R XXX /你的elasticsearch安装目录。
先切换到普通用户
su XXX
然后再次输入启动命令
cd /opt
tar -zxvf elasticsearch-6.3.2.tar.gz
启动日志中如果看到started说明ES已经启动成功啦!
但是,这样的启动其他机器是无法访问的**
其他机器想要访问,需要修改配置文件/opt/elasticsearch-6.3.2/config/elasticsearch.yml添加
network.host: 0.0.0.0
http.port: 9200
保存配置后再次启动,又冒出新的问题:
1、安装出现的错误一: max file descriptors [4096] for XXX process likely too low, increase to at least [65536]
解决方法:切换到root用户,进入vi /etc/security/limits.conf ,增加配置(保存后注意切回XXX用户的时候才能生效,sudo 修改的不能立即生效):
- soft nofile 65536
- hard nofile 65536
2、安装错误二: max number of threads [1024] for user [XXX] likely too low, increase to at least [2048]
解决方法:进入limits.d下的配置文件:vi /etc/security/limits.d/90-nproc.conf ,修改配置如下:
- soft nproc 1024
修改为: - soft nproc 2048
如果这样还没解决再加一行 hard nproc 2048
3、安装错误三: max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
解决方法:修改sysctl文件:vi /etc/sysctl.conf ,增加下面配置项:
增加改行配置:vm.max_map_count=655360
保存退出后,执行:
sysctl -p
再次启动成功
最后提醒一下装在虚拟机中的朋友: 如果不关闭防火墙的话外机也是访问不了ES的,至于关闭防火墙的方法因操作系统不同而不同,可以自行搜索。
centos7 的关闭方法
//临时关闭
systemctl stop firewalld
//禁止开机启动
systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
head插件的安装
打开github
搜索head插件
在搜索框中输入elasticsearch-head,点击回车
下载head插件
选择mobz/elasticsearch-head
下载它的zip安装包,elasticsearch-head-master.zip
解压
unzip elasticsearch-head-master.zip
cd elasticsearch-head-master/
安装
head的安装前提是已经安装node,且版本大于6.0,node的安装参考 linux安装node环境
npm install
安装成功后,启动head
npm run start
启动成功,head的默认端口是9100
打开界面
浏览器访问localhost:9100 看到如下界面
发现状态还是未连接,这是因为es的配置中还有参数需要添加,打开/opt/elasticsearch-6.3.2/config/elasticsearch.yml添加
http.cors.enabled: true //如果启用了 HTTP 端口,那么此属性会指定是否允许跨源 REST 请求。
http.cors.allow-origin: "*" //如果 http.cors.enabled 的值为 true,那么该属性会指定允许 REST 请求来自何处。
再次重启ES和head
分布式安装
配置master节点
将之前已经安装的节点配置为集群中的master点
cluster.name: wei //指定集群名称
node.name: master //指定节点名称
node.master: true //是否为master节点
重启es
[weiliangwei@localhost config]$ ps -ef|grep elasticsearch
root 2941 2920 0 07:53 tty1 00:00:00 vi elasticsearch.yml
weilian+ 2997 2814 0 08:02 pts/0 00:00:00 vi elasticsearch.yml
weilian+ 3576 1 0 08:51 pts/0 00:01:23 /opt/jdk1.8.0_171/bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.io.tmpdir=/tmp/elasticsearch.sDwXls1H -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=data -XX:ErrorFile=logs/hs_err_pid%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:logs/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=32 -XX:GCLogFileSize=64m -Des.path.home=/opt/elasticsearch-6.3.2 -Des.path.conf=/opt/elasticsearch-6.3.2/config -Des.distribution.flavor=default -Des.distribution.type=tar -cp /opt/elasticsearch-6.3.2/lib/* org.elasticsearch.bootstrap.Elasticsearch -d
weilian+ 3606 3576 0 08:52 pts/0 00:00:00 /opt/elasticsearch-6.3.2/modules/x-pack/x-pack-ml/platform/linux-x86_64/bin/controller
weilian+ 4036 3242 0 12:09 pts/0 00:00:00 grep --color=auto elasticsearch
[weiliangwei@localhost config]$ kill -9 3576
[weiliangwei@localhost config]$ ps -ef|grep elasticsearch
root 2941 2920 0 07:53 tty1 00:00:00 vi elasticsearch.yml
weilian+ 2997 2814 0 08:02 pts/0 00:00:00 vi elasticsearch.yml
weilian+ 4038 3242 0 12:09 pts/0 00:00:00 grep --color=auto elasticsearch
[weiliangwei@localhost config]$ cd ..
[weiliangwei@localhost elasticsearch-6.3.2]$ ./bin/elasticsearch -d
重启后head界面的集群名称和节点名称改变了
配置两个slave节点
安装slave节点的ES跟安装master节点是一样的,不加赘述。
需要注意的配置:
cluster.name: wei // 集群名称
node.name: slave2 //节点名称
discovery.zen.ping.unicast.hosts: ["192.168.237.130"] //master节点的ip
配置好后把两个slave节点也启动
就这样一个ES集群就完成了