Elasticsearch 集群安装部署

Elasticsearch cluster install

Elasticsearch是一个基于Lucene的实时的分布式搜索和分析引擎。

设计用于云计算中,能够达到实时搜索,稳定,可靠, 快速,安装使用方便。基于RESTful接口。

step 1 download JDK and elasticsearch

jdk1.8.0_131 download

elasticsearch5.6.5 download

声明:系统版本:主机windows10,虚拟机服务器centos6.9,elasticsearch-5.6.5,Vmware10.7
不能使用root用户,需要新建一个用户

step 2 install JDK

解压配置环境变量即可使用

export JAVA_HOME=/opt/jdk1.8.0_131
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

#自JDK1.7之后 CLASSPATH 可以不配置

step 3 system configuration

配置静态IP

sudo cd /etc/sysconfig/network-scripts/ifcfg-ens33
sudo vi ifcfg-ens33  # 这个文件的名称有时可能不相同 ifcfg-eth0 | ifcfg-ens???

    修改如下参数
    ONBOOT=yes
    BOOTPROTO=static
    IPADDR=192.168.174.113
    NETMASK=255.255.255.0
    GATEWAY=192.168.174.2

sudo service network start/stop/restart

修改HOSTNAME

Centos6
    sudo vi /etc/sysconfig/network 
    HOSTNAME=YOURNEWNAME 
    sudo hostname YOURNEWNAME
Centos7
    sudo hostnamectl set-hostname YOURNEWNAME 
    sudo hostname YOURNEWNAME

主机名中不能使用下划线(_)。
主机名不能保护大写字符

配置本地域名

sudo vi /etc/hosts
ip    HOST1 HOST2192.168.186.113    es1 hdfs1 hadoop1 spark1
192.168.186.114    es2 hdfs2 hadoop2 spark2
192.168.186.115    es3 hdfs3 hadoop3 spark3

关闭防火墙

Centos6
    sudo service iptables start/stop/status
    sudo chkconfig iptables off/--list  –永久关闭防火墙
Centos7
    sudo systemctl stop/start/status firewalld.service
    sudo systemctl disable firewalld.service –永久关闭防火墙

关闭SELinux

查看Selinux的状态
/usr/sbin/sestatus –v
SELinux status:                 enabled
如果SELinux status参数为enabled即为开启状态,需要进行下面的关闭操作。
关闭SElinux
sudo vim /etc/selinux/config
在文档中找到SELINUX,将SELINUX的值设置为disabled,即:
SELINUX=disabled
在内存中关闭SElinux
setenforce 0
检查内存中状态
getenforce
如果日志显示结果为disabled或者permissive,说明操作已经成功。

创建用户

[root@es1 ~]# adduser es
为这个用户初始化密码,linux会判断密码复杂度,不过可以强行忽略:

[root@es1 ~]# passwd es
更改用户 es 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

为用户赋于sudo权限

在root用户
vi /etc/sudoers
添加 : USERNAME    ALL=(ALL)   ALL
以下配置可以给sudo权限免密
添加 : USERNAME    ALL=(ALL)   NOPASSWD:ALL

step 4 install elasticsearch

解压缩

$ mkdir -p /opt/elasticsearch
$ tar –zxvf elasticsearch-5.6.5.tar.gz –C /opt/elasticsearch

修改elasticsearch.yml配置文件

$ vim /opt/elasticsearch/elasticsearch5.6.5/config/elasticsearch.yml
    cluster.name: hy2u-elasticsearch   (集群名称,同一集群要一样)
    node.name: hy2u-node-1  (节点名称,同一集群要不一样)
    http.port: 9200  #连接端口
    network.host: 192.168.174.113   #默认网络连接地址,写当前主机的静态IP,这里不能写127.0.0.1
    path.data: /opt/elasticsearch-5.6.5/data   #数据文件存储路径
    path.logs: /opt/elasticsearch-5.6.5/logs    #log文件存储路径
    discovery.zen.ping.unicast.hosts: ["192.168.174.113","192.168.174.114", "192.168.184.115"]#集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点。
    bootstrap.system_call_filter: false    # 因centos6不支持SecComp而默认bootstrap.system_call_filter为true进行检测,所以,要设置为 false。注:SecComp为secure computing mode简写
    http.cors.enabled: true  #是否支持跨域,默认为false
    http.cors.allow-origin: "*"   #当设置允许跨域,默认为*,表示支持所有域名
    discovery.zen.minimum_master_nodes: 2     #这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4

elasticsearch备份位置,路径要手动创建

path.repo: ["/opt/elasticsearch/elasticseaarch-5.6.3/data/backups"]

如果安装elasticsearch-head插件,需要添加以下选项

http.cors.enabled: true
http.cors.allow-origin: "*"

如果安装x-pack插件,我们取消他的basic认证,需要添加以下选项

xpack.security.enabled: false

修改jvm内存[这个配置项很重要,在现实生产中要配的大一些,但是最大不能超过32g]

vim config/jvm.options  
-Xms2g  ---> -Xms512m  
-Xmx2g  ---> -Xms512m   

分发

将配置好的Elasticsearch安装介质分发到其他的服务器上
只需要将elasticsearch.yml配置文件中的相关参数修改一下即可

cluster.name: hy2u-elasticsearch   (集群名称,同一集群要一样)
node.name: hy2u-node-1  (节点名称,同一集群要不一样)
http.port: 9200  #连接端口 (集群连接端口,同一集群要一样)
network.host: 192.168.174.113   #默认网络连接地址,写当前主机的静态IP,这里不能写127.0.0.1

启动与关闭

每一台设备都要单独启动

前台启动 
$ ./elasticsearch 

后台启动 -d为守护进程运行
$ ./elasticsearch –d
$ ./elasticsearch & # 使用这种方式他会打印日志在前台

查看elasticsearch 进程

$ jps
2369 Elasticsearch

使用kill 命令杀死进程

kill -9 2369(pid)

浏览器访问

访问单节点:http://192.168.174.113:9200/

step 4 install plugins

install elasticsearch-head

由于5.x版本开始,_site被禁用了,所以head等有页面展示的插件无法像2.x一样以嵌入形式运行,必须以一个单独的服务来运行。

去GitHub下载elasticsearch-head源码 下载node并安装: head插件本质上是一个NodeJS工程,需要使用npm来下载依赖包并打包(npm可以理解为maven),下载node的地址:nodejs.org/en/download/。 解压安装包

xz -d node*.tar.xz
tar -xvf node*.tar

配置环境变量

sudo vi /etc/profile
export NODE_HOME=/opt/node-*-linux-x64
export PATH=$PATH:$NODE_HOME/bin

刷新环境变量

source /etc/profile

验证node是否安装成功

echo $NODE_HOME
node -v
npm -v

编译head 修改head插件的配置文件

$HEAD_HOME/Gruntfile.js
connect: {
    server: {
       options: {
          port: 9100,
          hostname: '*', 
          base: '.',
          keepalive: true
       }
    }
}

$HEAD_HOME/_site/app.js
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.186.30:9200";

添加ES配置项

vi $ES_HOME/config/elasticsearch.yml

添加以下配置
    http.cors.enabled: true
    http.cors.allow-origin: "*"

运行head插件

cd $HEAD_HOME
npm install
cd head目录/node_modules/grunt/bin/
./grunt server &

访问head插件

http:/192.168.174.113:9100
默认端口是9100,可以通过编辑head/Gruntfile.js进行修改。
关闭 netstat -apn|grep 9100  

install kibana

解压kibana到相应的目录

tar -zxvf /opt/elasticsearch/kibana-5.6.3-linux-x86_64.tar.gz -C /opt/elasticsearch

修改配置文件kibana.yml

vi /opt/elasticsearch/kibana-5.6.3/config/kibana.yml    (修改以下参数)
server.port: 5601
server.host: "192.168.174.113"
elasticsearch.url: "http://192.168.174.113:9200"

启动kibana

前台:./opt/elasticsearch/kibana-5.6.3/bin/kibana
后台:nohup /opt/elasticsearch/kibana-5.6.3/bin/kibana </dev/null &>/dev/null &

install x-pack

下载x-pack安装包 安装x-pack之前一定要先安装kibana

在每一台elasticsearch节点的$ES_HOME下执行

在线版:bin/elasticsearch-plugin install x-pack
离线版:bin/elasticsearch-plugin install file:///home/admin/x-pack.zip    #file:后边一定是三个/少一个都不行

在安装kibana的服务器上的kibana的$KIBANA_HOME下执行

在线版:bin/kibana-plugin install x-pack
离线版:bin/kibana-plugin install file:///home/admin/x-pack.zip

在每一台elasticsearch节点的$ES_HOME/config/elasticsearch.yml文件中添加以下配置

xpack.security.enabled: false

卸载

$ES_HOME/bin/elasticsearch-plugin remove x-pack
$KIBANA_HOME/bin/kibana-plugin remove x-pack

install IK

install elasticsearch-sql

5.x版本sql插件的安装和使用(目前支持最高的版本为5.1.2)
参考网址:github.com/NLPchina/elasticsearch-...
1、es的sql插件分为两部分,一部分是需要放在es目录/plugins下的,用来支持sql查询;另外一部分类似于head插件,是一个NodeJS工程,提供页面服务。
2、安装sql插件及web ui
(1)在es集群中的每个节点上执行如下操作,(在每个节点上安装sql插件?)

es ./bin/elasticsearch-plugin install github.com/NLPchina/elasticsearch-...

此命令会在es目录/plugins下创建一个sql目录,此时重启节点以便加载sql插件。重启并使得sql插件成功加载之后,便可以通过浏览器利用如:
localhost:9200/_sql?sql=select * from indexName limit 10
的方式进行查询。同时,sql的API也可以使用了。
(2)在任意一台节点上安装sql的web应用
①下载es-sql-standalone,地址:github.com/NLPchina/elasticsearch-...
②安装并启动web应用

es unzip es-sql-site-standalone.zip

es cd es-sql-site-standalone/site-server

es npm install express –save

将es目录/plugins/sql目录下的_site目录覆盖es-sql-site-standalone目录下的_site

es node node-server.js &

此时sql的web应用已经启动了,默认端口是8080,可以通过编辑es目录/plugins/sql/es-sql-site/site-server/site_configuration.json进行修改。
3、访问web界面
最新版的sql界面访问时候有认证问题存在,2.x版直接使用的方式行不通。所以在访问页面时需要传入一个参数,如:
192.168.186.30:8080/?base_uri=192.1...
之所以要加这个参数是由于2.x升级到5.x的一个bug,2.x的访问方式是esIP:9200/_plugin/sql。在页面执行sql查询的时候,IP和端口引用地址栏的。而现在5.x版本的web页面是一个独立的应用,端口不能绑定成9200,但是与es交互的端口依然是访问web页面的端口,这就导致无法与es集群正常通信。在这里加这个参数的目的就是告诉sql的web界面与es通信的IP和端口。

常见的安装问题

can not run elasticsearch as root

解决方法:创建其他非root账户,修改文件夹 文件 所属用户 组

ERROR: bootstrap checks failed

解决方法:修改系统limits.conf文件
# vi /etc/security/limits.conf
添加如下内容
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
备注:* 代表Linux所有用户名称(比如 hadoop)

启动后,只有本地可以访问

解决方法:在elasticsearch.yml文件中增加:network.bind_host: 0.0.0.0

ERROR:Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(…) failed; error=’Cannot allocate memory’ (errno=12)

解决方法:修改jvm内存

   vim config/jvm.options  
   -Xms2g  ---> -Xms512m  
   -Xmx2g  ---> -Xms512m   

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

解决方法:设置最大打开文件数
    修改最大文件数为65536
    # ulimit -n 65536
    查看是否修改成功
    # ulimit -a

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决方法:修改sysctl.conf
    # vi /etc/sysctl.conf 
    添加下面配置:
    vm.max_map_count=655360
    并执行命令:
    # sysctl -p

max number of threads [1024] for user [lish] likely too low, increase to at least [2048]

解决方法:修改90-nproc.conf
# vi /etc/security/limits.d/90-nproc.conf 
修改如下内容:
* soft nproc 1024
#修改为
* soft nproc 2048
本作品采用《CC 协议》,转载必须注明作者和本文链接
你还差得远呐!
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!