一、Elasticsearch单机安装
1.下载压缩包并解压
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.2.tar.gz
cd 到 elasticsearch下载目录
# 解压
tar -zxf elasticsearch-6.6.2.tar.gz
# 切换到安装目录
cd elasticsearch-6.6.2
ES 目录介绍:
- bin:可执行文件在里面,运行es的命令就在这个里面,包含了一些脚本文件等
- config:配置文件目录
- JDK:java环境
- lib:依赖的jar,类库
- logs:日志文件
- modules:es相关的模块
- plugins:可以自己开发的插件
- data:这个目录没有,自己新建一下,后面要用 -> mkdir data,这个作为索引目录
2.修改核心配置文件
# 修改config/elasticsearch.yml
vi config/elasticsearch.yml
常用配置如下,测试的话只要改network.host,允许外网访问即可:
# 修改集群名称,默认是elasticsearch,虽然目前是单机,但是也会有默认的
# cluster.name: myelasticsearch
# 为当前的es节点取个名称,名称随意,如果在集群环境中,都要有相应的名字
# node.name: es-node0
# 修改data数据保存地址
# path.data: /usr/local/elasticsearch-6.6.2/data
# 修改日志数据保存地址
# path.logs: /usr/local/elasticsearch-6.6.2/logs
# 设置外网访问 默认配置外网无法访问
network.host: 0.0.0.0
# 默认端口号,可以自定义修改
# http.port: 9200
# 集群节点,名字可以先改成之前的那个节点名称
# cluster.initial_master_nodes: ["es-node0"]
3.修改JVM分配大小
vi config/jvm.options
默认Xms和Xmx都是1g,如果虚拟机内存没这么大,修改一下即可:
-Xms128m
-Xmx128m
如图:
4.启动Elasticsearch
启动
bin/elasticsearch # 前台启动,停止直接ctrl+c就可以
bin/elasticsearch -d # 后台启动,停止用kill杀进程的方法,先jps查看jvm的进程
启动后发现报错,因为ES不允许使用root操作es,需要添加用户:
5.添加用户
创建用户lck,并设置密码:
useradd lck
echo "Password" | passwd lck --stdin
修改权限,把当前elasticsearch目录改成lck用户的所属
chown -R lck:lck ./
如图:
可以为lck用户赋予超级管理员权限:
vi /etc/sudoers
添加如下内容:
lck ALL=(ALL) ALL
如图
切换用户
su lck
再次执行启动命令即可。
6.可能出现的错误以及解决
问题
如图所示,最大文件描述符数量、用户最大线程数、最大虚拟内存区域数量太小了。
文件描述符数量:每个进程可以打开的文件数
关于linux虚拟内存区域:
通过虚拟内存映射实现零拷贝
,高效存储文件。
max_map_count:限制一个进程可以拥有的VMA(虚拟内存区域)的数量。虚拟内存区域是一个连续的虚拟地址空间区域。在进程的生命周期中,每当程序尝试在内存中映射文件,链接到共享内存段,或者分配堆空间的时候,这些区域将被创建。
问题解决:修改系统环境变量vm.max_map_count
切换到root用户修改:
vi /etc/sysctl.conf
添加如下内容
vm.max_map_count=262144
如图:
修改完需要重启才能生效、或者刷新
sysctl -p # 刷新,从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载
sysctl -a|grep vm.max_map_count #查看当前系统的环境变量
sysctl -w vm.max_map_count=262144 #临时改变某个系统参数的值,重启后失效
问题解决:修改最大文件描述符数量和用户最大线程数
切换到root用户修改:
vim /etc/security/limits.conf
# 第一列表示用户,* 代表所有用户
* soft nofile 65536 # 可打开的文件描述符的最大数(超过会警告)
* hard nofile 65536 # 可打开的文件描述符的最大数(超过会报错)
* soft nproc 4096 # 单个用户可用的最大进程数量(超过会警告)
* hard nproc 4096 # 单个用户可用的最大进程数量(超过会报错)
如图:
soft xxx : 代表警告的设定,可以超过这个设定值,但是超过后会有警告。
hard xxx : 代表严格的设定,不允许超过这个设定的值。
如:soft 设为1024,hard设为2048 ,则当你使用数在1~1024之间时可以随便使用,1024~2048时会出现警告信息,大于2048时,就会报错。
nproc : 是操作系统级别对每个用户创建的进程数的限制
nofile : 是每个进程可以打开的文件数的限制
修改完需要重启
reboot # 重启
7.测试
端口号意义:
- 9200:Http协议,用于外部通讯
- 9300:Tcp协议,ES集群之间是通过9300通讯
8.分词器安装
下载后直接解压缩到elasticsearch的plugins目录下即可,注意分词器版本一定要和elasticsearch版本一致。
ik分词器
https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v6.6.2
unizp -d ./plugins/ik elasticsearch-analysis-ik-6.6.2.zip
拼音分词器
https://github.com/medcl/elasticsearch-analysis-pinyin/releases/tag/v6.6.2
unizp -d ./plugins/pinyin elasticsearch-analysis-pinyin-6.6.2.zip
二、kibana安装
1.下载解压
https://artifacts.elastic.co/downloads/kibana/kibana-6.6.2-linux-x86_64.tar.gz
tar -zxf kibana-6.6.2-linux-x86_64.tar.gz
2.修改配置文件
vi kibana-6.4.2-linux-x86_64/config/kibana.yml
server.port: 5601 ##服务端口
server.host: "0.0.0.0" ## 允许外网访问的ip
elasticsearch.url: "http://localhost:9200" ##elasticsearch 服务地址
3.启动
./bin/kibana
nohup ./bin/kibana & # 后台启动
4.测试
三、Elasticsearch集群搭建
1.集群配置
在上面单机基础上复制3个做如下配置:
vi config/elasticsearch.yml
cluster.name: kkb-es #集群名称,节点就靠这个名字认为自己是哪个集群
node.name: node0 #节点名称,集群中必须唯一
node.master: true #是否具有成为主节点的资格
network.host: 0.0.0.0 #允许外网访问的地址
http.port: 9200 #如果是在一台服务器上装多个ES,要保证唯一,否则默认即可
transport.tcp.port: 9300 #如果在一台服务器上装多个ES,要保证唯一,否则默认即可
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300","127.0.0.1:9301","127.0.0.1:9302"] #集群中所有节点的通信地址,就是上面那个tcp地址
discovery.zen.minimum_master_nodes: 2 #防止脑裂,值为集群中节点总数的一半+1即可。
http.cors.enabled: true #允许跨域请求,即允许其他插件访问
http.cors.allow-origin: "*" #允许跨域请求的源
只要改node.name、http.port、transport.tcp.port,其他都是共性的配置。
配置完成后依次启动即可。
2.集群状态检查
http://集群中任意一台服务器地址/_cat/health?v
kibana查看:
3.可能遇到到问题
原因:该ES因为单机启动过,data目录中包含了原先的索引库数据解决方案:将节点data文件下的文件清空,默认在es所在目录下的data中