# 云原生服务环境搭建
# 1、环境准备
- 系统信息
名称 | 说明 |
---|---|
操作系统 | CentOS Linux release 7.9.2009 |
系统架构 | x86_64 |
安装模式 | 最小化模式安装 |
- 相关软件
软件 | 说明 |
---|---|
8.3.1介质1 | EOS_Platform_8.3.1_Private_Medium_Service.tar.gz |
JDK | jdk-8u162-linux-x64.tar.gz |
JDK | jdk-17-linux-x64-bin.tar.gz |
- 安装准备工作
- 确保所有被安装服务器时区和时间一致,时间不一致会影响Elasticsearch和Skywalking等信息无法采集的情况出现。
- 在各个服务器上安装时间同步命令工具:yum install ntp -y
- 使用 ntpdate 命令,从时间服务器上进行同步,例如:ntpdate cn.pool.ntp.org
- 确保 Selinux 调整为 disabled 或者 permissive。修改 /etc/selinux/config 文件需要重新启动主机。
- 确保防火墙被关闭。
- 停止防火墙 systemctl stop firewalld
- 主机启动时禁用防火墙 systemctl disable firewalld
- 确保所有被安装服务器时区和时间一致,时间不一致会影响Elasticsearch和Skywalking等信息无法采集的情况出现。
# 2、安装介质介绍
- EOS_Platform_8.3.1_Private_Medium_Service.tar.gz介质包含中间件应用,目的在于搭建日志中心及应用程序性能监视中心,具体内容如下:
名称 | 说明 | jdk环境 |
---|---|---|
skywalking | 应用程序性能监视工具 | skywalking-apm请部署在jdk17环境下 |
ELK | 日志中心,包含elasticsearch,logstash,kafka,zookeeper等相关应用 | elasticsearch请部署在jdk17环境下,logstash请部署在jdk17环境下,kafka请部署在jdk8环境下,zookeeper请部署在jdk8环境下 |
注:elasticsearch和logstash介质中自带jdk17,启动时会自动加载自带的jdk17,使用自带的jdk需添加权限:
chowm -R 用户:组 /目录:
如: chown -R es:es /home/es/elk(先将目录权限给指定用户)
chmod -R 755 /目录:
如: chmod -R 755 /home/es/elk(再给目录读写权限)
# 3、环境搭建
# 安装Elasticsearch
Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎。当然Elasticsearch并不仅仅是Lucene那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:
- 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
- 实时分析的分布式搜索引擎。
- 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。
Elasticsearch安装:请部署在jdk17环境下,Elasticsearch介质中带有jdk17,启动时会自动加载自带的jdk17
修改系统配置(root用户执行以下命令) 修改/etc/security/limits.conf文件 增加配置
vi /etc/security/limits.conf #在文件最后,增加如下配置: * soft nofile 65536 * hard nofile 65536 # 执行以下命令加载配置文件 sysctl --system #在/etc/sysctl.conf文件最后添加一行 vm.max_map_count=655360 添加完毕之后,执行命令: sysctl -p vi /etc/sysctl.conf vm.max_map_count=655360 sysctl -p
先新建一个用户(出于安全考虑,elasticsearch默认不允许以root账号运行)
# 创建组 groupadd es # 创建用户 useradd -m -g es es # 设置密码 passwd es # 切换es用户 su es
上传安装包至/home/es目录下并解压到指定目录 tar -zxvf EOS_Platform_8.3.1_Private_Medium_Service.tar.gz -C /home/es/eos8
解压后目录结构如下:
修改Elasticsearch配置文件 文件路径{安装位置}/elk/elasticsearch/config/elasticsearch.yml,修改network.host的值为{安装机器IP}
# 修改es的ip地址 network.host={安装机器IP}
在/elk/elasticsearch/config/jvm.options文件,修改elasticsearch的JVM参数,默认为8g,根据自己机器配置,建议至少8G,否则可能导致无法启动。
-Xms10g -Xmx10g
启动Elasticsearch
# 进入bin目录 cd {安装位置}/elk/elasticsearch/bin # 启动Elasticsearch ./startup.sh #ES日志需要有模板,通过命令可以加载,模板文件在elasticsearch/template 文件夹中 cd {安装位置}/elk/elasticsearch/template curl -H "Content-Type:application/json" -XPUT 'http://{安装机器IP}:9200/_index_template/eos-classic-log' -d @eos-classic-log-template.json curl -H "Content-Type:application/json" -XPUT 'http://{安装机器IP}:9200/_index_template/eos-dap-app-log' -d @eos-dap-app-log-template.json curl -H "Content-Type:application/json" -XPUT 'http://{安装机器IP}:9200/_index_template/eos-dap-trace-log' -d @eos-dap-trace-log-template.json curl -H "Content-Type:application/json" -XPUT 'http://{安装机器IP}:9200/_index_template/eos-wf-log' -d @eos-wf-log-template.json
验证安装
es常用命令 http://{安装机器IP}:9200/_cat/health 检查ES数据库的索引状态(百分比) http://{安装机器IP}:9200/_cat/indices 查看ES数据库的索引列表(green可用,yellow正在创建,red不可用)。
# 安装zookeeper
安装zookeeper:请部署在jdk8环境下
zookeeper安装文件安装介质包中已包含,路径为elk/zookeeper
修改配置(配置文件路径:zookeeper/conf/zoo.cfg)
启动zookeeper 进入zookeeper/bin目录,执行以下命令 ./zkServer.sh start
查看zookeeper是否启动成功 ./zkServer.sh status
./zkServer.sh status ZooKeeper JMX enabled by default Using config: /opt/primeton/elk4eos/elk/zookeeper/bin/../conf/zoo.cfg Mode: standalone
# 安装kafka
安装kafka:请部署在jdk8环境下
路径 {安装位置}/elk/kafka
# 编辑{安装位置}/elk/kafka/config/server.properties文件 # 修改server.properties文件中以下内容,配置kafka监听端口及ip地址 listeners=PLAINTEXT://{安装机器IP}:9092 advertised.listeners=PLAINTEXT://{安装机器IP}:9092 # 修改zookeeper地址 zookeeper.connect=127.0.0.1:2181/kafka #修改日志文件路径 log.dirs=/tmp/kafka-logs
启动kafka
#进入kafka/bin目录,执行以下命令 ./startup.sh # 初始化 ./kafka-topics.sh --create --zookeeper 127.0.0.1:2181/kafka --replication-factor 1 --partitions 1 --topic eos-log #如果报already exists,执行删除 ./kafka-topics.sh --delete --zookeeper 127.0.0.1:2181/kafka --topic eos-log
验证 ./kafka-topics.sh --zookeeper 127.0.0.1:2181/kafka --list
# 安装logstash
- 安装logstash:请部署在jdk17环境下,logstash介质中带有jdk17,启动时会自动加载自带的jdk17
文件路径 {安装位置}/elk/logstash logstash从kafka中获取日志数据,经过处理后发送至elastisearch中,所以需要在此处配置kafka和elasticsearch的地址。
# 修改以下文件
logstash/config/eos-logstash.conf
# 修改kafka地址
input {
kafka {
bootstrap_servers => ["{安装机器IP}:9092"]
topics_pattern => "eos-.*"
group_id => "eos-logstash"
client_id => "eos-logstash"
auto_offset_reset => "earliest"
codec => json {
charset => "UTF-8"
}
consumer_threads => 3
decorate_events => true
}
}
# 修改elasticsearch地址
output {
elasticsearch {
hosts => ["{安装机器IP}:9200"]
index => "%{[fields][eos-log-type]}-%{+YYYY.MM.dd}"
document_type => "log"
}
- 启动logstash 进入logstash/bin目录,执行以下命令 ./startup.sh
注:如果启动报:No configuration found in the configured sources. 可将startup.sh中的nohup sh logstash -f ../config/eos-logstash.conf >> ../logs/out.log 2>&1 & 改为:nohup sh logstash -f {logstash安装路径}/config/eos-logstash.conf >> ../logs/out.log 2>&1 &
- 查看logstash是否启动成功 ps -ef|grep logstash
# 安装skywalking
安装skywalking:请部署在jdk17环境下,可在启动脚本中指定jdk17(如:export JAVA_HOME=/home/jdk17 export PATH=$JAVA_HOME/bin:$PATH)
安装路径 {安装位置}/skywalking 修改 {安装位置}/skywalking/config/application.yml
# 编辑 application.yml文件 {安装位置}/skywalking/config/application.yml # 修改elasticsearch地址,改成本机器IP地址 elasticsearch: nameSpace: ${SW_NAMESPACE:"CollectorDBCluster"} clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:{安装机器IP}:9200} indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2} indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
重点说明:
apache-skywalking-apm 利用java agent技术,实现不侵入业务系统,从而达到对应用系统调用链的跟踪和监控。 afcenter、bps、gateway应用都需要配置,以afcenter为例说明,其他应用配置同理, skywalking客户端路径为/opt/primeton/apps/eos-app/skywalking-agent(本例中位于另外一台服务器,和Afcenter在同一介质中),采集应用调用信息按如下步骤
配置skywalking-apm客户端信息,文件路径(/opt/primeton/apps/eos-app/skywalking-agent/config/agent.config)
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:{skywalking服务端所在服务器IP}:11800}
在应用启动时增加-apm参数(本文中地址为/opt/primeton/apps/eos-app/server/afcenter/bin/),应用启动后apache-skywalking-apm会收集应用的调用信息
# 启动是增加 -apm参数 ./startup.sh -apm
# 安装filebeat
filebeat:
filebeat 配置启动 filebeat安装介质是在EOS_Platform_8.3.1_Private_Medium_Application.tar.gz中,即和Afcenter在同一安装包下,fielbeat安装路径为 /opt/primeton/apps/eos-app/filebeat
编辑eos-filebeat.yml文件,文件路径:/opt/primeton/apps/eos-app/filebeat/eos-filebeat.yml
input:请根据实际路径修改日志路径 output: enabled: true hosts: ["{安装kafka机器IP}:9092"]
# 启动filebeat nohup ./filebeat -e -c eos-filebeat.yml >/dev/null 2>&1 &
# 4、安装验证
- 启动说明 启动顺序说明:先启动elasticsearch,启动方式:应用根目录下执行startup.sh启动,再启动Afcenter应用所在服务器,同样采用根目录下start.sh脚本启动整体应用(启动脚本不包含filebeat启动),启动完毕后启动filebear应用
- governor配置:
注:governor不支持jdk17
登录governor:http://{governor所在机器IP}:29898/ ,账户:sysadmin/000000
点击governor右上角管理平台->平台配置->平台服务 配置以下信息
配置中心 http://{安装机器IP}:8848/nacos 注册中心 http://{安装机器IP}:8848/nacos 日志中心 http://{安装机器IP}:9200 应用监控 http://{安装机器IP}:12800/graphql
注意:nacos需开启安全认证,请参考:https://nacos.io/en-us/docs/auth.html
开启鉴权后,注册到nacos的应用的application-nacos.properties里需要增加nacos用户名密码的配置。
以AFCenter为例,在%EOS8.3.1安装目录%\server\afcenter\config\application-nacos.properties中增加配置:
spring.cloud.nacos.discovery.username=yourname spring.cloud.nacos.discovery.password=yourpwd
点击域管理->建立域
点击系统管理->建立系统
- 验证 点击网关->日志 点击监控->应用运行时 点击监控->业务链路