# 云原生服务环境搭建

# 1、环境准备

  • 系统信息 安装产品的基本环境信息。
名称 说明
操作系统 CentOS Linux release 7.9.2009
系统架构 x86_64
安装模式 最小化模式安装。
  • 相关软件 相关软件如下所示。
软件 说明
EOS8介质1 EOS_Platform_8.2LA2_Private_Medium_Service.tar.gz
JDK jdk-8u162-linux-x64.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

# 2、安装介质介绍

  • 介质说明 EOS_Platform_8.2LA2_Private_Medium_Service.tar.gz介质包含中间件应用,目的在于搭建日志中心,应用程序性能监视中心,断路器,具体内容如下:
名称 说明
skywalking 应用程序性能监视工具
ELK 日志中心,包含elasticsearch,logstash,kafka,zookeeper等相关应用
turbine 断路器

# 3、环境搭建

# 安装Elasticsearch

  • Elasticsearch简介 Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:

    • 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
    • 实时分析的分布式搜索引擎。
    • 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据
  • Elasticsearch安装

    • 安装jdk jdk安装请参考linux环境搭建

    • 修改系统配置(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
      
    • 上传安装包至/home/es目录下并解压到指定目录

      tar -zxvf EOS_Platform_8.2LA2_Private_Medium_Service.tar.gz -C /home/es/eos8
      

      解压后目录结构如下: ml

    • 修改Elasticsearch配置文件 文件路径{安装位置}/elk/elasticsearch/config/elasticsearch.yml,有172.50开头的ip地址,改成部署当前服务器IP地址,本文档IP地址为 {安装机器IP}

      # 修改es的ip地址
      network.host={安装机器IP}
      
      

      修改 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/_template/eos-classic-log' -d @eos-classic-log-template.json
      curl -H "Content-Type:application/json" -XPUT 'http://{安装机器IP}:9200/_template/eos-dap-app-log' -d @eos-dap-app-log-template.json
      curl -H "Content-Type:application/json" -XPUT 'http://{安装机器IP}:9200/_template/eos-dap-trace-log' -d @eos-dap-trace-log-template.json
      curl -H "Content-Type:application/json" -XPUT 'http://{安装机器IP}:9200/_template/eos-wf-log' -d @eos-wf-log-template.json
      # ES删除已经建立的数据和索引
      curl -H "Content-Type:application/json" -XDELETE 'http://{安装机器IP}:9200/eos*'
      
    • 验证安装 访问ES es常用命令 http://{安装机器IP}:9200/_cat/health 检查ES数据库的索引状态(百分比) http://{安装机器IP}:9200/_cat/indices 查看ES数据库的索引列表(green可用,yellow正在创建,red不可用)。

# 安装zookeeper

  • 安装zookeeper zookeeper安装文件安装介质包中已包含,路径为elk/zookeeper zk
    • 修改配置(自行定义) zf

# 安装kafka

  • 安装kafka kafka路径 {安装位置}/elk/kafka

    # 编辑server.properties文件
    {安装位置}/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 文件路径 {安装位置}/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"
      }
    
    

# 安装turbine

  • 安装turbine 安装文件路径 {解压位置}/turbine,修改{解压位置}/turbine/config/application.properties,bootstrap.properties

    #文件路径 {解压位置}/turbine/config/application.properties
    # 修改zookeeper地址
    spring.cloud.zookeeper.connect-string={安装机器IP}:2181
    
    

    修改bootstrap.properties

    # 编辑bootstrap.properties文件
    {安装位置}/turbine/config/bootstrap.properties
    #将ip修改为nacos所在服务器ip,本示例中nacos的IP地址为172.50.1.203
    spring.cloud.nacos.discovery.enabled=true
    spring.cloud.nacos.discovery.server-addr={安装机器IP}:8848
    spring.cloud.nacos.config.server-addr={安装机器IP}:8848
    

# 安装skywalking

  • 安装apache-skywalking-apm 安装路径 {安装位置}/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,workpace,gateway 配置说明,以afcenter 为例说明,其他应用配置同理,skywalking客户端路径为/opt/idc/apps/eos-8.2-app/skywalking-agent(本例中位于另外一台服务器,和Afcenter在同一介质中),采集应用调用信息按如下步骤

    1. 配置skywalking-apm客户端信息,文件路径(/opt/idc/apps/eos-8.2-app/skywalking-agent/config/agent.config)

      collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:{skywalking服务端所在服务器IP}:11800}
      
    2. 在应用启动时增加 -apm 参数(本文中地址为/opt/idc/apps/eos-8.2-app/server/afcenter/bin/)

      # 启动是增加 -apm参数
      ./startup.sh -apm
      

    应用启动后apache-skywalking-apm会收集应用的调用信息

# 安装filebeat

  • filebeat 配置启动 filebeat安装介质是在EOS_Platform_8.2LA2_Private_Medium_Application.tar中,即和Afcenter在同一安装包下,本例中 afcenter应用安装在 {安装机器IP} 机器上,fielbeat安装路径为 /opt/idc/apps/eos-8.2-app/filebeat

    # 启动filebeat
    nohup./filebeat-e -c eos-filebeat.yml >/dev/null 2>&1 & 
    

# 4、安装验证

  • 启动说明

    启动顺序说明:先启动elasticsearch所在服务的应用,启动方式:应用根目录下利用startup.sh启动,在启动Afcenter应用所在服务器,同样采用根目录下start.sh脚本启动整体应用(启动脚本不包含filebeat启动),启动完毕后启动filebear应用

  • governor配置 governor 登录端口 31198,用sysadmin/000000登录governor,右上角点击管理平台,可见下图: gov

    • 平台管理->平台服务 配置以下信息 配置中心 http://{安装机器IP}:8848/nacos 注册中心 http://{安装机器IP}:8848/nacos 日志中心 http://{安装机器IP}:9200 断路器 http://{安装机器IP}:8000/ 应用监控 http://{安装机器IP}:12800/graphql
    • 点击域管理->建立域 域
    • 点击系统管理->建立系统 系统
  • 验证 点击网关->日志 日志 点击监控->应用运行时 监控 点击监控->业务链路 链路

上次更新: 2023/3/20下午4:08:04