Elasticsearch 的安装

版本问题

版本历史 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中对各个中间件的版本号做了统一。

单实例的安装

前往官网网址

https://www.elastic.co/

下载安装包

点击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

https://github.com/

搜索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集群就完成了

猜你喜欢

转载自blog.csdn.net/qqqq0199181/article/details/81234039