diff --git a/docker/oap/docker-entrypoint.sh b/docker/oap/docker-entrypoint.sh index 5f8fbb0fabc21bfc753ffc0cee16b7647b5b924a..06cca183038f3f30717e75224eab8ea060943a8a 100755 --- a/docker/oap/docker-entrypoint.sh +++ b/docker/oap/docker-entrypoint.sh @@ -77,6 +77,7 @@ generateClusterNacos() { cluster: nacos: serviceName: \${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"} + namespace: \${SW_CLUSTER_NACOS_NAMESPACE:""} hostPort: \${SW_CLUSTER_NACOS_HOST_PORT:nacos:8848} EOT } @@ -163,15 +164,17 @@ generateConfigurationNacos() { configuration: nacos: # Nacos Server Host - serverAddr: \${SW_CONFIGURATION_NACO_SERVER_ADDR:naco} + serverAddr: \${SW_CONFIGURATION_NACOS_SERVER_ADDR:nacos} # Nacos Server Port - port: \${SW_CONFIGURATION_NACO_PORT:8848} + port: \${SW_CONFIGURATION_NACOS_PORT:8848} # Nacos Configuration Group - group: \${SW_CONFIGURATION_NACO_GROUP:skywalking} + group: \${SW_CONFIGURATION_NACOS_GROUP:skywalking} + # Nacos Configuration namespace + namespace: \${SW_CONFIGURATION_NACOS_NAMESPACE:""} # Unit seconds, sync period. Default fetch every 60 seconds. - period : \${SW_CONFIGURATION_NACO_PERIOD:5} + period : \${SW_CONFIGURATION_NACOS_PERIOD:5} # the name of current cluster, set the name if you want to upstream system known. - clusterName: \${SW_CONFIGURATION_NACO_CLUSTER_NAME:default} + clusterName: \${SW_CONFIGURATION_NACOS_CLUSTER_NAME:default} EOT } diff --git a/docs/en/setup/backend/backend-cluster.md b/docs/en/setup/backend/backend-cluster.md index 0e7904f5423fd33c9fce3de52e334b18dba77a6e..9a58f56470ea764a9df5d39a6990ee4f4deb2d9f 100644 --- a/docs/en/setup/backend/backend-cluster.md +++ b/docs/en/setup/backend/backend-cluster.md @@ -106,6 +106,8 @@ cluster: serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"} # Nacos cluster nodes, example: 10.0.0.1:8848,10.0.0.2:8848,10.0.0.3:8848 hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:localhost:8848} + # Nacos Configuration namespace + namespace: ${SW_CLUSTER_NACOS_NAMESPACE:"public"} ``` ## Etcd diff --git a/docs/en/setup/backend/dynamic-config.md b/docs/en/setup/backend/dynamic-config.md index 0ddf1552c4ebb324b8f8fb7dc65f4870aa909494..bdf3f1be945f5dea6b52b6736b038d9f80c4b3b2 100755 --- a/docs/en/setup/backend/dynamic-config.md +++ b/docs/en/setup/backend/dynamic-config.md @@ -60,6 +60,8 @@ configuration: port: 8848 # Nacos Configuration Group group: 'skywalking' + # Nacos Configuration namespace + namespace: '' # Unit seconds, sync period. Default fetch every 60 seconds. period : 60 # the name of current cluster, set the name if you want to upstream system known. diff --git a/oap-server/server-cluster-plugin/cluster-nacos-plugin/src/main/java/org/apache/skywalking/oap/server/cluster/plugin/nacos/ClusterModuleNacosConfig.java b/oap-server/server-cluster-plugin/cluster-nacos-plugin/src/main/java/org/apache/skywalking/oap/server/cluster/plugin/nacos/ClusterModuleNacosConfig.java index 2b5590d856a22ed04fac4a59854d7a20f9d09e7b..d9f0746728917134d85028667e98550b05d5b068 100644 --- a/oap-server/server-cluster-plugin/cluster-nacos-plugin/src/main/java/org/apache/skywalking/oap/server/cluster/plugin/nacos/ClusterModuleNacosConfig.java +++ b/oap-server/server-cluster-plugin/cluster-nacos-plugin/src/main/java/org/apache/skywalking/oap/server/cluster/plugin/nacos/ClusterModuleNacosConfig.java @@ -28,4 +28,5 @@ import org.apache.skywalking.oap.server.library.module.ModuleConfig; public class ClusterModuleNacosConfig extends ModuleConfig { @Setter @Getter private String serviceName; @Setter @Getter private String hostPort; + @Setter @Getter private String namespace = "public"; } diff --git a/oap-server/server-cluster-plugin/cluster-nacos-plugin/src/main/java/org/apache/skywalking/oap/server/cluster/plugin/nacos/ClusterModuleNacosProvider.java b/oap-server/server-cluster-plugin/cluster-nacos-plugin/src/main/java/org/apache/skywalking/oap/server/cluster/plugin/nacos/ClusterModuleNacosProvider.java index 34b3bc37fce57250a83426be3a0b5a35fb29935a..5c4d4f9a47a5b81c4d30269a153eee5aa134fe7f 100644 --- a/oap-server/server-cluster-plugin/cluster-nacos-plugin/src/main/java/org/apache/skywalking/oap/server/cluster/plugin/nacos/ClusterModuleNacosProvider.java +++ b/oap-server/server-cluster-plugin/cluster-nacos-plugin/src/main/java/org/apache/skywalking/oap/server/cluster/plugin/nacos/ClusterModuleNacosProvider.java @@ -18,7 +18,7 @@ package org.apache.skywalking.oap.server.cluster.plugin.nacos; -import com.alibaba.nacos.api.exception.NacosException; +import com.alibaba.nacos.api.PropertyKeyConst; import com.alibaba.nacos.api.naming.NamingFactory; import com.alibaba.nacos.api.naming.NamingService; import org.apache.skywalking.oap.server.core.CoreModule; @@ -27,6 +27,8 @@ import org.apache.skywalking.oap.server.core.cluster.ClusterNodesQuery; import org.apache.skywalking.oap.server.core.cluster.ClusterRegister; import org.apache.skywalking.oap.server.library.module.*; +import java.util.Properties; + /** * @author caoyixiong */ @@ -58,8 +60,11 @@ public class ClusterModuleNacosProvider extends ModuleProvider { @Override public void prepare() throws ServiceNotProvidedException, ModuleStartException { try { - namingService = NamingFactory.createNamingService(config.getHostPort()); - } catch (NacosException e) { + Properties properties = new Properties(); + properties.put(PropertyKeyConst.SERVER_ADDR, config.getHostPort()); + properties.put(PropertyKeyConst.NAMESPACE, config.getNamespace()); + namingService = NamingFactory.createNamingService(properties); + } catch (Exception e) { throw new ModuleStartException(e.getMessage(), e); } NacosCoordinator coordinator = new NacosCoordinator(namingService, config); diff --git a/oap-server/server-cluster-plugin/cluster-nacos-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/nacos/ClusterModuleNacosProviderTest.java b/oap-server/server-cluster-plugin/cluster-nacos-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/nacos/ClusterModuleNacosProviderTest.java index b60777b1864910fa07e99bb33e6ae7a3dd851150..a58152ff1cfca8171d563d5b6615fa592569f76e 100644 --- a/oap-server/server-cluster-plugin/cluster-nacos-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/nacos/ClusterModuleNacosProviderTest.java +++ b/oap-server/server-cluster-plugin/cluster-nacos-plugin/src/test/java/org/apache/skywalking/oap/server/cluster/plugin/nacos/ClusterModuleNacosProviderTest.java @@ -18,6 +18,7 @@ package org.apache.skywalking.oap.server.cluster.plugin.nacos; +import com.alibaba.nacos.api.PropertyKeyConst; import com.alibaba.nacos.api.naming.NamingFactory; import com.alibaba.nacos.api.naming.NamingService; import org.apache.skywalking.oap.server.core.CoreModule; @@ -32,6 +33,9 @@ import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.reflect.Whitebox; + +import java.util.Properties; + import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -79,13 +83,17 @@ public class ClusterModuleNacosProviderTest { nacosConfig.setServiceName(SERVICE_NAME); Whitebox.setInternalState(provider, "config", nacosConfig); NamingService namingService = mock(NamingService.class); - PowerMockito.when(NamingFactory.createNamingService("10.0.0.1:1000,10.0.0.2:1001")).thenReturn(namingService); + + Properties properties = new Properties(); + properties.put(PropertyKeyConst.SERVER_ADDR, "10.0.0.1:1000,10.0.0.2:1001"); + + PowerMockito.when(NamingFactory.createNamingService(properties)).thenReturn(namingService); provider.prepare(); - ArgumentCaptor addressCaptor = ArgumentCaptor.forClass(String.class); + ArgumentCaptor addressCaptor = ArgumentCaptor.forClass(Properties.class); PowerMockito.verifyStatic(); NamingFactory.createNamingService(addressCaptor.capture()); - String data = addressCaptor.getValue(); - assertEquals("10.0.0.1:1000,10.0.0.2:1001", data); + Properties data = addressCaptor.getValue(); + assertEquals("10.0.0.1:1000,10.0.0.2:1001", data.getProperty(PropertyKeyConst.SERVER_ADDR)); } @Test diff --git a/oap-server/server-configuration/configuration-nacos/src/main/java/org/apache/skywalking/oap/server/configuration/nacos/NacosConfigWatcherRegister.java b/oap-server/server-configuration/configuration-nacos/src/main/java/org/apache/skywalking/oap/server/configuration/nacos/NacosConfigWatcherRegister.java index 561e974cd08d068c433d6a1c3a321ed3bb4e044b..8c0f01040806c49a3689ebee2149d7da002a7d71 100644 --- a/oap-server/server-configuration/configuration-nacos/src/main/java/org/apache/skywalking/oap/server/configuration/nacos/NacosConfigWatcherRegister.java +++ b/oap-server/server-configuration/configuration-nacos/src/main/java/org/apache/skywalking/oap/server/configuration/nacos/NacosConfigWatcherRegister.java @@ -19,6 +19,7 @@ package org.apache.skywalking.oap.server.configuration.nacos; import com.alibaba.nacos.api.NacosFactory; +import com.alibaba.nacos.api.PropertyKeyConst; import com.alibaba.nacos.api.config.ConfigService; import com.alibaba.nacos.api.config.listener.Listener; import com.alibaba.nacos.api.exception.NacosException; @@ -53,7 +54,8 @@ public class NacosConfigWatcherRegister extends ConfigWatcherRegister { final String serverAddr = this.settings.getServerAddr(); final Properties properties = new Properties(); - properties.put("serverAddr", serverAddr + ":" + port); + properties.put(PropertyKeyConst.SERVER_ADDR, serverAddr + ":" + port); + properties.put(PropertyKeyConst.NAMESPACE, settings.getNamespace()); this.configService = NacosFactory.createConfigService(properties); } diff --git a/oap-server/server-configuration/configuration-nacos/src/main/java/org/apache/skywalking/oap/server/configuration/nacos/NacosServerSettings.java b/oap-server/server-configuration/configuration-nacos/src/main/java/org/apache/skywalking/oap/server/configuration/nacos/NacosServerSettings.java index 74ab960401316cf84b5292eaa1088024d673f74f..e909a6e5d44d2a60f9ea7da64ecb63ed6f87f9a9 100644 --- a/oap-server/server-configuration/configuration-nacos/src/main/java/org/apache/skywalking/oap/server/configuration/nacos/NacosServerSettings.java +++ b/oap-server/server-configuration/configuration-nacos/src/main/java/org/apache/skywalking/oap/server/configuration/nacos/NacosServerSettings.java @@ -18,62 +18,22 @@ package org.apache.skywalking.oap.server.configuration.nacos; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; import org.apache.skywalking.oap.server.library.module.ModuleConfig; /** * @author kezhenxu94 */ +@Getter +@Setter +@ToString public class NacosServerSettings extends ModuleConfig { private String clusterName = "default"; + private String namespace = ""; private String serverAddr; private int port = 8848; private String group; private int period = 60; - - public String getClusterName() { - return clusterName; - } - - public void setClusterName(String clusterName) { - this.clusterName = clusterName; - } - - public String getServerAddr() { - return serverAddr; - } - - public void setServerAddr(String serverAddr) { - this.serverAddr = serverAddr; - } - - public int getPort() { - return port; - } - - public void setPort(int port) { - this.port = port; - } - - public String getGroup() { - return group; - } - - public void setGroup(String group) { - this.group = group; - } - - public int getPeriod() { - return period; - } - - public void setPeriod(int period) { - this.period = period; - } - - public String toString() { - return "NacosServerSettings(clusterName=" + this.getClusterName() - + ", serverAddr=" + this.getServerAddr() - + ", group=" + this.getGroup() - + ", period=" + this.getPeriod() + ")"; - } } diff --git a/oap-server/server-configuration/configuration-nacos/src/test/java/org/apache/skywalking/oap/server/configuration/nacos/NacosConfigWatcherRegisterTest.java b/oap-server/server-configuration/configuration-nacos/src/test/java/org/apache/skywalking/oap/server/configuration/nacos/NacosConfigWatcherRegisterTest.java index 897a324879748aa61609c6561461be202c4412bd..b6c49bec3de71f68c64bd879cf2a6f4cd073926b 100644 --- a/oap-server/server-configuration/configuration-nacos/src/test/java/org/apache/skywalking/oap/server/configuration/nacos/NacosConfigWatcherRegisterTest.java +++ b/oap-server/server-configuration/configuration-nacos/src/test/java/org/apache/skywalking/oap/server/configuration/nacos/NacosConfigWatcherRegisterTest.java @@ -45,6 +45,7 @@ public class NacosConfigWatcherRegisterTest { final NacosServerSettings mockSettings = mock(NacosServerSettings.class); when(mockSettings.getGroup()).thenReturn(group); + when(mockSettings.getNamespace()).thenReturn(""); final NacosConfigWatcherRegister mockRegister = spy(new NacosConfigWatcherRegister(mockSettings)); final ConfigService mockConfigService = mock(ConfigService.class); diff --git a/oap-server/server-configuration/configuration-nacos/src/test/resources/application.yml b/oap-server/server-configuration/configuration-nacos/src/test/resources/application.yml index 49810f57647b9eb2ad7292342b9722cc55e9e484..f5bd261acf8c070adc27e599a61e8056adcf8ca7 100755 --- a/oap-server/server-configuration/configuration-nacos/src/test/resources/application.yml +++ b/oap-server/server-configuration/configuration-nacos/src/test/resources/application.yml @@ -27,6 +27,8 @@ configuration: port: ${nacos.port} # Nacos Configuration Group group: 'skywalking' + # Nacos Configuration namespace + namespace: '' # Unit seconds, sync period. Default fetch every 60 seconds. period: 1 # the name of current cluster, set the name if you want to upstream system known. diff --git a/oap-server/server-starter/src/main/assembly/application.yml b/oap-server/server-starter/src/main/assembly/application.yml index 24971c291e605d3ebf98bd012060120bc71245cb..9741096878ad1cdd8c43ba3fa1ea837b34151ab0 100644 --- a/oap-server/server-starter/src/main/assembly/application.yml +++ b/oap-server/server-starter/src/main/assembly/application.yml @@ -40,6 +40,8 @@ cluster: # nacos: # serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"} # hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:localhost:8848} +# # Nacos Configuration namespace +# namespace: 'public' # etcd: # serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"} # etcd cluster nodes, example: 10.0.0.1:2379,10.0.0.2:2379,10.0.0.3:2379 @@ -152,6 +154,8 @@ configuration: # port: 8848 # # Nacos Configuration Group # group: 'skywalking' +# # Nacos Configuration namespace +# namespace: '' # # Unit seconds, sync period. Default fetch every 60 seconds. # period : 60 # # the name of current cluster, set the name if you want to upstream system known. diff --git a/oap-server/server-starter/src/main/resources/application.yml b/oap-server/server-starter/src/main/resources/application.yml index 9ec43e1aa910f05553ab45c84b063f7e7de7bcae..b16976cb70b1c8b0e35e7e70f12f62980195d866 100755 --- a/oap-server/server-starter/src/main/resources/application.yml +++ b/oap-server/server-starter/src/main/resources/application.yml @@ -38,6 +38,8 @@ cluster: # hostPort: ${SW_CLUSTER_CONSUL_HOST_PORT:localhost:8500} # nacos: # serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"} +# # Nacos Configuration namespace +# namespace: ${SW_CLUSTER_NACOS_NAMESPACE:"public"} # hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:localhost:8848} # etcd: # serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"} @@ -164,6 +166,8 @@ configuration: # port: 8848 # # Nacos Configuration Group # group: 'skywalking' +# # Nacos Configuration namespace +# namespace: '' # # Unit seconds, sync period. Default fetch every 60 seconds. # period : 5 # # the name of current cluster, set the name if you want to upstream system known.