centos7 安装elasticsearch并安装IK分词和集群和安装elasticsearch-head

安装elasticsearch需要安装jdk,因此第一步需要安装jdk

一、下载安装jdk18

wget http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.rpm?AuthParam=1531461126_47127273bf1a78dda35ca8ffb0f0b284
mv jdk-8u171-linux-x64.rpm\?AuthParam\=1531461126_47127273bf1a78dda35ca8ffb0f0b284 jdk-8u171-linux-x64.rpm

或者
wget http://linux-1251121573.cosgz.myqcloud.com/soft/elk/jdk-8u171-linux-x64.rpm
yum -y localinstall jdk-8u171-linux-x64.rpm 
java -version

二、安装elasticsearch

elasticsearch可以直接下载安装包进行安装,然后直接运行bin文件夹下的elasticsearch文件即可
注意:elasticsearch不能使用root用户运行,需要使用普通用户运行,否则会报错

useradd es

wget http://linux-1251121573.cosgz.myqcloud.com/soft/elk/elasticsearch-6.2.2.zip
yum -y install unzip
unzip elasticsearch-6.2.2.zip 
chown -R es:es  elasticsearch-6.2.2
mv elasticsearch-6.2.2 /usr/share/
cd /usr/share/elasticsearch-6.2.2/

如果直接root用户运行会报错
这里写图片描述

[root@elasticsearch03 bin]# chmod +x elasticsearch
[root@elasticsearch03 bin]# ./elasticsearch
[2018-07-13T02:07:43,088][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] 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.2.jar:6.2.2]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.2.2.jar:6.2.2]
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.2.2.jar:6.2.2]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.2.2.jar:6.2.2]
        at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.2.2.jar:6.2.2]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.2.2.jar:6.2.2]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.2.2.jar:6.2.2]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
        at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:105) ~[elasticsearch-6.2.2.jar:6.2.2]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:172) ~[elasticsearch-6.2.2.jar:6.2.2]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:323) ~[elasticsearch-6.2.2.jar:6.2.2]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.2.2.jar:6.2.2]
        ... 6 more

于是需要创建普通用户

useradd es

由于使用root用户运行过一次,使用es用户继续运行还是会报错,报错如下:
这里写图片描述

[root@elasticsearch03 bin]# su es
[es@elasticsearch03 bin]$ ./elasticsearch
Error: Could not find or load main class org.elasticsearch.tools.launchers.JavaVersionChecker
[es@elasticsearch03 bin]$ exit
exit

出现这样的情况,把elasticsearch文件夹移动到其他文件夹中,然后再次使用es用户运行,就可以正常运行了。
参考:https://stackoverflow.com/questions/48818033/elasticsearch-could-not-find-or-load-main-class-org-elasticsearch-tools-launche
我这里移动到了 /usr/share目录下

这里写图片描述

三、elasticsearch-analysis-ik 分词的安装

elasticsearch-analysis-ik 分词的安装需要java环境
下载:(注意下载的版本,一般github上的tag会说明对于的 elasticsearch版本)
https://github.com/medcl/elasticsearch-analysis-ik
下载后解压至任意目录
sudo apt-get install maven 安装mvn
mvn package 或者mvn clean package
执行操作后会在target/releases目录下生成elasticsearch对应版本的ik插件
找到zip压缩包,之后解压至lasticsearch的plugins目录下,命令为ik文件夹,之后启动elasticsearch即可。
由于分词ik的是需要es对应的版本的,而且在相对于的版本中编译生成的,由于我的elasticsearch6.2.2编译了一次,并且也生成了对应的版本的ik分词,于是可以直接使用,而不需要再次编译
如下是下载地址:

wget http://linux-1251121573.cosgz.myqcloud.com/soft/elk/elasticsearch-analysis-ik-6.2.2.zip

下载完成之后直接放入到对应的文件夹中即可使用。

cd /usr/share/elasticsearch-6.2.2/plugins
wget http://linux-1251121573.cosgz.myqcloud.com/soft/elk/elasticsearch-analysis-ik-6.2.2.zip
unzip elasticsearch-analysis-ik-6.2.2.zip
mv elasticsearch ik
rm elasticsearch-analysis-ik-6.2.2.zip 

四、配置elasticsearch集群

编辑elasticsearch配置文件:

/usr/share/elasticsearch-6.2.2/configelasticsearch.yml 

分别在两台服务器中填写如下配置:
切记 cluster.name: node 这个名字两台服务器需要一样。
服务器一:

cluster.name: node          
node.name: node1
network.host: 192.168.1.223
discovery.zen.ping.unicast.hosts: ["192.168.1.224:9300"]

服务器二:

cluster.name: node          
node.name: node2
network.host: 192.168.1.224
discovery.zen.ping.unicast.hosts: ["192.168.1.223:9300"]

完成之后保存即可,集群配置完毕。

五、安装elasticsearch-head

一、elasticsearch6.X版本之后,不支持命令行安装head插件,需要手动安装。
https://github.com/mobz/elasticsearch-head
或者: http://linux-1251121573.cosgz.myqcloud.com/soft/elk/elasticsearch-head-master.zip

二、安装nodejs
直接无法yum安装noodejs的,需要添加nodejs源
curl –silent –location https://rpm.nodesource.com/setup | bash -
安装
yum install -y nodejs
安装完成后,进入 elasticsearch-head插件文件夹。
执行npm install -g grunt -cli 命令安装grunt
之后npm install 进行安装pathomjs
以上即安装完所有插件
执行grunt server 命令即可启动elasticsearch-head
通过访问:ip:9100 浏览web页面。
简单安装完elasticsearch-head是无法连接elasticsearch服务器的,
需要修改 elasticsearch中/config/elasticsearch.yml配置文件,添加如下参数:
增加如下字段
http.cors.enabled: true
http.cors.allow-origin: “*”

插件同样需要开放9100端口
firewall-cmd –zone=public –add-port=9100/tcp –permanent
firewall-cmd –reload

开放防火墙端口

firewall-cmd –zone=public –add-port=9200/tcp –permanent
firewall-cmd –zone=public –add-port=9300/tcp –permanent
firewall-cmd –reload

因为centos有防火墙,所以外网无法访问。必须开放防火墙端口,才可以外网访问。

常见问题问题

[2018-07-13T02:44:39,316][INFO ][o.e.n.Node               ] [4dNQrAa] starting ...
[2018-07-13T02:44:39,564][INFO ][o.e.t.TransportService   ] [4dNQrAa] publish_address {127.0.0.1:9300}, bound_addresses {[::1]:9300}, {127.0.0.1:9300}
[2018-07-13T02:44:39,585][WARN ][o.e.b.BootstrapChecks    ] [4dNQrAa] max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2018-07-13T02:44:39,586][WARN ][o.e.b.BootstrapChecks    ] [4dNQrAa] max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

问题翻译过来就是:elasticsearch用户拥有的可创建文件描述的权限太低,至少需要65536;
解决办法:
一:
#切换到root用户修改
vi /etc/security/limits.conf 
# 在最后面追加下面内容
*** hard nofile 65536
*** soft nofile 65536 
***  是启动ES的用户
修改成
* hard nofile 65536
* soft nofile 65536
*的意思就是所有用户生效,也可以替换成es,这个表示让所有用户生效

之后运行ulimit -Hn 查看效果



二:
切换到root用户修改配置sysctl.conf
vi /etc/sysctl.conf 
添加下面配置:
vm.max_map_count=655360
并执行命令
sysctl -p

猜你喜欢

转载自blog.csdn.net/diyiday/article/details/81030796