本文為博主原創,未經允許不得轉載
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及端口