##(ELK7.9.0生产部署 elasticsearch7.9)

1. 软件下载

百度网盘下载,官方下载太慢了
链接: https://pan.baidu.com/s/1LGFJnIYghJDLAh1TWaKjJg
提取码: ca3b
包含:elasticsearch、kibana、logstash、filebeat、ik、jdk13
如果资源失效请告知我,谢谢,tel/wx:15000227329

2. 系统环境配置

# 内网环境:直接关闭防火墙,减少防火墙规则的维护工作
systemctl stop firewalld
systemctl disable firewalld
# 关闭SElinux安全模组,临时生效
setenforce 0
# 永久生效
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
# 临时生效
swapoff -a
ulimit -n 655360
ulimit -u 40960


s1=`grep -o "DefaultLimitMEMLOCK=infinity" /etc/systemd/system.conf |wc -l`
if [ $s1 -eq 0 ] ; then
cat >> /etc/systemd/system.conf << EOF

# 开启内存锁定设定
DefaultLimitNOFILE=655360
DefaultLimitNPROC=32000
DefaultLimitMEMLOCK=infinity
EOF
fi
echo "=============   交换区缓存关闭  ==================="
s2=`grep -o "vm.max_map_count=262144" /etc/sysctl.conf |wc -l`
if [ $s2 -eq 0 ] ; then
cat >> /etc/sysctl.conf << EOF

fs.file-max=655360
vm.max_map_count=262144
# 生产部建议设置成0,0是达到临界点,会触发OMM宕机,设置成1,不会宕机,使用最小交换区继续工作,有利于集群安全、稳定
vm.swappiness=1
EOF
fi
source /etc/profile
# 解锁文件限制,655360这里我设置的比较大,65536也可以启动,
当数据量足够大的时候,就会报错,我每小时近100GB的流量,设置大点比较安全
s3=`grep -o "hard memlock unlimited" /etc/security/limits.conf |wc -l`
if [ $s3 -eq 0 ] ; then
cat >> /etc/security/limits.conf << EOF
*  soft  nofile  655360
*  hard  nofile  655360
*  soft  nproc   40960
*  hard  nproc   40960
*  hard memlock unlimited
*  soft memlock unlimited
EOF
fi

sysctl -w vm.max_map_count=262144
sysctl -p

正常情况,系统参数设置完这些就足够了

3. es节点配置

3.1 master 节点配置


# 集群名称
cluster.name: sys-log

# 节点名称,要唯一
node.name: es-node-1

# 单一角色配置 master
node.master: true
node.data: false
node.ingest: false

# 服务端口号
http.port: 9200
# 集群通信端口
transport.port: 9300
# 数据存放目录
path.data: /data/node
# 日志存放位置
path.logs: /data/logs

# es绑定的ip地址,根据自己机器ip进行修改
network.host: 192.168.1.1

# 启动初始化,有很多帖子说这里要配置成当前主机,后果是通过初始化多台主机,会让他们形成多个es集群而不是组成一个。
正确的配置:候选节点数组,初始化时就只有一个集群了
cluster.initial_master_nodes: ["es-node-1","es-node-2","es-node-3","es-node-4"]

discovery.seed_hosts: ["192.168.1.1","192.168.1.2","192.168.1.3","192.168.1.4"]

# 生产必须为true,内存锁定检查,目的是内存地址直接映射,减少一次copy时间
bootstrap.memory_lock: true
# 系统过滤检查,防止数据损坏,考虑集群安全,生产设置成false
bootstrap.system_call_filter: false

# 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
#discovery.zen.minimum_master_nodes: 2
#discovery.zen.fd.ping_timeout: 1m
#discovery.zen.fd.ping_retries: 5

# 自动创建内置安全账户索引,后续做监控,配置下
action.destructive_requires_name: true
action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
xpack.monitoring.enabled: true
xpack.graph.enabled: false
xpack.watcher.enabled: false
xpack.ml.enabled: false


# 是否支持跨域
http.cors.enabled: true
# * 表示支持所有域名
http.cors.allow-origin: "*"

# 集群身份认证与用户鉴权
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true

# 集群内部安全通信-节点CA认证
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

3.2 data 节点配置


# 集群名称
cluster.name: sys-log

# 节点名称,要唯一
node.name: es-node-2

# 单一角色配置 master
node.master: false
node.data: true
node.ingest: false

# 服务端口号
http.port: 9200
# 集群通信端口
transport.port: 9300
# 数据存放目录
path.data: /data/node
# 日志存放位置
path.logs: /data/logs

# es绑定的ip地址,根据自己机器ip进行修改
network.host: 192.168.1.2

# 启动初始化,有很多帖子说这里要配置成当前主机,后果是通过初始化多台主机,会让他们形成多个es集群而不是组成一个。
正确的配置:候选节点数组,初始化时就只有一个集群了
cluster.initial_master_nodes: ["es-node-1","es-node-2","es-node-3","es-node-4"]

discovery.seed_hosts: ["192.168.1.1","192.168.1.2","192.168.1.3","192.168.1.4"]

# 生产必须为true,内存锁定检查,目的是内存地址直接映射,减少一次copy时间
bootstrap.memory_lock: true
# 系统过滤检查,防止数据损坏,考虑集群安全,生产设置成false
bootstrap.system_call_filter: false

# 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
#discovery.zen.minimum_master_nodes: 2
#discovery.zen.fd.ping_timeout: 1m
#discovery.zen.fd.ping_retries: 5

# 自动创建内置安全账户索引,后续做监控,配置下
action.destructive_requires_name: true
action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
xpack.monitoring.enabled: true
xpack.graph.enabled: false
xpack.watcher.enabled: false
xpack.ml.enabled: false


# 是否支持跨域
http.cors.enabled: true
# * 表示支持所有域名
http.cors.allow-origin: "*"

# 集群身份认证与用户鉴权
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true

# 集群内部安全通信-节点CA认证
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

3.3. ingest节点配置


# 集群名称
cluster.name: sys-log

# 节点名称,要唯一
node.name: es-node-3

# 单一角色配置 master
node.master: false
node.data: false
node.ingest: true

# 服务端口号
http.port: 9200
# 集群通信端口
transport.port: 9300
# 数据存放目录
path.data: /data/node
# 日志存放位置
path.logs: /data/logs

# es绑定的ip地址,根据自己机器ip进行修改
network.host: 192.168.1.3

# 启动初始化,有很多帖子说这里要配置成当前主机,后果是通过初始化多台主机,会让他们形成多个es集群而不是组成一个。
正确的配置:候选节点数组,初始化时就只有一个集群了
cluster.initial_master_nodes: ["es-node-1","es-node-2","es-node-3","es-node-4"]

discovery.seed_hosts: ["192.168.1.1","192.168.1.2","192.168.1.3","192.168.1.4"]

# 生产必须为true,内存锁定检查,目的是内存地址直接映射,减少一次copy时间
bootstrap.memory_lock: true
# 系统过滤检查,防止数据损坏,考虑集群安全,生产设置成false
bootstrap.system_call_filter: false

# 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
#discovery.zen.minimum_master_nodes: 2
#discovery.zen.fd.ping_timeout: 1m
#discovery.zen.fd.ping_retries: 5

# 自动创建内置安全账户索引,后续做监控,配置下
action.destructive_requires_name: true
action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
xpack.monitoring.enabled: true
xpack.graph.enabled: false
xpack.watcher.enabled: false
xpack.ml.enabled: false


# 是否支持跨域
http.cors.enabled: true
# * 表示支持所有域名
http.cors.allow-origin: "*"

# 集群身份认证与用户鉴权
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true

# 集群内部安全通信-节点CA认证
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

3.4. coordinator节点配置


# 集群名称
cluster.name: sys-log

# 节点名称,要唯一
node.name: es-node-5

node.master: false
node.data: false
node.ingest: false

# 服务端口号
http.port: 9200
# 集群通信端口
transport.port: 9300

path.data: /data/node
# 日志存放位置
path.logs: /data/logs

# es绑定的ip地址,根据自己机器ip进行修改
network.host: 192.168.1.5

# 启动初始化,当前主机
cluster.initial_master_nodes: ["es-node-1","es-node-2","es-node-3","es-node-4"]
discovery.seed_hosts: ["192.168.1.1","192.168.1.2","192.168.1.3"]

# 生产必须,内存锁定检查
bootstrap.memory_lock: true
# 系统过滤检查,防止数据损坏
bootstrap.system_call_filter: false

# 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
#discovery.zen.minimum_master_nodes: 2
#discovery.zen.fd.ping_timeout: 1m
#discovery.zen.fd.ping_retries: 5
# 自动创建内置安全账户索引
action.destructive_requires_name: true
action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
xpack.monitoring.enabled: true
xpack.graph.enabled: false
xpack.watcher.enabled: false
xpack.ml.enabled: false

# 是否支持跨域
http.cors.enabled: true
# * 表示支持所有域名
http.cors.allow-origin: "*"

# 集群身份认证与用户鉴权
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true

# 集群内部安全通信-节点CA认证
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

3.5. data+ingest节点配置

# 集群名称
cluster.name: sys-log

# 节点名称,要唯一
node.name: es-node-4

node.master: false
node.data: true
node.ingest: true

# 服务端口号
http.port: 9200
# 集群通信端口
transport.port: 9300

path.data: /data/node
# 日志存放位置
path.logs: /data/logs

# es绑定的ip地址,根据自己机器ip进行修改
network.host: 192.168.1.4

# 启动初始化,当前主机
cluster.initial_master_nodes: ["es-node-1","es-node-2","es-node-3","es-node-4"]
discovery.seed_hosts: ["192.168.1.1","192.168.1.2","192.168.1.3"]

# 生产必须,内存锁定检查
bootstrap.memory_lock: true
# 系统过滤检查,防止数据损坏
bootstrap.system_call_filter: false

# 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
#discovery.zen.minimum_master_nodes: 2
#discovery.zen.fd.ping_timeout: 1m
#discovery.zen.fd.ping_retries: 5
# 自动创建内置安全账户索引
action.destructive_requires_name: true
action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
xpack.monitoring.enabled: true
xpack.graph.enabled: false
xpack.watcher.enabled: false
xpack.ml.enabled: false


# 是否支持跨域
http.cors.enabled: true
# * 表示支持所有域名
http.cors.allow-origin: "*"


# 集群身份认证与用户鉴权
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true

# 集群内部安全通信-节点CA认证
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

3.6. master + data + ingest 节点配置

# 官方默认角色
# 集群名称
cluster.name: sys-log

# 节点名称,要唯一
node.name: es-node-6

node.master: true
node.data: true

# 服务端口号
http.port: 9200
# 集群通信端口
transport.port: 9300

path.data: /data/node
# 日志存放位置
path.logs: /data/logs

# es绑定的ip地址,根据自己机器ip进行修改
network.host: 192.168.1.6

# 启动初始化,当前主机
cluster.initial_master_nodes: ["es-node-1","es-node-2","es-node-3","es-node-4"]
discovery.seed_hosts: ["192.168.1.1","192.168.1.2","192.168.1.3"]

# 生产必须,内存锁定检查
bootstrap.memory_lock: true
# 系统过滤检查,防止数据损坏
bootstrap.system_call_filter: false

# 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
#discovery.zen.minimum_master_nodes: 2
#discovery.zen.fd.ping_timeout: 1m
#discovery.zen.fd.ping_retries: 5
# 自动创建内置安全账户索引
action.destructive_requires_name: true
action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*
xpack.monitoring.enabled: true
xpack.graph.enabled: false
xpack.watcher.enabled: false
xpack.ml.enabled: false


# 是否支持跨域
http.cors.enabled: true
# * 表示支持所有域名
http.cors.allow-origin: "*"


# 集群身份认证与用户鉴权
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true

# 集群内部安全通信-节点CA认证
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12

4. CA证书生成并配置

先生成CA证书,并copy到es的config目录

 # 生成elastic-stack-ca.p12
bin/elasticsearch-certutil ca
# 生成elastic-certificates.p12
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

5. es集群内置账号初始化

es 集群,内置账号初始化

bin/elasticsearch-setup-passwords interactive
# 请记住初始化的用户名和密码
# es集群登录验证,es超级管理员elastic,能登录说明集群配置成功
http://192.168.1.1:9200/ ,这里换成您自己的ip

6. kibana配置

集成 kibana 配置

# 也可以使用kibana登录验证
vi /usr/local/server/kibana/config/kibana.yml
server.port: 80
server.host: "0.0.0.0"
server.name: "kibana"
# 这里可以配置多个
elasticsearch.hosts: ["http://192.168.1.1:9200"]
kibana.index: ".kibana"
kibana.defaultAppId: "home"
#中文显示
i18n.locale: "zh-CN"
# 初始化kibana用户名
elasticsearch.username: "kibana"
# 初始化密码,修改成自己的
elasticsearch.password: "123456"

# 启动kibana,/data/logs/这个目录必须存在
nohup /usr/local/server/kibana/bin/kibana --allow-root >/data/logs/log.log 2>&1 &

7. 增值服务一键部署-集群版

集群版一键部署

# 生产环境,一键部署脚本,已在上百台生产服务器上实现验证
产品功能:
1、一键部署N台服务器,不需要在服务器之间来回切换
2、支持单功能节点:master、data、ingest、coordinator 等独立部署,也支持混合角色master+data、data+ingest等节点的部署
3、随着时间的推移,您的服务器可能还会升级,还支持一键更新配置的服务
4、开机自动启动,解决服务器重启后,还需要手动启动服务的问题
5、纯shell脚本,大家都看得懂,改的动,学得会
6、数据初始化部分使用了expect,您还可以领略到人机自动交互的奥秘

[添加链接描述](https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.50111debY9ELVa&ft=t&id=621966415353)

https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.50111debY9ELVa&ft=t&id=621966415353

centos7 最小安装 ELK7.9.0 生产部署 elasticsearch7.9.0 + kibana7.9.0 一键部署-LMLPHP

8. 增值服务一键部署-单机版

新人激励,单机版一键部署,elasticsearch + kibana

# 纯shell脚本编写,都看得懂、学得会
https://item.taobao.com/item.htm?ft=t&id=614447877187

centos7 最小安装 ELK7.9.0 生产部署 elasticsearch7.9.0 + kibana7.9.0 一键部署-LMLPHP

08-29 17:29