• 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日志也没有任何错误日志。非常奇怪!!!!!!
    不过目前没有影响到基本使用,后续我先在公司的环境再搭建一套,再监控具体服务看看。

  • 相关阅读:
    case when then 中判断null的方法
    在SELECT的时候,加入一列固定值
    拿到iframe页面里面的变量及元素的方法
    datatables 多一列报错Cannot read property 'sWidth' of undefined(…)/少一列报错Cannot read property 'style' of undefined(…)
    MySQL 显示表字段及注释等信息
    MYSQL escape用法--转义
    MyBatis insert操作返回主键
    Java关键字final、static使用总结
    数据库往表中插入数据报错
    洛谷 题解 P1287 【盒子与球】
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/14854415.html
Copyright © 2020-2023  润新知