ElasticSearch单机版和集群版学习及安装
1 前言
1.1 概述
本文档针对ElasticSearch2.1.2内部版本的部署进行详情。
1.2 适用范围
需要部署ElasticSearch集群的项目。
1.3 部署环境
本文档以最小化安装的Centos7 64位操作系统作为示例进行详情。
2 部署软件包
elasticsearch-2.1.2.tar.gz
3 部署
3.1 部署环境准备
3.1.1 部署服务器
假设需要在以下三台服务器上搭建ES集群:
172.16.58.21,主机名为bigdata01;
172.16.58.22,主机名为bigdata02;
172.16.58.23,主机名为bigdata03。
注意:这些服务器的ES数据目录所在磁盘请使用ext4文件系统。
3.1.2 关闭相关服务
su – root
- 关闭防火墙
需要在每台服务器关闭防火墙:
systemctl disable NetworkManager.service
systemctl disable firewalld.service
systemctl stop NetworkManager.service
systemctl stop firewalld.service
- 关闭SELinux
集群每台服务器都需要关闭SELinux:
vi /etc/selinux/config
SELINUX=enforcing修改为SELINUX=disabled
注意SELINUXTYPE配置不需要修改
此操作为常见配置,对于Spark部署来说是非必要操作,建议配置。
注意:关闭SELinux后需要重启服务器才会起效。
异常情况解决:
- 错误修改SELINUXTYPE为disabled导致开机失败
系统启动时,按下“e”键进入grub编辑界面,编辑grub菜单,使用上下键选择“kernel”一行,按“e”键进入编辑,在末尾添加“enforcing=0”,按“enter”保存设置并退到上一层,按“b”键继续引导后正常开机,修改“/etc/selinux/config”中的“SELINUXTYPE=targeted”。
- 修改SELINUX后开机卡在登录页面或者报faild to load SELinux policy freezing错误
重启时在启动页面按 e,进入 grub 编辑页面,找到 linux 那一行,在最后的 language 后面空格加上 selinux=0,按 ctrl + x 重新启动系统,系统启动后删除 /etc/selinux 下面的 config~ 文件。
3.1.3 配置主机名和IP映射
为每台服务器配置主机名,并对集群中所有节点进行主机名和IP映射。
su - root
- 修改主机名
hostnamectl set-hostname 新主机名
以上命令会升级/etc/hostname文件,因而重启后新主机名仍然起效。
执行如下命令使新主机名马上起效:
systemctl restart systemd-hostnamed
- 配置一律节点的IP和主机名映射
vi /etc/hosts
内容为:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6172.16.58.21 bigdata01172.16.58.22 bigdata02172.16.58.23 bigdata033.1.4 关闭文件升级时间、关闭swap文件交换
vi /etc/fstab
- 注释包含swap的行:
# /dev/mapper/centos-swap swap swap defaults 0 0- 关闭文件升级时间,若有多个盘可相应配置
/dev/mapper/centos-root / ext4 noatime,nodiratime 0 0一般来说,只要要在数据目录配置noatime,nodiratime,若此前相关目录已配置为default,需要把defaults修改为noatime,nodiratime,可通过以下命令查看数据目录的设施名称:
df -h
注意:必需重启服务器,才能使此配置起效。
异常情况解决:
修改完此文件重启服务器后,发现根目录下的所有文件无法修改,如用“touch xxx”命令创立文件失败并报为只读文件系统。查看/etc/fatab文件内容,若根目录的配置被注释了,说明是此错误配置造成的,需要执行如下命令使根目录恢复为可读写状态:
mount -o remount, rw /
而后修改/etc/fstab文件,把根目录的配置的注释去掉。
3.1.5 内存设置参数调整
vi /etc/sysctl.conf
添加:
vm.swappiness=0 # 设置尽可能利用物理内存,在用尽物理内存情况下才使用虚拟内存vm.max_map_count=655360 # 放开map counts的限制执行如下命令使配置马上起效:
sysctl -w vm.max_map_count=655360
3.1.6 创立客户和客户组
注意:
每台服务器的es客户的密码必需相同;
若此前已有es客户,则可跳过该小节;
同一台服务器上安装的多个ES可共用es客户及起主目录/opt/es。
创立es客户和客户组
su - root# 创立客户组,若1001号客户组已经被占用,可换成其余数字groupadd -g 1001 es# 创立客户,若客户组号不为1001,需要相应修改useradd -d /opt/es -s /bin/bash -g 1001 espasswd es以下为命令行提醒:更改客户es的密码。新的密码:es无效的密码:密码少于8个字符重新输入新的密码:espasswd:所有的身份验证令牌已经成功升级。注意:
标红部分为手工输入的内容,输入过程界面不会显示密码内容;
只有当密码长度少于8时,使用passwd命令修改密码才需要输入两次密码。
设置环境配置权限
chown -R es:es /opt/es异常情况解决:
- 客户主目录本来存在
若客户主目录在创立客户之前已经存在,在创立客户时会提醒目录已存在的提醒,此时创立客户是成功的,但切换到客户时会出现如下情况:
[root@bigdata01 ~]$ su - es上一次登录:日 12月 18 11:20:44 CST 2017pts/0 上-bash-4.2$此情况说明客户主目录的客户信息文件未正确创立,此时客户无法正常使用。
处理办法:
su - rootcp .bashrc .bash_profile .bash_logout /opt/es/chown -R es:es /opt/es/su - essource .bashrc .bash_profile此时命令行提醒变成如下:
[es@bigdata01 ~]$若回到root客户后再切换为es客户后仍然如上提醒,说明创立客户成功。
- 需要删除客户或者客户组
su - root# 删除客户命令userdel es# 删除客户组命令groupdel es3.1.7 设置可打开的最大文件个数、放开最大可锁定内存限制
- 修改配置
vi /etc/security/limits.conf增加:
es soft nofile 65535es hard nofile 65535es soft nproc 65535es hard nproc 65535es soft memlock unlimitedes hard memlock unlimited执行如下命令放开锁定内存限制:
ulimit -l unlimited- 配置在登录后无限加载以上设置
vi /etc/pam.d/login添加:
session required /lib64/security/pam_limits.so3.1.8 安装JDK
每台服务器都必需安装JDK 1.8.0_60,请参考《JDK1.8.0_60 部署文档》。
3.2 部署步骤
注意:
3.2.1、3.2.4节都需要在每台服务器进行操作,3.2.2、3.2.3、3.2.5节只要要在需要配置免密码登录的服务器上执行。
配置免密码登录的目的如下:
当需要在一台服务器上批量操作多台服务器时,如批量启停软件节点,为了避免每次远程到其余服务器执行命令时都需要输入密码,就需要在该服务器对目标服务器配置免密码登录,若只要要以其中一台来管理整个集群,则只要要在一台服务器上按照3.2.3的步骤来配置免密码就可,若希望使用多台来管理,则需要在这些服务器上都操作3.2.2、3.2.3、3.2.5。
3.2.1 上传软件到服务器
上传elasticsearch-2.1.2.tar.gz到每台服务器,如/tmp目录,解压到安装目录:
su - roottar -zxf /tmp/elasticsearch-2.1.2.tar.gz -C /optcd /opt/esln -s elasticsearch-2.1.1 eschown -R es:es /opt/eschmod -R 777 /opt/es/install注意:
本文档默认/opt目录下此前未安装过ES在/opt/es目录中,若此前安装过,需要安装到另外的目录,需要如下操作:
假设安装到/opt/esface目录中
su - rootmkdir /opt/esfacetar -zxf /tmp/elasticsearch-2.1.2.tar.gz -C /opt/esfacecd /opt/esfacemv es/* ./rm -rf esln -s elasticsearch-2.1.1 eschown -R es:es /opt/esfacechmod -R 777 /opt/esface/install安装的多个ES都可以共用es客户。
对于后续步骤,都应以/opt/esface目录作为安装目录来相应修改。
3.2.2 安装必要的软件
su - rootcd /opt/es/install/rpmrpm -ivh tcl-8.5.7-6.el6.x86_64.rpmrpm -ivh expect-5.44.1.15-4.el6.x86_64.rpm注意:这两个软件为做免密码登录必要的软件,要先安装tcl后再安装expect,若系统之前已安装,则可以跳过此步。
3.2.3 配置免密码登录
注意:所有节点必需能相互ping通,所有服务器的es客户已创立好,并且密码必需相同才能使用下面的方法配置免密码登录。
以在bigdata01服务器上作为例子,具体配置步骤如下:
su - es- 修改脚本读取的IP和主机名映射
vi /opt/es/install/servers.txt内容为:
172.16.58.21 bigdata01172.16.58.22 bigdata02172.16.58.23 bigdata03- 给es客户做免密码登录
cd /opt/es/installssh-keygen -t rsa # 提醒输入时直接按回车确认./establishSSH.sh es es /opt/es其中:
establishSSH.sh脚本的参数含义如下:
第一个参数:客户名;
第二个参数:客户密码,部署的多台服务器中想用客户名的密码必需相同;
第三个参数:客户主目录,根据3.2.4节中配置的主目录为/opt/es
验证:
使用es客户执行“ssh ip date”和“ssh hostname date”在其余每台服务器执行查看时间的命令,若不需要输入密码就可查看其余服务器的时间,则表示免密码登录做成功。
例如:
ssh 172.16.58.21 datessh bigdata01 date注意:必需ssh ip date和ssh hostname date都不需要输入密码时,免密码登录才算完全配置成功。
异常情况解决:
若此前创立过免密码登录,在操作时会提醒能否覆盖文件(y/n),输入y回车覆盖文件继续操作就可。若免密码一直无法做成功,可如下操作(假设要从bigdata01做免密码到一律服务器):
远程到每一台服务器(包括bigdata1),执行如下操作:
su - esrm -rf ~/.ssh而后远程到bigdata01,执行如下操作:
su - esssh-keygen -t rsa# 以下ssh-copy-id命令针对bigdata01-03,172.16.58.21-23# 都分别执行一次,也就是总共执行6次ssh-copy-id命令ssh-copy-id -i ~/.ssh/id_rsa.pub es@bigdata01ssh-copy-id -i ~/.ssh/id_rsa.pub es@172.16.58.21...ssh-copy-id -i ~/.ssh/id_rsa.pub es@bigdata03ssh-copy-id -i ~/.ssh/id_rsa.pub es@172.16.58.23注意:ssh-copy-id命令每次执行都需要输入客户密码
以上命令执行完后,尝试用ssh命令从bigdata01远程到任意节点(包括自身),确认免密码登录能否都做成功。
3.2.4 修改ES配置文件
- 修改配置文件
vi /opt/es/es/config/elasticsearch.yml修改:
cluster.name: 集群名称node.name: 节点名称network.host: 本机IP地址,如172.16.58.21http.port: 端口号,若不设置默认为9200transport.tcp.port: 端口号,若不设置默认为9300node.master: true/falsenode.data: true/falsediscovery.zen.ping.unicast.hosts: ["172.16.58.21:9300","172.16.58.22:9300","172.16.58.23:9300"]discovery.zen.minimum_master_nodes: 数字bootstrap.mlockall: true/false注意:
cluster.name应一律字母小写,可由字母、数字、下划线等组成,cluster.name同名的节点才会组成集群;
每个节点都应有唯一的node.name,命名规则同cluster.name,一般命名为主机名;
http.port是http访问端口,如通过web网页访问ES集群或者通过RESTful接口操作ES集群等通过此端口进行;
transport.tcp.port是tcp访问端口,通过编程语言API来操作ES集群时通过此端口进行;
若本节点可作为Master节点,node.master参数需设置为true,否则为false,此配置应根据实际部署规划来进行设置;
若本节点希望保存索引数据,node.data参数需设置为true,否则为false,此配置应根据实际部署规划来进行设置;
discovery.zen.ping.unicast.hosts参数表示当前节点可通过配置的几个节点来发现集群并加入,一般配置一律Master节点的IP和端口;
discovery.zen.minimum_master_nodes参数配置:假设Master节点数为N,则此参数配置为(N+1)/2,如N为3此值配置2,N为4时配置为2,其中N建议为单数;
bootstrap.mlockall参数表示ES进程能否启动后马上申请配置的堆内存并一直占用。1)若为true,则启动时会申请内存并一直占用,前提是按照3.2.5配置了放开可锁定
内存,若未配置,并且elasticsearch.in.sh中配置的堆内存大小超出操作系统的锁定内存限制,则ES会启动失败。此为建议值,能够提升ES的性能;2)若为false,则ES启动时会首先占用elasticsearch.in.sh中配置的ES_MIN_MEM
内存空间,若未按3.2.5配置放开可锁定内存,并且该内存空间大小超出操作系统的锁定内存限制,则ES会启动失败;紧跟参数的英文冒号后面的空格是必要的,否则会启动ES失败并且无日志输出。
- 为ES进程分配固定堆内存:
vi /opt/es/es/bin/elasticsearch.in.sh修改:
ES_CLASSPATH="/opt/spark/spark/conf/:$ES_HOME/lib/*:$ES_HOME/libext/*"...if [ "x$ES_MIN_MEM" = "x" ]; then ES_MIN_MEM=4gfiif [ "x$ES_MAX_MEM" = "x" ]; then ES_MAX_MEM=4gfi注意:
ES_CLASSPATH中的spark目录应与spark实际安装目录对应;
对于单个ES节点来说,ES_MIN_MEM和ES_MAX_MEM应不小于2G且不大于30G,并且不大于本机内存大小的40%,如:服务器有96G内存则可配置30G,有16G内存则可配置6G,有8G内存则可配置2-3G。当一台服务器上启动两个ES节点时,应两个ES占用总内存不超过本机内存的40%,即有16G内存可为每个ES分配3G,有8G可为每个ES分配2G内存。
3.2.5 为批量起停ES节点准备
vi /opt/es/servers.txt内容为:
172.16.58.21 bigdata01172.16.58.22 bigdata02172.16.58.23 bigdata034 起停服务
4.1 启动ES
- 启动多个节点
在配置了免密码登录的服务器上执行:
su - es/opt/es/es-cluster.sh start注意:
此命令会启动/opt/es/servers.txt文件中的一律节点上安装目录相同的ES,本文档es-cluster.sh脚本所在的安装目录为/opt/es;
在执行脚本所在服务器上,必需配置免密码登录,可参照3.3.3节。若未配置或者配置失败,以上命令每启动一个ES节点都会提醒要求输入es客户的密码。此情况下,应先关闭ES集群,把免密码登录配置好,而后重新启动ES集群。
启动单个节点
若想启动单个节点,可在所在服务器上执行:
su - es/opt/es/es/bin/es-start.sh4.2 中止ES
- 中止多个节点
在配置了免密码登录的服务器上执行:
su - es/opt/es/es-cluster.sh stop注意:
此命令会关闭/opt/es/servers.txt文件中的一律节点上安装目录相同的ES,本文档es-cluster.sh脚本所在的安装目录为/opt/es;
在执行脚本所在服务器上,必需配置免密码登录,可参照3.3.3节。若未配置或者配置失败,以上命令每关闭一个ES节点都会提醒要求输入es客户的密码。此情况下,需手动关闭每个节点的ES进程,而后把免密码登录配置好,在下次关闭ES集群时更方便。
中止单个节点
在希望中止的节点上执行:
su - es/opt/es/es/bin/es-stop.sh或者使用ps -ef | grep /opt/es命令找到ES的进程PID后,执行下面的命令中止单个ES节点:
kill -15 PID1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » ElasticSearch单机版和集群版学习及安装