admin管理员组文章数量:1625103
我的后端学习笔记大纲
我的ElasticSearch学习大纲
1、单机版:
1.1.安装ES6.8.0版本安装
- 1.下载ES6.8.0版本安装并上传到服务器上jdk
- 2.JDK安装:
# 1.在官方网站下载ES
- wget http://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.0.tar.gz
# 2.安装JDK(必须JDK1.8+)
- rpm -ivh jdk-8u181-linux-x64.rpm
/*注意:默认安装位置 /usr/java/jdk1.8.0_171-amd64*/
# 3.配置环境变量
- vim /etc/profile
在文件末尾加入:
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
export PATH=$PATH:$JAVA_HOME/bin
# 4.重载系统配置
- source /etc/profile
- 3.安装ES服务:
# 1. ES不能以root用户身份启动必须创建普通用户
- a.在linux系统中创建新的组
groupadd es
- b.创建新的用户es并将es用户放入es组中
useradd es -g es
- c.修改es用户密码
passwd es
# 2.使用普通用户登录并上传安装包
3.解压缩elasticsearch
- tar -zxvf elasticsearch-6.4.1.tar.gz
# 4.进入ES安装目录查看目录结构
- bin 可执行的二进制文件的目录
- config 配置文件的目录
- lib 运行时依赖的库
- logs 运行时日志文件
- modules 运行时依赖的模块
- plugins 可以安装官方以及第三方插件
# 5.进入bin目录中启动ES服务
- ./elasticsearch
- 出现下图红色日志说明启动成功:
# 6.执行如下命令测试客户端操作
- curl http://localhost:9200
- 3.开启远程连接权限
- 注意:ES服务默认启动是受保护的,只允许本地客户端连接,如果想要通过远程客户端访问,必须开启远程连接
# 1.开启ES远程访问
- vim elasticsearch.yml 将原来network修改为以下配置:
network.host: 0.0.0.0
1.2.Docker安装ES-7.12版本
a.创建网络
- 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里
先创建一个网络
:
docker network create es-net
b.加载镜像
- 1.这里我们采用elasticsearch的7.12.1版本的镜像,这个镜像体积非常大,接近1G。
将其上传到虚拟机中,然后运行命令加载即可:
# 导入数据
docker load -i es.tar
- 同理还有
kibana
的tar包也需要这样做。
c.运行
- 1.运行docker命令,部署单点es:
docker run -d \
--name es \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
-v es-data:/usr/share/elasticsearch/data \
-v es-plugins:/usr/share/elasticsearch/plugins \
--privileged \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.12.1
- 2.命令解释:
-e "cluster.name=es-docker-cluster"
:设置集群名称-e "http.host=0.0.0.0"
:监听的地址,可以外网访问-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"
:内存大小-e "discovery.type=single-node"
:非集群模式-v es-data:/usr/share/elasticsearch/data
:挂载逻辑卷,绑定es的数据目录-v es-logs:/usr/share/elasticsearch/logs
:挂载逻辑卷,绑定es的日志目录-v es-plugins:/usr/share/elasticsearch/plugins
:挂载逻辑卷,绑定es的插件目录--privileged
:授予逻辑卷访问权--network es-net
:加入一个名为es-net的网络中-p 9200:9200
:端口映射配置
- 3.在浏览器中输入:http://192.168.150.101:9200 即可看到elasticsearch的响应结果:
1.3.安装ES-7.8版本
- 1.下载ES:
- 2.上传与解压:将下载的tar包上传到服务器software目录下,然后解压缩:
tar -zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz -C /opt/module
- 3.将文件名更改成es-cluster:
mv elasticsearch-7.8.0 es-cluster
:
- 4.将软件分发到另外两台服务器上:
- 5.创建用户: 因为安全问题,
Elasticsearch 不允许 root 用户直接运行
,所以要在每个节点中创建新用户,在 root 用户中创建新用户
- 6.修改配置文件:修改
/opt/module/es/config/elasticsearch.yml
文件,分发文件:# 加入如下配置 cluster.name: elasticsearch node.name: node-1 network.host: 0.0.0.0 http.port: 9200 cluster.initial_master_nodes: ["node-1"]
- 7.修改
/etc/security/limits.conf
# 在文件末尾中增加下面内容 # 每个进程可以打开的文件数的限制 es soft nofile 65536 es hard nofile 65536
- 8.修改
/etc/security/limits.d/20-nproc.conf
# 在文件末尾中增加下面内容 # 每个进程可以打开的文件数的限制 es soft nofile 65536 es hard nofile 65536 # 操作系统级别对每个用户创建的进程数的限制 * hard nproc 4096 # 注:* 带表 Linux 所有用户名称
- 9.修改
/etc/sysctl.conf
# 在文件中增加下面内容 # 一个进程可以拥有的 VMA(虚拟内存区域)的数量,默认值为 65536 vm.max_map_count=655360
- 10.重新加载:
sysctl -p
- 11.启动软件:
cd /opt/module/es/ #前台启动 bin/elasticsearch #后台启动 bin/elasticsearch -d
- 12.测试软件:浏览器中输入地址:
http://192.168.148.3:9200/
1.4.Dcoke安装ES
- 1.我们以安装Elasticsearch-7.4.2版本为例,下载镜像文件:注意版本要对应
docker pull elasticsearch:7.4.2 存储和检索数据
docker pull kibana:7.4.2 可视化检索数据
- 2.创建elasticsearch实例:
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
chmod -R 777 /mydata/elasticsearch/ 保证权限
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
- 4.测试:
2、集群版:
- 1.Elasticsearch集群规划:
关系型数据库(比如Mysql) | 非关系型数据库(Elasticsearch) | 非关系型数据库(Elasticsearch) |
---|---|---|
centos7 | hadoop103 | 192.168.148.3 |
centos7 | hadoop104 | 192.168.148.4 |
centos7 | hadoop105 | 192.168.148.5 |
2.1.版本ES-6.8.0集群:
2.2.使用Docker部署ES-7.12集群:
部署es集群可以直接使用docker-compose来完成,不过要求你的Linux虚拟机至少有4G的内存空间
a.首先编写一个docker-compose文件,内容如下:
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.12.1
container_name: es01
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elastic
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.12.1
container_name: es02
environment:
- node.name=es02
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data02:/usr/share/elasticsearch/data
networks:
- elastic
es03:
image: docker.elastic.co/elasticsearch/elasticsearch:7.12.1
container_name: es03
environment:
- node.name=es03
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es02
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data03:/usr/share/elasticsearch/data
networks:
- elastic
volumes:
data01:
driver: local
data02:
driver: local
data03:
driver: local
networks:
elastic:
driver: bridge
b.执行docker-compose文件:
docker-compose up
2.3.版本ES-7.8.0集群:
- 1.解压压缩包:
tar -zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz -C /opt/module
- 2.将文件名更改成es-cluster:
mv elasticsearch-7.8.0 es-cluster
:
- 3.创建用户:Elasticsearch 因为安全问题,不允许 root 用户直接运行,所以要在每个节点中创建新用户,在 root 用户中创建新用户
useradd es #新增 es 用户
passwd es #为 es 用户设置密码
userdel -r es #如果错了,可以删除再加
chown -R es:es /opt/module/es-cluster #文件夹所有者
- 4.将软件分发到另外两台服务器上:
- 5.配置目录:安装完毕后会生成很多文件,包括配置文件日志文件等等,下面几个是
最主要的配置文件路径
/opt/module/es-cluster/
# elasticsearch 安装目录/opt/module/es-cluster/config/elasticsearch.yml
#elasticsearch的配置文件/opt/module/es-cluster/config/jvm.options
#JVM相关的配置,内存大小等等/data/elk1/data
# 数据存放路径/data/elk1/logs
# 日志存放路径
- 6.创建用于存放数据与日志的目录:数据文件会随着系统的运行飞速增长,所以默认的日志文件与数据文件的路径不能满足我们的需求,需要手动创建日志与数据文件路径
mkdir -p /data/elk1/data
mkdir -p /data/elk1/logs
- 7.集群配置:
vim /opt/module/es-cluster/config/elasticsearch.yml
(yml文件有严格的语法要求,在配置的时候,一定要注意语法,这里容易出现错误)
# 加入如下配置
# #集群名称
cluster.name: cluster-es
# 节点名称,每个节点的名称不能重复
node.name: node-1
#ip 地址,每个节点的地址不能重复
network.host: hadoop103
#是不是有资格主节点
node.master: true
node.data: true
http.port: 9200
## head 插件需要这打开这两个配置
http.cors.allow-origin: "*"
http.cors.enabled: true
http.max_content_length: 200mb
##es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master
cluster.initial_master_nodes: ["node-1"]
##es7.x 之后新增的配置,节点发现
discovery.seed_hosts: ["192.168.148.3:9300","192.168.148.4:9300","192.168.148.5:9300"]
gateway.recover_after_nodes: 2
network.tcp.keep_alive: true
network.tcp.no_delay: true
transport.tcppress: true
##集群内同时启动的数据任务个数,默认是 2 个
cluster.routing.allocation.cluster_concurrent_rebalance: 16
##添加或删除节点及负载均衡时并发恢复的线程个数,默认 4 个
cluster.routing.allocation.node_concurrent_recoveries: 16
##初始化数据恢复时,并发恢复线程的个数,默认 4 个
cluster.routing.allocation.node_initial_primaries_recoveries: 16
# 加入如下配置
# #集群名称
cluster.name: cluster-es
# 节点名称,每个节点的名称不能重复
node.name: node-2
#ip 地址,每个节点的地址不能重复
network.host: hadoop104
#是不是有资格主节点
node.master: true
node.data: true
http.port: 9200
## head 插件需要这打开这两个配置
http.cors.allow-origin: "*"
http.cors.enabled: true
http.max_content_length: 200mb
##es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master
cluster.initial_master_nodes: ["node-1"]
##es7.x 之后新增的配置,节点发现
discovery.seed_hosts: ["192.168.148.3:9300","192.168.148.4:9300","192.168.148.5:9300"]
gateway.recover_after_nodes: 2
network.tcp.keep_alive: true
network.tcp.no_delay: true
transport.tcppress: true
##集群内同时启动的数据任务个数,默认是 2 个
cluster.routing.allocation.cluster_concurrent_rebalance: 16
##添加或删除节点及负载均衡时并发恢复的线程个数,默认 4 个
cluster.routing.allocation.node_concurrent_recoveries: 16
##初始化数据恢复时,并发恢复线程的个数,默认 4 个
cluster.routing.allocation.node_initial_primaries_recoveries: 16
# 加入如下配置
# #集群名称
cluster.name: cluster-es
# 节点名称,每个节点的名称不能重复
node.name: node-3
#ip 地址,每个节点的地址不能重复
network.host: hadoop105
#是不是有资格主节点
node.master: true
node.data: true
http.port: 9200
## head 插件需要这打开这两个配置
http.cors.allow-origin: "*"
http.cors.enabled: true
http.max_content_length: 200mb
##es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master
cluster.initial_master_nodes: ["node-1"]
##es7.x 之后新增的配置,节点发现
discovery.seed_hosts: ["192.168.148.3:9300","192.168.148.4:9300","192.168.148.5:9300"]
gateway.recover_after_nodes: 2
network.tcp.keep_alive: true
network.tcp.no_delay: true
transport.tcppress: true
##集群内同时启动的数据任务个数,默认是 2 个
cluster.routing.allocation.cluster_concurrent_rebalance: 16
##添加或删除节点及负载均衡时并发恢复的线程个数,默认 4 个
cluster.routing.allocation.node_concurrent_recoveries: 16
##初始化数据恢复时,并发恢复线程的个数,默认 4 个
cluster.routing.allocation.node_initial_primaries_recoveries: 16
- 三台机器不一样的
elasticsearch.yml
配置点如下
node.name: node-1 #192.168.148.3
node.name: node-2 #192.168.148.4
node.name: node-3 #192.168.148.5
network.host: 192.168.148.3 #192.168.148.3
network.host: 192.168.148.4 #192.168.148.4
network.host: 192.168.148.5 #192.168.148.5
- 8.JVM配置:
- 由于Elasticsearch是Java开发的,所以可以通过
/etc/elasticsearch/jvm.options
配置文件来设定JVM的相关设定。如果没有特殊需求按默认即可。 - 但是其中还是有两项最重要的-Xmx1g与-Xms1gJVM的最大最小内存。如果太小会导致Elasticsearch刚刚启动就立刻停止。太大会拖慢系统本身。
- 由于Elasticsearch是Java开发的,所以可以通过
vim /opt/module/es-cluster/config/jvm.options
-Xms1g 修改为 ===> -Xms2g
-Xmx1g 修改为 ===> -Xmx2g
- 9.修改
/etc/sysctl.conf
:添加如下配置后并重新加载:sysctl -p
:
vm.max_map_count=655360
- 10.切换用户es后,切到es的安装目录后,启动服务:
./bin/elasticsearch
3.Kinbana环境搭建
kibana可以给我们提供一个elasticsearch的可视化界面,便于我们学习
3.1.安装kibana:6.8.1版本:
- 1.创建Kinbana实例:
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.148.3:9200 -p 5601:5601 \
-d kibana:6.8.1
- 5.访问测试:192.168.148.3:5601
3.2.kibana-7.12版本
a.部署
- 1.运行docker命令,部署kibana
docker run -d \ --name kibana \ -e ELASTICSEARCH_HOSTS=http://es:9200 \ --network=es-net \ -p 5601:5601 \ kibana:7.12.1
--network es-net
:加入一个名为es-net的网络中,与elasticsearch在同一个网络中-e ELASTICSEARCH_HOSTS=http://es:9200"
:设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch-p 5601:5601
:端口映射配置
- 2.kibana启动一般比较慢,需要多等待一会,可以通过命令:
docker logs -f kibana
- 查看运行日志,当查看到下面的日志,说明成功:
- 3.此时,在浏览器输入地址访问:http://192.168.150.101:5601,即可看到结果
b.DevTools
- kibana中提供了一个DevTools界面:
- 2.这个界面中可以编写DSL来操作elasticsearch。并且对DSL语句有自动补全功能。
本文标签: 环境ElasticsearchLinux
版权声明:本文标题:[000-01-018].第3节:Linux环境下ElasticSearch环境搭建 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1728913184a1179365.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论