centos7中安装elasticsearch5.2

    xiaoxiao2021-03-25  66

    环境

    操作系统: centos7 elasticsearch:5.2.2

    安装步骤

    我采用的是下载压缩包的方式安装,也可以利用rpm来安装,但是,这样会把配置文件和数据文件,弄到各个不同的目录,这我很不喜欢。我喜欢像window目录一样,都在一起。

    先安装Java8+

    由于elasticsearch是用Java写的,所以需要安装至少Java8以上版本。 安装方法,可以参考官网。

    下载elasticsearch

    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.2.tar.gz sha1sum elasticsearch-5.2.2.tar.gz tar -xzf elasticsearch-5.2.2.tar.gz

    其中sha1sum是用校验文件大小的。过程是: 1、先下载文件 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.2.tar.gz.sha1 2、在执行

    sha1sum elasticsearch-5.2.2.tar.gz

    显示出来的值与下载文件的值进行比对。

    命令tar -xzf elasticsearch-5.2.2.tar.gz是解压缩包。

    安装elasticsearch

    参考网上大神的个人习惯: 1、在/opt中创建setups文件夹,专门用来存放下载的第三方安装包。 我目前是放在centos7中home中的下载目录中。

    2、在/usr中创建programe_files文件夹,类似于window中的Programe Files文件夹。 用来存放安装的程序。

    所以我把解压好的elasticsearch-5.2.2文件夹剪切到/usr/programe_files/中。

    启动elasticsearch

    1、用命令行启动

    我们先进入到/usr/programe_files/elasticsearch-5.2.2

    ./bin/elasticsearch

    启动后可以在命令行中看到:

    [2017-03-12T16:46:42,692][INFO ][o.e.n.Node ] [] initializing ... [2017-03-12T16:46:43,427][INFO ][o.e.e.NodeEnvironment ] [XGt4N_o] using [1] data paths, mounts [[/ (rootfs)]], net usable_space [12.8gb], net total_space [16.9gb], spins? [unknown], types [rootfs] [2017-03-12T16:46:43,428][INFO ][o.e.e.NodeEnvironment ] [XGt4N_o] heap size [1.9gb], compressed ordinary object pointers [true] [2017-03-12T16:46:43,429][INFO ][o.e.n.Node ] node name [XGt4N_o] derived from node ID [XGt4N_oLREa1KnaK-rm_8A]; set [node.name] to override [2017-03-12T16:46:43,517][INFO ][o.e.n.Node ] version[5.2.2], pid[4179], build[f9d9b74/2017-02-24T17:26:45.835Z], OS[Linux/3.10.0-514.el7.x86_64/amd64], JVM[Oracle Corporation/OpenJDK 64-Bit Server VM/1.8.0_102/25.102-b14] [2017-03-12T16:46:48,699][INFO ][o.e.p.PluginsService ] [XGt4N_o] loaded module [aggs-matrix-stats] [2017-03-12T16:46:48,699][INFO ][o.e.p.PluginsService ] [XGt4N_o] loaded module [ingest-common] [2017-03-12T16:46:48,699][INFO ][o.e.p.PluginsService ] [XGt4N_o] loaded module [lang-expression] [2017-03-12T16:46:48,699][INFO ][o.e.p.PluginsService ] [XGt4N_o] loaded module [lang-groovy] [2017-03-12T16:46:48,700][INFO ][o.e.p.PluginsService ] [XGt4N_o] loaded module [lang-mustache] [2017-03-12T16:46:48,700][INFO ][o.e.p.PluginsService ] [XGt4N_o] loaded module [lang-painless] [2017-03-12T16:46:48,700][INFO ][o.e.p.PluginsService ] [XGt4N_o] loaded module [percolator] [2017-03-12T16:46:48,700][INFO ][o.e.p.PluginsService ] [XGt4N_o] loaded module [reindex] [2017-03-12T16:46:48,700][INFO ][o.e.p.PluginsService ] [XGt4N_o] loaded module [transport-netty3] [2017-03-12T16:46:48,700][INFO ][o.e.p.PluginsService ] [XGt4N_o] loaded module [transport-netty4] [2017-03-12T16:46:48,701][INFO ][o.e.p.PluginsService ] [XGt4N_o] no plugins loaded [2017-03-12T16:46:58,283][INFO ][o.e.n.Node ] initialized [2017-03-12T16:46:58,296][INFO ][o.e.n.Node ] [XGt4N_o] starting ... [2017-03-12T16:46:59,502][INFO ][o.e.t.TransportService ] [XGt4N_o] publish_address {192.168.116.128:9300}, bound_addresses {192.168.116.128:9300} [2017-03-12T16:46:59,566][INFO ][o.e.b.BootstrapChecks ] [XGt4N_o] bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks [2017-03-12T16:47:00,959][INFO ][o.e.m.j.JvmGcMonitorService] [XGt4N_o] [gc][young][2][7] duration [863ms], collections [1]/[1.3s], total [863ms]/[4.7s], memory [83.7mb]->[29.8mb]/[1.9gb], all_pools {[young] [60.1mb]->[1022.5kb]/[66.5mb]}{[survivor] [8.3mb]->[8.3mb]/[8.3mb]}{[old] [15.2mb]->[20.8mb]/[1.9gb]} [2017-03-12T16:47:00,960][WARN ][o.e.m.j.JvmGcMonitorService] [XGt4N_o] [gc][2] overhead, spent [863ms] collecting in the last [1.3s] [2017-03-12T16:47:02,906][INFO ][o.e.c.s.ClusterService ] [XGt4N_o] new_master {XGt4N_o}{XGt4N_oLREa1KnaK-rm_8A}{7juSSOMuRDmD0-2EZTpfwQ}{192.168.116.128}{192.168.116.128:9300}, reason: zen-disco-elected-as-master ([0] nodes joined) [2017-03-12T16:47:03,565][INFO ][o.e.g.GatewayService ] [XGt4N_o] recovered [0] indices into cluster_state [2017-03-12T16:47:03,770][INFO ][o.e.h.HttpServer ] [XGt4N_o] publish_address {192.168.116.128:9200}, bound_addresses {192.168.116.128:9200} [2017-03-12T16:47:03,770][INFO ][o.e.n.Node ] [XGt4N_o] started

    其中192.168.116.128是我自己配的,后面讲,你们应该显示的是localhost

    这时它会占用命令行窗口,ctrl+c即可关闭elasticsearch。

    我们在另开一个命令行窗口执行:

    curl http://localhost:9200

    返回的结果类似于:

    { "name" : "XGt4N_o", "cluster_name" : "elasticsearch", "cluster_uuid" : "qhA446xpR5WYwcVa5gTz7Q", "version" : { "number" : "5.2.2", "build_hash" : "f9d9b74", "build_date" : "2017-02-24T17:26:45.835Z", "build_snapshot" : false, "lucene_version" : "6.4.1" }, "tagline" : "You Know, for Search" }

    作为守护进程来启动

    由于上面的启动方式会占用命令行,所以可以作为守护进程来启动,这样就不会占用命令行窗口啦。 要作为守护进程: ① 添加 -d参数即可。

    ./bin/elasticsearch -d -p pid

    后面的-p pid会在当前目录中生成pid文件,里面记录了进程的IP。

    要关闭elasticsearch我们在当前目录执行:

    kill `cat pid`

    注意: 假设我们不小心把pid文件删除啦,执行上面的语句是有问题的。 这时我们需要手动这么做: ①执行ps -ef | grep elasticsearch 找到进程id ②执行kill 找的的进程id。

    但是呢?我觉得这样启动记得命令太多了,所以我写成了一个shell脚本。

    #!/bin/bash if [ $1 == "start" ];then ./bin/elasticsearch -d -p pid elif [ $1 == "stop" ];then kill `cat pid` else echo "Please make sure the position variable is start or stop." fi

    这样我就可以这样来执行: (elasticsearch.sh脚本是保存在elasticsearch的安装目录中。)

    启动命令:

    [yutao@localhost elasticsearch-5.2.2]$ ./elasticsearch.sh start

    关闭命令

    [yutao@localhost elasticsearch-5.2.2]$ ./elasticsearch.sh stop

    我这种方式还有一个弊端就是每次都要进入安装目录才可以执行命令,要是能像Linux命令那样到哪里都能执行就好了。

    将自己写的es脚本变成系统的新命令

    解决办法: ①把脚本放到usr/bin的目录中 ②调整好脚本

    我调整后的脚本:

    #!/bin/bash # 先进入相关目录 cd /usr/programe_files/elasticsearch-5.2.2/ if [ $1 == "start" ];then ./bin/elasticsearch -d -p pid elif [ $1 == "stop" ];then kill `cat pid` else echo "Please make sure the position variable is start or stop." fi

    这里对系统几个bin目录进行讲解:

    bin: bin为binary的简写,主要放置系统的必备执行文件,例如: cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。 /usr/bin: 主要放置应用程序工具的必备执行文件,例如: c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget等。 /sbin: 主要放置系统管理的必备程序,例如: cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、 ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、 runlevel、shutdown等。 /usr/sbin: 主要放置网路管理的必备程序,例如: dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等

    因此可以任意在/usr/bin目录下建脚本就会形成新的系统命令。


    window中访问虚拟机中的elasticsearch服务

    虽然就此安装好了,但是我的centos7是安装在VMware workspace12虚拟机中的。但是我想在我的本机window的浏览器中也能通过192.168.116.128:9200来访问。

    步骤 1、 修改配置文件

    进入到config中

    vim elasticsearch.yml

    找到:

    # Set the bind address to a specific IP (IPv4 or IPv6): # #network.host: 192.168.0.1

    将其修改为:

    # Set the bind address to a specific IP (IPv4 or IPv6): # #network.host: 192.168.0.1 network.host: 192.168.116.128 #这里ip地址随便填,我是填写虚拟机的IP地址

    保存后,再次启动elasticsearch。 结果报错啦。

    错误两个:

    max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144] max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

    大概的意思就是: ①系统的vm.max_map_count设置过小,至少需要262144才行。 ②elasticsearch的进程描述文件过小至少需要65536,而现在只有4096。

    ①解决办法:

    修改配置文件:

    sudo vim /etc/sysctl.conf

    在文件最后添加:

    vm.max_map_count=262144

    查看是否添加成功:

    sudo sysctl -p

    显示:

    vm.max_map_count = 262144

    ②解决办法

    执行

    sudo vim /etc/security/limits.conf

    在文件最后添加:

    yutao soft nofile 65536 yutao hard nofile 65536

    其中yutao为登陆centos7的用户名。

    这里需要注意一定要重启系统否则不会生效。

    再次启动elasticsearch就不会保错啦。

    步骤二

    关闭centos7的防火墙。(最笨的方法) 我们可以先查看防火墙的状态

    service firewall status

    如果是启动的,可以执行关闭操作:

    service firewall stop

    我关闭后的状态为:

    Redirecting to /bin/systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: inactive (dead) since 日 2017-03-12 16:13:15 CST; 1h 43min ago Docs: man:firewalld(1) Process: 850 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS) Main PID: 850 (code=exited, status=0/SUCCESS)

    不关闭防火墙的解决办法

    如果你选择关闭防火墙这将是因小失大,而且你重启虚拟机后,防火墙还是会重新开启。

    我们要知道,linux默认开启的是22端口,其他端口并没有开启,所以我们需要给elasticsearch开个后门,也就是开放端口。

    # centos7 默认是安装了firewalld防火墙的 # 永久开放端口 firewall-cmd --permanent --add-port={9200/tcp,9100/tcp,5601/tcp} # 重启防火墙 firewall-cmd --reload # 查看防火墙状态 firewall-cmd --state # 显示目前的设定 firewall-cmd --list-all

    上面我是开放了elasticsearch--9200,elasticsearch-head --9100,kibana --5601端口。

    再在window的浏览器中输入http://192.168.116.128:9200/ 就可以显示啦:

    至此成功!

    参考链接:

    Install Elasticsearch with .zip or .tar.gz

    在windows下用浏览器无法访问虚拟机中Linux的hadoop管理页面

    Elasticsearch5.0 版本安装错误

    centos7虚拟机安装elasticsearch5.0.x-安装篇

    Elasticsearch在Centos 7上的安装与配置

    使用 firewalld 构建 Linux 动态防火墙

    Linux——shell脚本编写自己命令

    转载请注明原文地址: https://ju.6miu.com/read-35750.html

    最新回复(0)