CentOS7.0安装elasticsearch 6.4

CentOS7.0安装elasticsearch 6.4

Posted by fengdi on November 29, 2018

1、安装jdk

1.1、解压

tar zxvf jdk-8u181-linux-x64.tar.gz
mv jdk-8u181-linux-x64.tar.gz jdk8

1.2、配置环境变量

vim /etc/profile 
加入
export JAVA_HOME=/usr/local/software/jdk8
export JAVA_BIN=/usr/local/software/jdk8
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH

1.3、启动文件,使环境变量生效

source /etc/profile

1.4、验证jdk是否安装成功

java -version 

2、安装Elasticsearch

2.1、下载Elasticsearch,可通过wget命令下载,或者提前下载tar包

2.2、解压

tar -zxvf elasticsearch-6.4.0.tar.gz
tar -zxvf logstash-6.4.0.tar.gz
tar -zxvf kibana-6.4.0-linux-x86_64.tar.gz

2.3、创建数据存放路径(应将设置配置为在Elasticsearch主目录之外定位数据目录,以便在不删除数据的情况下删除主目录!)

mkdir /usr/local/elk/elasticsearch/data

2.4、创建日志存放路径(已存在不用创建)

mkdir /usr/local/elk/elasticsearch/logs

2.5、建立用户并授权(es不能用root运行)

添加用户
useradd -m es
修改密码
passwd es
赋予文件夹权限
chown -R es:es /usr/local/elk/elasticsearch-6.4.0

2.6、修改elasticsearch.yml配置文件

#集群的名称
cluster.name: es6.2
#节点名称,其余两个节点分别为node-2 和node-3
node.name: node-1
#指定该节点是否有资格被选举成为master节点,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master
node.master: true
#允许该节点存储数据(默认开启)
node.data: true
#索引数据的存储路径
path.data: /usr/local/elk/elasticsearch/data
#日志文件的存储路径
path.logs: /usr/local/elk/elasticsearch/logs
#设置为true来锁住内存。因为内存交换到磁盘对服务器性能来说是致命的,当jvm开始swapping时es的效率会降低,所以要保证它不swap
bootstrap.memory_lock: true
#绑定的ip地址
network.host: 0.0.0.0
#设置对外服务的http端口,默认为9200
http.port: 9200
# 设置节点间交互的tcp端口,默认是9300 
transport.tcp.port: 9300
#Elasticsearch将绑定到可用的环回地址,并将扫描端口9300到9305以尝试连接到运行在同一台服务器上的其他节点。
#这提供了自动集群体验,而无需进行任何配置。数组设置或逗号分隔的设置。每个值的形式应该是host:port或host
#(如果没有设置,port默认设置会transport.profiles.default.port 回落到transport.tcp.port)。
#请注意,IPv6主机必须放在括号内。默认为127.0.0.1, [::1]
discovery.zen.ping.unicast.hosts: ["192.168.8.101:9300","192.168.8.103:9300", "192.168.8.104:9300"]
#如果没有这种设置,遭受网络故障的集群就有可能将集群分成两个独立的集群 - 分裂的大脑 - 这将导致数据丢失
discovery.zen.minimum_master_nodes: 3

2.7、调整jvm内存

vim /usr/local/elk/elasticsearch/config/jvm.options 
#默认是1g官方建议对jvm进行一些修改,不然很容易出现OOM,参考官网改参数配置最好不要超过内存的50% 
-Xms1g
-Xmx1g

2.8、启动(es用户)

此步骤容易报错,主要对常见问题作出如下说明:

  • 问题一
    Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408, 0) failed; error='Cannot allocate memory' (errno=12)
    #
    # There is insufficient memory for the Java Runtime Environment to continue.
    # Native memory allocation (mmap) failed to map 986513408 bytes for committing reserved memory.
    # An error report file with more information is saved as:
    # /usr/local/software/temp/elasticsearch-6.2.2/hs_err_pid1912.log
    

    解决:内存不够,购买阿里云的机器可以动态增加内存

  • 问题二 没有使用es用户启动

解决:创建es用户,并用es用户启动

  • 问题三
    ./elasticsearch
    Exception in thread "main" java.nio.file.AccessDeniedException: /usr/local/software/temp/elasticsearch-6.4.0/config/jvm.options
    

    解决:权限不够 chmod 777 -R 当前es目录

  • 问题四

解决:切回root用户su - root,修改配置 

vim /etc/security/limits.conf
*  soft nofile 65536
*  hard nofile 65536
*  soft nproc 2048
*  hard nproc 4096
#我选择锁住swapping因此需要在这个配置文件下再增加两行代码
es soft memlock unlimited
es hard memlock unlimited

vim /etc/sysctl.conf
vm.max_map_count=655360
fs.file-max=655360
之后需要执行一句命令sysctl -p使系统配置生效(使用root用户)
sysctl -p
将discovery.zen.minimum_master_nodes的值设置为了3,总共3个节点,都充当主节点是不行的,将discovery.zen.minimum_master_nodes将这个配置改为2

3、安装kibana

同elasticsearch安装步骤,修改配置文件config/kibana.yml如下:

server.host: "0.0.0.0"
server.port: 5601
elasticsearch.url: "http://192.168.100.200:9200"
logging.dest: /myDev/kibana-6.4.0-linux-x86_64/logs/kibana.log
server.name: "kibana"
#elasticsearch.username: "elastic"
#elasticsearch.password: "elastic"

启动

nohup bin/kibana &

3、安装head插件

3.1、安装node.js环境

tar xvf node-v6.10.2-linux-x64.tar
mv node-v6.10.2-linux-x64 /usr/local/node

3.2、配置并生效

vim /etc/profile
export NODE_HOME=/usr/local/node
export PATH=$PATH:$NODE_HOME/bin

source /etc/profile

3.3、配置并生效

node -v
npm -v

3.4、下载head插件

yum install –y git
git clone https://github.com/mobz/elasticsearch-head.git

3.5、安装grunt

cd elasticsearch-head
npm install -g grunt --registry=https://registry.npm.taobao.org

3.5、安装插件

npm install

在elasticsearch-head目录下node_modules/grunt下如果没有grunt二进制程序,需要执行:

npm install grunt --save

3.6、修改配置

修改elasticsearch-head下Gruntfile.js文件的connect配置节点
connect: {
			server: {
				options: {
					port: 9100,
					base: '.',
					keepalive: true
				}
			}
		}

修改_site/app.js 修改http://localhost:9200字段到本机ES端口与IP
this.prefs = services.Preferences.instance();
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://127.0.0.1:9200";
			
修改elasticsearch.yml文件加入以下内容
#解决跨域问题
http.cors.enabled: true
http.cors.allow-origin: "*"

3.6、启动head服务

/elasticsearch-head/node_modules/grunt/bin/grunt server &