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 HOST2 …
192.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的地址:https://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)
参考网址:https://github.com/NLPchina/elasticsearch-sql
1、es的sql插件分为两部分,一部分是需要放在es目录/plugins下的,用来支持sql查询;另外一部分类似于head插件,是一个NodeJS工程,提供页面服务。
2、安装sql插件及web ui
(1)在es集群中的每个节点上执行如下操作,(在每个节点上安装sql插件?)

es ./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/5.1.2.0/elasticsearch-sql-5.1.2.0.zip

此命令会在es目录/plugins下创建一个sql目录,此时重启节点以便加载sql插件。重启并使得sql插件成功加载之后,便可以通过浏览器利用如:
http://localhost:9200/_sql?sql=select * from indexName limit 10
的方式进行查询。同时,sql的API也可以使用了。
(2)在任意一台节点上安装sql的web应用
①下载es-sql-standalone,地址:https://github.com/NLPchina/elasticsearch-sql/releases/download/5.0.1/es-sql-site-standalone.zip
②安装并启动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版直接使用的方式行不通。所以在访问页面时需要传入一个参数,如:
http://192.168.186.30:8080/?base_uri=192.168.186.30:9200
之所以要加这个参数是由于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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容

  • 今年夏天,我在柬埔寨见到了最好的时光。现在的我趴在书桌前,想写一些AIESEC海外志愿者的用户体验以及在柬埔寨需要...
    Dorothy丸子阅读 294评论 0 0
  • 今天是你的生日,我的宝贝 清晨东方升起一抹朝霞 为你注入了生命的鲜活 朝霞在天上人间掠过 我们祝福你的生日,我的宝...
    大小俩珍珠阅读 261评论 2 0
  • 他小时候总会幻想关于自己的未来,好像他是可以站在诺贝尔的奖台上发言,可以和科学家一起搞研究可以和明星一起同台飙...
    会唱歌的小吉他阅读 459评论 0 0