zoukankan      html  css  js  c++  java
  • Skywalking+Nacos实现高可用集群和动态配置

    环境介绍

    下面是架构图:

    image-20210605225117059

    软件版本信息:

    • nacos:1.3.0
    • skywalking:8.5.0
    • elastcisearch:7.7.1

    nacos+keepalived+haproxy高可用集群搭建

    可参考:https://www.cnblogs.com/wwjj4811/p/14610307.html

    nacos安装完成后,创建出skywalking命名空间,供后续skywalking使用

    image-20210605230952916

    ES环境搭建

    可参考:https://www.cnblogs.com/wwjj4811/p/13054685.html

    skywalking安装

    三台机器都需要执行:

    cd /opt
    wget https://mirrors.bfsu.edu.cn/apache/skywalking/8.5.0/apache-skywalking-apm-es7-8.5.0.tar.gz
    tar -zxvf apache-skywalking-apm-es7-8.5.0.tar.gz
    

    配置oap

    修改配置(三台机器的skywalking配置文件都需要修改)

    vi /opt/apache-skywalking-apm-bin-es7/config/application.yml
    
    ## 主要修改了三处配置,因为文件太长,这里只贴出修改的部分
    
    cluster:
      selector: ${SW_CLUSTER:nacos}
      # 中间部分省略。。。
      nacos:
        serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
        hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:192.168.1.56:18848}
        # Nacos Configuration namespace
        namespace: ${SW_CLUSTER_NACOS_NAMESPACE:"skywalking"}
        # Nacos auth username
        username: ${SW_CLUSTER_NACOS_USERNAME:"nacos"}
        password: ${SW_CLUSTER_NACOS_PASSWORD:"nacos"}
        # Nacos auth accessKey
        accessKey: ${SW_CLUSTER_NACOS_ACCESSKEY:""}
        secretKey: ${SW_CLUSTER_NACOS_SECRETKEY:""}
        
    storage:
      selector: ${SW_STORAGE:elasticsearch7}
      elasticsearch7:
        nameSpace: ${SW_NAMESPACE:""}
        clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.1.43:9200}
        protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
        trustStorePath: ${SW_STORAGE_ES_SSL_JKS_PATH:""}
        trustStorePass: ${SW_STORAGE_ES_SSL_JKS_PASS:""}
        dayStep: ${SW_STORAGE_DAY_STEP:1} # Represent the number of days in the one minute/hour/day index.
    
        # 后面省略。。。。
        
    configuration:
      selector: ${SW_CONFIGURATION:nacos}
      none:
      # 中间部分省略。。。
      nacos:
        # Nacos Server Host
        serverAddr: ${SW_CONFIG_NACOS_SERVER_ADDR:192.168.1.56}
        # Nacos Server Port
        port: ${SW_CONFIG_NACOS_SERVER_PORT:18848}
        # 组信息
        group: ${SW_CONFIG_NACOS_SERVER_GROUP:skywalking}
        # nacos命名空间
        namespace: ${SW_CONFIG_NACOS_SERVER_NAMESPACE:skywalking}
        # Unit seconds, sync period. Default fetch every 60 seconds.
        period: ${SW_CONFIG_NACOS_PERIOD:60}
        # Nacos auth username
        username: ${SW_CONFIG_NACOS_USERNAME:""}
        password: ${SW_CONFIG_NACOS_PASSWORD:""}
        # Nacos auth accessKey
        accessKey: ${SW_CONFIG_NACOS_ACCESSKEY:""}
        secretKey: ${SW_CONFIG_NACOS_SECRETKEY:""}
    

    配置UI

    vi /opt/apache-skywalking-apm-bin-es7/webapp/webapp.yml
    
    #注释部分省略
    server:
      port: 8888
    
    collector:
      path: /graphql
      ribbon:
        ReadTimeout: 10000
        # Point to all backend's restHost:restPort, split by ,
        listOfServers: 192.168.1.53:12800,192.168.1.54:12800,192.168.1.55:12800
    

    启动skywalking

    其中一台执行:

    /opt/apache-skywalking-apm-bin-es7/bin/startup.sh
    

    另外两台执行:

    /opt/apache-skywalking-apm-bin-es7/bin/oapServiceNoInit.sh
    /opt/apache-skywalking-apm-bin-es7/bin/webappService.sh
    

    查看启动日志:

    tail -500f /opt/apache-skywalking-apm-bin-es7/logs/skywalking-oap-server.log
    tail -500f /opt/apache-skywalking-apm-bin-es7/logs/webapp.log
    

    image-20210606011704898

    动态配置

    可以配置的配置文件如下:

    image-20210605233505889

    agent-analyzer.default.uninstrumentedGateways

    configuration-discovery.default.agentConfigurations

    core.default.endpoint-name-grouping

    core.default.apdexThreshold

    agent-analyzer.default.slowDBAccessThreshold

    agent-analyzer.default.sampleRate

    alarm.default.alarm-settings

    此外:官网文档对这些配置做了详细解释:https://skywalking.apache.org/docs/main/v8.5.0/en/setup/backend/dynamic-config/

    我这里就不赘述了

    动态配置测试

    新建一个配置,在skywalking命名空间中:

    新建一个data-id叫做agent-analyzer.default.uninstrumentedGateways,group信息是skywalking,配置格式yaml

    配置内容:

    gateways:
      - name: proxy0
        instances:
          - host: 127.0.0.1 # the host/ip of this gateway instance
            port: 9099 # the port of this gateway instance, defaults to 80
    

    点击发布:

    image-20210606012526256

    发布成功后,注意三台机器skywalking-oap-server.log的日志信息,控制台打印了配置的变化,这里就达到了不重启Skywalking而动态刷新配置的效果。

    image-20210606012717812

    一个小问题

    三个skywalking oap服务都注册到了nacos中,服务名称都为SkyWalking_OAP_Cluster,按道理来说有三个实例,可以nacos注册中心一直只有一个实例,有点奇怪,目前找不到原因。

    image-20210606013529252

    而且三台nacos,每一台的服务信息一模一样,都只有同一个实例。

    三台机器的skywalking日志也没有任何错误日志。非常奇怪!!!!!!
    不过目前没有影响到基本使用,后续我先在公司的环境再搭建一套,再监控具体服务看看。

  • 相关阅读:
    Nginx 部署多个 web 项目(虚拟主机)
    Nginx 配置文件
    Linux 安装 nginx
    Linux 安装 tomcat
    Linux 安装 Mysql 5.7.23
    Linux 安装 jdk8
    Linux 安装 lrzsz,使用 rz、sz 上传下载文件
    springMVC 拦截器
    spring 事务
    基于Aspectj 注解实现 spring AOP
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/14854415.html
Copyright © 2011-2022 走看看