Skywalking 搭建 nacos 注册中心及mysql 存储的集群架构

本文为博主原创,未经允许不得转载

  Skywalking 集群是将skywalking oap作为一个服务注册到nacos上,只要skywalking oap服务没有全部宕机,保证有一个skywalking oap在运行,就能进行跟踪。

  Skywalking 集群搭建支持多种注册中心,如常用的 nacos, zookeeper ,etcd 等,并支持多种数据存储方式,如 Elasticsearch6, Elasticsearch7,mysql, h2 内存等等。

  在本地调试过程中,选择搭建一个 nacos 做注册中心,mysql 做数据存储的 skywalking 集群搭建。搭建 skywalking 集群至少一个 nacos,两个 skywalking oap 服务,1 个ui界面。其搭建过程如下:

1. 修改 config/application.yml 文件,使用nacos 做注册中心,并配置 mysql 数据库存储

  修改后的主要配置如下:

cluster:
  selector: ${SW_CLUSTER:nacos}
  nacos:
    serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
    hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:112.125.26.68:8848}
    # Nacos Configuration namespace
    namespace: ${SW_CLUSTER_NACOS_NAMESPACE:"public"}
    # Nacos auth username
    username: ${SW_CLUSTER_NACOS_USERNAME:""}
    password: ${SW_CLUSTER_NACOS_PASSWORD:""}
    # Nacos auth accessKey
    accessKey: ${SW_CLUSTER_NACOS_ACCESSKEY:""}
    secretKey: ${SW_CLUSTER_NACOS_SECRETKEY:""}

core:
  selector: ${SW_CORE:default}
  default:
    restHost: ${SW_CORE_REST_HOST:112.125.26.68}
    restPort: ${SW_CORE_REST_PORT:12800}
    gRPCHost: ${SW_CORE_GRPC_HOST:112.125.26.68}
    gRPCPort: ${SW_CORE_GRPC_PORT:11800}
  
storage:
  selector: ${SW_STORAGE:mysql}
  mysql:
    properties:
      jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://112.125.26.68:3306/swtest"}
      dataSource.user: ${SW_DATA_SOURCE_USER:root}
      dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root}
      dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}
      dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}
      dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
      dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}

  其中需要注意的是,需要将core 配置中的restHost与gRPCHost 修改为本地的ip,默认配置的ip为 0.0.0.0,但如果不修改该ip的话,会导致多个skywalking 注册到nacos 上时,从nacos 管理台界面查看只出现一个skywalking 注册成功。

  数据存储若选择使用mysql 时,只需要提前创建好数据库名称就可以,skywalking 启动时,会自动创建需要的所有数据库表。

  当数据存储使用mysql 时,需要手动将mysql 的连接jar 包放到 oap-libs 目录中,若选择ES 日志存储时,则不需要其余的jar 。

2. 配置ui服务webapp.yml文件的listOfServers,写两个地址

server:
  port: 8080

collector:
  path: /graphql
  ribbon:
    ReadTimeout: 10000
    listOfServers: 112.125.26.68:12800,112.125.26.69:12800

  

3. 启动服务指定 skywalking 的 collector 服务和端口

-javaagent:D:\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar
-Dskywalking.agent.service_name=consumer
-Dskywalking.collector.backend_service=112.125.26.68:11800,112.125.26.69:11800

#解释一下上面这三个参数的意思
#
-javaagent:填的是skywalking-agent.jar的本地磁盘的路径
#
-Dskywalking.agent.service_name:在skywalking上显示的服务名
#
-Dskywalking.collector.backend_service:skywalking的collector服务的IP及端口

 

posted @ 2021-11-21 22:32  香吧香  阅读(2940)  评论(0编辑  收藏  举报