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 -9
cat $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
上一次登录:二 10月 18 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
# 配置持久化