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日志也沒有任何錯誤日志。非常奇怪!!!!!!
不過目前沒有影響到基本使用,后續我先在公司的環境再搭建一套,再監控具體服務看看。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM