Linux部署elasticsearch和迁移数据详细教程

2022年05月15日 阅读数:4
这篇文章主要向大家介绍Linux部署elasticsearch和迁移数据详细教程,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

部署 elasticsearch和迁移数据

1、 服务器资源

服务类型:Linux服务器html

IP:服务器公网ip地址java

操做系统:CentOS 7.9 x64node

2、服务端安装JDK

2.一、卸载系统自带的jdk

Centos可能自带了jdk,可是版本可能会较低,执行下面的命令检测是否已经安装了jdklinux

# rpm -qa | grep jdk
复制代码

若是检测已经安装了二进制的jdk,则使用下面的命令卸载,防止如今的二进制jdk对你以后安装的源码jdk冲突git

可能已经安装,可是版本至关于官网较低,为防止冲突,因此先卸载自带的jdkgithub

#rpm -e --nodeps tzdata-java-2014g-1.el6.noarch
复制代码

2.二、将JDK放到 tools目录下并解压

把jdk-8u201-linux-x64.tar.gz上传到/opt/tools目录下,解压到/opt/app目录下spring

# cd /opt/tools    //进到tools目录

# tar -zxvf jdk-8u201-linux-x64.tar.gz -C /opt/app/    //解压jdk-8u201-linux-x64.tar.gz压缩包
复制代码

把解压出来的目录更名为jdk1.8npm

# cd /opt/app    //进到app目录

# mv jdk1.8.0_201 jdk1.8    //改文件的名称
复制代码

2.三、将JDK添加到环境变量中

# vi /etc/profile    //打开profile
复制代码

在文件末尾添加如下内容:json

#java env

export JAVA_HOME=/opt/app/jdk1.8

export PATH=$PATH:$JAVA_HOME/bin
复制代码

使修改生效:bootstrap

# source /etc/profile
复制代码

验证安装是否成功:

# java -version
复制代码

3、从节点配置防火墙

启动9200、9300端口

# vi /etc/sysconfig/iptables    ​​​​​​​//打开iptables
复制代码

添加如下内容:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 9200 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 9300 -j ACCEPT
复制代码

重启防火墙

# service iptables restart
复制代码

4、服务端安装Elasticsearch

4.一、将Elasticsearch放到 tools目录下并解压

elasticsearch-6.3.2.tar.gz上传到/opt/tools目录下,解压到/opt/app目录下

# cd /opt/tools    //进到tools

# tar -zxvf elasticsearch-6.3.2.tar.gz -C /opt/app/    //解压到app目录
复制代码

把解压出来的目录更名为elasticsearch

# cd /opt/app    //进到app目录

# mv elasticsearch-6.3.2 elasticsearch    //更更名称
复制代码

4.二、建立数据和日志目录

# cd /opt/    //进到opt目录

# mkdir elk    //建立elk

# cd elk    //进到elk

# mkdir data    //建立data

# mkdir logs    //建立logs
复制代码

4.三、修改ES配置文件

# cd /opt/app/elasticsearch/    //进到elasticsearch

# vi config/elasticsearch.yml    ​​​​​​​//打开elasticsearch.yml​​​​​​​
复制代码

把里面的内容替换为:

cluster.name: dzjk-es
node.name: es-node1
cluster.initial_master_nodes: [es-node1]
path.data: /opt/elk/data
path.logs: /opt/elk/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: ip
http.port: 9200
discovery.zen.ping.unicast.hosts: ["ip:9300"]
http.cors.enabled: true
http.cors.allow-origin: "*"
复制代码

注意:以上内容的两处ip替换为Linux服务器的IP

4.四、JVM调优

# vi /opt/app/elasticsearch/config/jvm.options
复制代码

把xms和xmx设置为物理内存的一半:

-Xms8g

-Xmx8g
复制代码

4.五、新建es专用用户并受权

# groupadd elsearch

# useradd elsearch -g elsearch -p elasticsearch
复制代码

把es安装目录受权给elsearch用户

# cd /opt/app/

# chown -R elsearch:elsearch ./elasticsearch
复制代码

把elk数据和日志目录elsearch用户

# chown -R elsearch:elsearch /opt/elk
复制代码

4.六、将es添加到环境变量中

# vi /etc/profile
复制代码

在文件末尾添加如下内容:

#elasticsearch env

export ES_HOME=/opt/app/elasticsearch

export PATH=$PATH:$ES_HOME/bin
复制代码

使修改生效:

# source /etc/profile
复制代码

4.七、系统优化

# vi /etc/security/limits.conf
复制代码

在文件末尾添加如下内容:(同时打开文件数和进行数)

* soft nofile 65536

* hard nofile 131072

* soft nproc 65536

* hard nproc 131072
复制代码
# vi /etc/security/limits.d/20-nproc.conf
复制代码

添加如下内容:

elsearch   soft    nproc     65536
复制代码
# vi /etc/sysctl.conf
复制代码

在文件末尾添加如下内容:

fs.file-max = 655360

vm.max_map_count = 262144
复制代码

立刻生效:

# sysctl -p
复制代码

若是启动报错:

max file size [67108864] for user [elsearch] is too low, increase to [unlimited]

#切换root用户,执行下面命令

ulimit -f unlimited

永久解决:

vi /etc/security/limits.conf

加上下面的语句

elsearch - fsize unlimited

注意:/etc/profile 下面是否设置了ulimit -f 1024000,不然不生效
复制代码

4.八、启动es

切换到elsearch用户

# su - elsearch
复制代码

控制台方式启动:

# elasticsearch
复制代码

后台方式启动:

# elasticsearch -d
复制代码

root用户下切换用户后台方式启动:

# su - elsearch -c "/opt/app/elasticsearch/bin/elasticsearch -d"
复制代码

4.九、测试验证

curl <http://ip:9200>
复制代码

注意:以上ip替换为Linux服务器的IP

或者在浏览器访问:http://ip:9200/_search?pretty

注意:以上ip替换为Linux服务器的IP

4.十、安装最新版es-7.10.0

1.安装jdk11,安装方式与上面的jdk8相同

# vi /etc/profile
复制代码

在文件末尾添加如下内容:

#java11 env

export JAVA_HOME2=/opt/app/jdk11

export PATH=$PATH:$JAVA_HOME2/bin
复制代码

使修改生效:

# source /etc/profile
复制代码

把jdk11安装目录受权给elsearch用户

# cd /opt/app/

# chown -R elsearch:elsearch ./jdk11
复制代码

2. 解压es后,修改es的配置为使用jdk11

# vi /opt/app/elasticsearch/bin/elasticsearch-env
复制代码

3. 启动新版es

切换到elsearch用户

# su - elsearch
复制代码

控制台方式启动:

# elasticsearch
复制代码

后台方式启动:

# elasticsearch -d
复制代码

root用户下切换用户后台方式启动:

# su - elsearch -c "/opt/app/elasticsearch/bin/elasticsearch -d"
复制代码

验证是否启动成功:

curl <http://ip:9200>
复制代码

4.十一、添加用户权限

1.添加权限配置:

# cd /opt/app/elasticsearch/

# vi config/elasticsearch.yml
复制代码

添加内容:

cluster.initial_master_nodes: [es-node1]

## 加密方式

xpack.security.enabled: true

xpack.license.self_generated.type: basic

xpack.security.transport.ssl.enabled: true
复制代码

2. 重启es让配置生效

# su - elsearch -c "/opt/app/elasticsearch/bin/elasticsearch -d"
复制代码

3. 执行命令设置超级管理员用户的密码

cd /opt/app/elasticsearch

./bin/elasticsearch-setup-passwords interactive  
复制代码

而后输入密码:elastic(屡次同样便可)

4. 建立自定义用户

curl -XPOST -u elastic 'ip:9200/_xpack/security/user/esUser' -H "Content-Type: application/json" -d '{

  "password" : "es12qw!@P@ssw0rd",

  "full_name" : "es user",

  "email" : "test@test",

  "roles" : [ "superuser" ],

  "metadata" : {

    "intelligence" : 7

  }

}'
复制代码

5. 测试链接

Linux测试:(-u用刚才新加的用户密码访问)

curl http://ip:9200 -u esUser:dbPassw0rd
复制代码

浏览器测试:

使用es-heads输入http://ip:9200/  会提示填写帐号密码,把刚刚设置的esUser,dbPassw0rd填写完链接便可

6. springboot使用es的配置以下:

Spring:
    elasticsearch:
        rest:
            uris: ip:9200
            username: esUser
            password: dbPassw0rd
复制代码

4.十二、添加es防火墙ip白名单

修改防火墙:

vi /etc/service/iptables
复制代码

把原9200和9300端口开放的两条规则前面添加#号注释:即变成

#-A INPUT -p tcp -m state --state NEW -m tcp --dport 9200 -j ACCEPT

#-A INPUT -p tcp -m state --state NEW -m tcp --dport 9300 -j ACCEPT
复制代码

在COMMIT前添加如下内容:

-A INPUT -s 172.29.0.128 -p tcp --dport 9200 -j ACCEPT

-A INPUT -s 172.29.0.128 -p tcp --dport 9300 -j ACCEPT

-A INPUT -s 172.0.29.133 -p tcp --dport 9200 -j ACCEPT

-A INPUT -s 172.0.29.133 -p tcp --dport 9300 -j ACCEPT
复制代码

保存退出

重启防火墙:

service iptables restart
复制代码

5、Elasticdump数据迁移

5.一、安装nodejs

把node官方链接nodejs.org/zh-cn/downl…

# tar -xf node-v14.15.4-linux-x64.tar.xz 

注:(没法用tar解压的,先本身本地解压成xxx.tar)
复制代码
# mv node-v14.15.4-linux-x64 /usr/local/node

# cd /usr/bin           #切换到环境变量目录下

# ln -s /usr/local/node/bin/node node        #添加软链接

# ln -s /usr/local/node/bin/npm npm

# node -v                #查看版本,验证是否安装成功\
# npm-v
复制代码

5.二、安装Elasticdump

# npm install elasticdump -g

#添加软链接
# ln -s  /usr/local/node/lib/node_modules/elasticdump/bin/elasticdump /usr/bin/elasticdump         

#添加软链接
# ln -s  /usr/local/node/lib/node_modules/elasticdump/bin/multielasticdump /usr/bin/multielasticdump        

#验证
# elasticdump --help        
复制代码

:没法连网安装,找一个一样环境的联网机器,虚拟机也能够,用来拷贝Elasticdump模块缓存

安装好npmnode之后,npm install elasticdump -g

安装完成后输入命令查看缓存目录位置:  

npm config get cache  ==> /root/.npm
复制代码

将.npm 打包并拷贝出来

# cd /root/

# tar -cf npm-cache.tar .npm/
复制代码

传输到离线机器上的/root目录下面:

#tar -xf /root/npm-cache.tar

# npm install --cache ./npm-cache --optional --cache-min 99999999999 --shrinkwrap false elasticdump

#添加软链接
# ln -s /root/node_modules/elasticdump/bin/elasticdump  /usr/bin/elasticdump  

#添加软链接
# ln -s /root/node_modules/elasticdump/bin/multielasticdump  /usr/bin/multielasticdump 

#验证
# elasticdump --help        
复制代码

5.三、迁移数据

ES导出 数据 到本地JSON文件

#格式:elasticdump --input {protocol}://{host}:{port}/{index} --output ./test_index.json  

#例子:将ES中的test_index 中的索引导出  

#导出当前索引的mapping结构  

# elasticdump --input http://user:password@ip:9200/test_index --output ./test_index_mapping.json --type=mapping  
复制代码

#导出当前索引下的全部真实数据  

# elasticdump --input http://user:password@ip:9200/test_index --output ./test_index.json --type=data  
复制代码

#上面导出的两个文件都是在导入到ES中所须要的,一个是mapping文件,另一个是数据,固然mapping也能够本身手动创建  

本地JSON文件导入到ES中

经过上面导出,已经导出了两个文件,一个是数据文件,一个是mapping文件。

#建立索引

# curl -XPUT <http://ip:9200/test_index> -u esUser:dbPassw0rd
复制代码

#导入mapping

# elasticdump --input ./test_index_mapping.json --output http://user:password@ip:9200/ --type=mapping
复制代码

#导入data数据

# elasticdump --input ./test_index.json --output http://user:password@ip:9200/ --type=data
复制代码

好了,以上就是linux部署elasticsearch,迁移elasticsearch数据的全过程,到zheljiu所有结束了,有不懂的能够在下方留言^_^

最后

若是你以为这篇文章对你有点用的话,麻烦请给咱们的开源项目点点star:http://github.crmeb.net/u/defu不胜感激 !

免费获取源码地址:http://ym.baisouvip.cn/html/wzym/36.html

PHP学习手册:https://doc.crmeb.com

技术交流论坛:https://q.crmeb.com