Skywalking+Nacos实现高可用集群和动态配置
Posted 秋风飒飒吹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Skywalking+Nacos实现高可用集群和动态配置相关的知识,希望对你有一定的参考价值。
环境介绍
下面是架构图:
软件版本信息:
- 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使用
ES环境搭建
可参考:https://www.cnblogs.com/wwjj4811/p/13054685.html
skywalking安装
三台机器都需要执行:
cd /opt
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
动态配置
可以配置的配置文件如下:
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
点击发布:
发布成功后,注意三台机器skywalking-oap-server.log
的日志信息,控制台打印了配置的变化,这里就达到了不重启Skywalking而动态刷新配置的效果。
一个小问题
三个skywalking oap服务都注册到了nacos中,服务名称都为SkyWalking_OAP_Cluster
,按道理来说有三个实例,可以nacos注册中心一直只有一个实例,有点奇怪,目前找不到原因。
而且三台nacos,每一台的服务信息一模一样,都只有同一个实例。
三台机器的skywalking日志也没有任何错误日志。非常奇怪!!!!!!
不过目前没有影响到基本使用,后续我先在公司的环境再搭建一套,再监控具体服务看看。
以上是关于Skywalking+Nacos实现高可用集群和动态配置的主要内容,如果未能解决你的问题,请参考以下文章