部署es7.4.2及远程迁移数据、开机启动

1 es 8.0.0

groupadd:无法打开 /etc/group
chattr: 没有那个文件或目录 当尝试对group进行stat调用时

chattr -i /etc/group 
chattr -i /etc/passwd 
chattr -i /etc/shadow
chattr -i /etc/gshadow 
groupadd es
useradd -g es es
passwd es
chattr +i /etc/group 
chattr +i /etc/passwd 
chattr +i /etc/shadow
chattr +i /etc/gshadow 
chown -R es:es elasticsearch
chown -R es:es elasticsearch-8.0.0
# 关闭所有交换分区
swapoff -a 
# vim /etc/security/limits.conf
添加以下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
在以下配置文件中添加参数:
# vim /etc/sysctl.conf

vm.max_map_count=655360
# sysctl -p
调整文件打开数限制:
# ulimit -HSn 65535

mkdir -p /appdata/es/data
mkdir -p /appdata/es/logs
chown -R es:es /appdata/es

# 配置内存
cd /appdata/elasticsearch/config
cp jvm.options jvm.options.bak
vi jvm.options
-Xms16g
-Xmx16g

ElasticSearch8集群的安装部署
配置ca证书

cd /appdata/elasticsearch/bin
# 签发ca证书
# ./elasticsearch-certutil ca 
`【ENTER】`   什么也不用输入直接回车
`【ENTER】`   什么也不用输入直接回车

# 用ca证书签发节点证书
# ./elasticsearch-certutil cert --ca elastic-stack-ca.p12  
`【ENTER】`   什么也不用输入直接回车
`【ENTER】`   什么也不用输入直接回车
`【ENTER】`   什么也不用输入直接回车

# 将证书放到certs目录(手动创建)
mkdir -p /appdata/elasticsearch/config/certs
cd /appdata/elasticsearch
mv elastic-certificates.p12  elastic-stack-ca.p12 config/certs 

# 修改hosts
vi hosts
192.168.0.105 bs105.testcom.cn bs105
192.168.0.8 bs8.testcom.cn bs8
192.168.0.6 bs6.testcom.cn bs6
# 让hosts生效
service network restart

配置elasticsearch.yml

# 注意冒号后面要有空格,要符合yml格式规范
cluster.name: testcom8
node.name: bs8.testcom.cn
node.roles: [master,data]
path.data: /appdata/es/data
path.logs: /appdata/es/logs
network.host: 0.0.0.0
# 如果是docker环境,即是es不是通过容器化安装的,network.publish_host这个配置也不能少,否则就会报错无法找到节点ip,这个节点ip
# 配置内容为当前宿主机ip
network.publish_host: 192.168.0.
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.initial_master_nodes: ["bs8.testcom.cn", "bs6.testcom.cn", "bs105.testcom.cn"]
# 禁止使用通配符或_all删除索引
action.destructive_requires_name: true
discovery.seed_hosts: ["192.168.0.8:9300", "192.168.0.6:9300", "192.168.0.105:9300"]
reindex.remote.whitelist: ["192.168.0.180:9200","192.168.0.181:9200","192.168.0.182:9200"]
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.client_authentication: required
xpack.security.transport.ssl.keystore.path: /appdata/elasticsearch/config/certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /appdata/elasticsearch/config/certs/elastic-certificates.p12
ingest.geoip.downloader.enabled: false

安装ik分词,analysis-ik,根据es的版本进行匹配
安装pinyin分词,analysis-pinyin,根据es的版本进行匹配

# 将文件复制过去
cd /appdata/elasticsearch/plugins
unzip -d analysis-ik/ elasticsearch-analysis-ik-8.0.0.zip
unzip -d analysis-pinyin/ elasticsearch-analysis-pinyin-8.0.0.zip 
rm -f elasticsearch-analysis-ik-8.0.0.zip
rm -f elasticsearch-analysis-pinyin-8.0.0.zip

cd /appdata/elasticsearch/bin
./elasticsearch -d
# 防火墙
firewall-cmd --state
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --zone=public --add-port=9300/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports

curl -k --user elastic:Bs@#654123 -XGET  http://192.168.0.8:9200/_cat/nodes?v

# 在es集群中任意节点中执行即可
cd /appdata/elasticsearch/bin
# 设置密码
./elasticsearch-setup-passwords interactive



./elasticsearch-reset-password -u elastic

出现下面这个问题,就是network.publish_host没有配置,这个很关键

./elasticsearch-setup-passwords interactive

Failed to determine the health of the cluster running at http://172.17.0.1:9200
Unexpected response code [503] from calling GET http://172.17.0.1:9200/_cluster/health?pretty
Cause: master_not_discovered_exception


http://192.168.0.8:9200/_cat/nodes?pretty

2 es 7.4.2

1 创建es用户

groupadd es
useradd -g es es
passwd es
# 密码
# 创建es的目录
mkdir -p /etc/elasticsearch

2 安装es7.4.2

# 传文件
scp elasticsearch-7.4.2-linux-x86_64.tar.gz elasticsearch-analysis-ik-7.4.2.zip elasticsearch-analysis-pinyin-7.4.2.zip root@10.101.3.182:/etc/elasticsearch/
tar zxvf elasticsearch-7.4.2-linux-x86_64.tar.gz
# 安装ik分词插件
mkdir -p /etc/elasticsearch/elasticsearch-7.4.2/plugins/analysis-ik
unzip  elasticsearch-analysis-ik-7.4.2.zip -d /etc/elasticsearch/elasticsearch-7.4.2/plugins/analysis-ik
# 安装piyin分词插件
mkdir -p /etc/elasticsearch/elasticsearch-7.4.2/plugins/analysis-pinyin
unzip elasticsearch-analysis-pinyin-7.4.2.zip -d /etc/elasticsearch/elasticsearch-7.4.2/plugins/analysis-pinyin
# 切换权限
cd /etc/elasticsearch
chown -R es:es elasticsearch-7.4.2
# 配置es的数据和日志目录
mkdir -p /application/elasticsearch/data 
mkdir -p /application/elasticsearch/logs
chown -R es:es /application/elasticsearch

调整es相关配置elasticsearch.yml,vi /etc/elasticsearch/elasticsearch-7.4.2/config/elasticsearch.yml

cluster.name: bsspirit
node.name: bs182.bsspirit.cn
node.master: true
node.data: true
path.data: /application/elasticsearch/data
path.logs: /application/elasticsearch/logs
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.101.3.180", "10.101.3.181", "10.101.3.182"]
cluster.initial_master_nodes: ["bs180.bsspirit.cn", "bs181.bsspirit.cn", "bs182.bsspirit.cn"]
discovery.zen.minimum_master_nodes: 2
# 减少当es节点短时间宕机或重启时shards重新分布带来的磁盘io读写浪费
discovery.zen.fd.ping_timeout: 300s
discovery.zen.fd.ping_retries: 8
discovery.zen.fd.ping_interval: 30s
discovery.zen.ping_timeout: 180s

更改jdk版本,


配置jvm配置

设置开机启动

cd /etc/init.d
vi elasticsearch

注意kill -9cat $ES_HOME/pid``,这里有一个pid文件,如果你的es先启动的,是没有这个文件的,故而需要先kil进程,再service elasticsearch start产生这个pid文件才行

#!/bin/sh
# chkconfig: - 85 15
#description: elasticsearch
export ES_HOME=/etc/elasticsearch/elasticsearch-7.4.2

case "$1" in
start)
    su es<<!
    cd $ES_HOME
    ./bin/elasticsearch -d -p pid
!
    echo "elasticsearch startup"
    ;;  
stop)
    kill -9 `cat $ES_HOME/pid`
    echo "elasticsearch stopped"
    ;;  
restart)
    kill -9 `cat $ES_HOME/pid`
    echo "elasticsearch stopped"
    su es<<!
    cd $ES_HOME
    ./bin/elasticsearch -d -p pid
!
    echo "elasticsearch startup"
    ;;  
*)
    echo "start|stop|restart"
    ;;  
esac
exit 0

```sh
chmod 777 elasticsearch
# 添加系统服务
chkconfig --add elasticsearch
# 删除系统服务
chkconfig --del elasticsearch
# 开启开机自动启动服务
chkconfig elasticsearch on
# 关闭开机自动启动服务
chkconfig elasticsearch off
# 启动服务
service elasticsearch start
# 停止服务
service elasticsearch stop
# 重启服务
service elasticsearch restart
# 查看当前的开机启动服务命令
chkconfig --list

今天验证后,仿照的应用启动没有问题,将机器reboot,es的开机启动却有问题,启动1分钟时存活的,一会儿就宕机了。也没有日志,真实很奇怪。

[2022-10-18T16:40:07,470][INFO ][o.e.n.Node               ] [bs181.bsspirit.cn] initialized
[2022-10-18T16:40:07,471][INFO ][o.e.n.Node               ] [bs181.bsspirit.cn] starting ...
[2022-10-18T16:40:07,684][INFO ][o.e.t.TransportService   ] [bs181.bsspirit.cn] publish_address {192.168.0.181:9300}, bound_addresses {[::]:9300}
[2022-10-18T16:40:07,693][INFO ][o.e.b.BootstrapChecks    ] [bs181.bsspirit.cn] bound or publishing to a non-loopback address, enforcing bootstrap checks
[2022-10-18T16:40:07,727][ERROR][o.e.b.Bootstrap          ] [bs181.bsspirit.cn] node validation exception
[1] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
[2022-10-18T16:40:07,730][INFO ][o.e.n.Node               ] [bs181.bsspirit.cn] stopping ...
[2022-10-18T16:40:07,755][INFO ][o.e.n.Node               ] [bs181.bsspirit.cn] stopped
[2022-10-18T16:40:07,755][INFO ][o.e.n.Node               ] [bs181.bsspirit.cn] closing ...
[2022-10-18T16:40:07,769][INFO ][o.e.n.Node               ] [bs181.bsspirit.cn] closed
[2022-10-18T16:40:07,771][INFO ][o.e.x.m.p.NativeController] [bs181.bsspirit.cn] Native controller process has stopped - no new native processes can be started

看来就是这个max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]问题影响了,再排查。

[root@bs181 logs]# ulimit -Sn
655350
[root@bs181 logs]# ulimit -Hn
655350
[root@bs181 logs]# su - es
上一次登录:二 1018 16:43:22 CST 2022pts/0 上
[es@bs181 ~]$ ulimit -Hn
655350
[es@bs181 ~]$ ulimit -Sn
655350

解决方案,执行命令,重启电脑即可。

sed -i '/^#DefaultLimitNOFILE=/aDefaultLimitNOFILE=655350' /etc/systemd/system.conf 
sed -i '/^#DefaultLimitNPROC=/aDefaultLimitNPROC=655350' /etc/systemd/system.conf

仿照elasticsearch做一个springboot的应用启动

#!/bin/sh
# chkconfig: - 85 15
#description: bdo
export BDO_HOME=/root/application
export BDO_JAR=bdo-server_20220624.jar

pid=`ps -ef|grep java | grep $BDO_JAR | awk '{print $2}'`

case "$1" in
start)
    if [ "$pid" =  "" ]; then
        cd $BDO_HOME
        nohup java -jar $BDO_JAR -Dfile.encoding=utf-8 > bdo1.out 2>&1 & 
        echo "bdo startup"
    else
        echo "bdo is already alive!"
    fi 
    ;;
stop)
    if [ "$pid" =  "" ]; then
		echo "no bdo survive"
	else
		kill -9 $pid
		echo "bdo stopped"
	fi 
    ;;
restart)
    if [ "$pid" !=  "" ]; then
        kill -9 $pid
		echo "bdo stopped"
    fi
    cd $BDO_HOME
    nohup java -jar $BDO_JAR -Dfile.encoding=utf-8 > bdo1.out 2>&1 &
!
    echo "bdo startup"
    ;;
*)
    echo "start|stop|restart"
    ;;
esac
exit 0

3 更改服务器配置

# 关闭swap分区
swapoff -a

# 配置内核参数
echo "fs.file-max = 1000000" >> /etc/sysctl.conf
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
echo "vm.swappiness = 1" >> /etc/sysctl.conf
sysctl -p
sed -i 's/* soft nofile 65535/* soft nofile 655350/g' /etc/security/limits.conf
sed -i 's/* hard nofile 65535/* hard nofile 655350/g' /etc/security/limits.conf
sed -i 's#*          soft    nproc     4096##' /etc/security/limits.d/20-nproc.conf

vim /etc/security/limits.conf,将下面的配置写入到文件中


root soft nofile 655350
root hard nofile 655350
* soft nofile 6553500
* hard nofile 6553500
es soft memlock unlimited
es hard memlock unlimited

vi /etc/pam.d/su,注释掉下面的一行

#session                include         system-auth

vi /etc/security/limits.d/20-nproc.conf,新增

* soft memlock unlimited
* hard memlock unlimited

启动es集群


4 安装kibana

groupadd kibana
useradd -g kibana kibana
passwd kibana 
# 密码 
mkdir -p /etc/kibana

传递文件

scp kibana-7.4.2-linux-x86_64.tar.gz root@10.101.3.180:/etc/kibana/
tar zxvf kibana-7.4.2-linux-x86_64.tar.gz
chown -R kibana:kibana kibana-7.4.2-linux-x86_64

kibana连接elasticsearch的配置

server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://10.101.3.180:9200","http://10.101.3.181:9200","http://10.101.3.182:9200"]
elasticsearch.requestTimeout: 30000
su - kibana
cd /etc/kibana/kibana-7.4.2-linux-x86_64/bin
nohup /etc/kibana/kibana-7.4.2-linux-x86_64/bin/kibana > kibana.out 2>&1 &

5 创建发票抬头索引

# 新建索引
PUT edata_v2/
{
  "settings": {
    "index": {
        "analysis": {
            "filter": {
                "edge_ngram_filter": {
                    "type": "edge_ngram",
                    "min_gram": 1,
                    "max_gram": 50
                },
                "pinyin_simple_filter": {
                    "type": "pinyin",
                    "keep_first_letter": true,
                    "keep_separate_first_letter": false,
                    "keep_full_pinyin": false,
                    "limit_first_letter_length": 50
                },
                "pinyin_full_filter": {
                    "type": "pinyin",
                    "keep_first_letter": false,
                    "keep_none_chinese_in_joined_full_pinyin":true,
                    "keep_separate_first_letter": false,
                    "keep_full_pinyin": true,
                    "limit_first_letter_length": 50
                }
            },
            "analyzer": {
                "ngramIndexAnalyzer": {
                    "type": "custom",
                    "tokenizer": "keyword",
                    "filter": ["edge_ngram_filter", "lowercase"]
                },
                "provinceNgramAnalyzer": {
                  "tokenizer": "provinceNgramTokenizer"
                },
                "pinyiSimpleSearchAnalyzer": {
                    "tokenizer": "keyword",
                    "filter": ["pinyin_simple_filter", "edge_ngram_filter"]
                },
                "pinyiFullSearchAnalyzer": {
                    "tokenizer": "ik_max_word",
                    "filter": ["pinyin_full_filter"]
                }
            },
            "tokenizer": {
              "provinceNgramTokenizer": {
                "type": "edge_ngram",
                "min_gram": "2",
                "max_gram": "6"
              }
            },
            "normalizer": {
              "lowercase": {
                "type": "custom",
                "filter": ["lowercase"]
              }
            }
        }
    }
}
}

# 索引mapping 修改
POST edata_v2/_mapping
{
     "date_detection": false,
    "numeric_detection": false, 
    "dynamic_templates": [{
      "strings": {
        "match_mapping_type": "string",
        "mapping": {
          "type": "keyword"
        }
      }
    }],
    "properties": {
        "addresstel": {
            "type": "keyword"
        },
        "bandkaccount": {
            "type": "keyword"
        },
	"creditcode": {
            "type":"keyword",
            "normalizer":"lowercase"
        },
	"date":{
	    "type":"date",
	    "format":"yyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
	},
	"detail":{
		"type":"keyword"
	},
        "name":{
	    "type":"keyword",
	    "fields":{
		"FPY":{
		"type":"text",
		"analyzer":"pinyiFullSearchAnalyzer"
	    },
	    "IKS":{
		"type":"text",
		"analyzer":"ik_max_word"
	    },
	    "SPY":{
		"type":"text",
		"analyzer":"pinyiSimpleSearchAnalyzer"
	    },
	    "words":{
		"type":"text",
		"analyzer":"ngramIndexAnalyzer"
		}
	    }
	},
	"selfRisk":{
	    "type":"integer"
	},
	"source":{
	    "type":"keyword"
	},
	"status":{
	    "type":"keyword"
	},
	"warnRisk":{
	    "type":"integer"
	}
}

}

# 测试数据

POST edata_v2/_doc
{
    "name": "平湖达瑜服饰有限公司",
    "creditcode": "91330482MA28AK584D",
    "bandkaccount": "",
    "addresstel": "平湖市新华北路868号平湖中国服装城C区1层B25号",
    "date": "2019-05-10 02:16:46",
    "source": "百度信用",
    "status": "开业"
}

# 删除数据
POST edata_v2/_delete_by_query
{
  "query":{
    "term":{
      "_id":"50xCnIABMMHQlQjzIX9U"
    }
  }
}


# 创建别名
POST _alias/d
{
  "actions":
    { "add": {  
            "alias": "edata",  
            "index": "edata_v2"  
   }} 
}


远程复制数据
在src的es索引中配置target的白名单,

reindex.remote.whitelist: ["10.101.3.180:9200","10.101.3.181:9200","10.101.3.182:9200"]

在target的elasticsearch.yml中配置

reindex.remote.whitelist: ["10.101.3.110:9200","10.101.3.111:9200","10.101.3.112:9200"]
POST _reindex
{
  "source":{"index":"edata_new","size":5000},
  "dest":{"index":"edata_v5"}
}

POST _reindex
 {     
     "source": {         
     "remote": {             
        "host": "http://10.101.3.110:9200"
        },         
         "index": "edata"
     },     
     "dest": {  "index": "edata"
     }
 }

6 springboot elasticsearch 集群配置

spring:
  elasticsearch:
    rest:
      uris: http://10.101.3.180:9200,http://10.101.3.181:9200,http://10.101.3.182:9200
#      username: elastic
#      password: '123456'
      connection-timeout: 10000
      read-timeout: 10000
nohup java -jar bdo-server.jar  > bdo1.out 2>&1 &

7 安装redis

vi /etc/sysctl.conf
# 添加下面的配置
vm.overcommit_memory = 1
# 查看配置
sysctl -p

# 安装redis
yum install -y epel-release && sleep 3 && yum install -y redis && systemctl enable --now redis
# 查看redis状态
systemctl status redis
# 开机启动
systemctl enable redis.service
# 配置启动用户
chattr -i /etc/gshadow
chattr -i /etc/shadow
chattr -i /etc/group
chattr -i /etc/passwd

groupadd redis
useradd -g redis redis
passwd redis
# 密码
chattr +i /etc/gshadow
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/passwd
chown -R redis:redis /var/lib/redis

chown -R root:root /var/lib/redis

vi /etc/systemd/system/redis.service.d/limit.conf
User=root 
Group=root

# 执行下面的语句生效
systemctl daemon-reload

# 启动redis 
systemctl start redis

# 配置持久化

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

warrah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值