diff --git a/registry/etcdv3/registry.go b/registry/etcdv3/registry.go
index 9cbc4945605c2ac42242d7c0727e8cd487703c9c..f3cc379bd8e94b15b678f0ac1d5ed5b6c917da6a 100644
--- a/registry/etcdv3/registry.go
+++ b/registry/etcdv3/registry.go
@@ -91,7 +91,7 @@ func newETCDV3Registry(url *common.URL) (registry.Registry, error) {
 		r,
 		etcdv3.WithName(etcdv3.RegistryETCDV3Client),
 		etcdv3.WithTimeout(timeout),
-		etcdv3.WithEndpoints(url.Location),
+		etcdv3.WithEndpoints(strings.Split(url.Location, ",")...),
 	); err != nil {
 		return nil, err
 	}
diff --git a/registry/etcdv3/service_discovery.go b/registry/etcdv3/service_discovery.go
index dceaa99df8061c6f46baa52eb6f5cebe4477f120..e8d4aea9a42634896c3c30e5c6b527a935179873 100644
--- a/registry/etcdv3/service_discovery.go
+++ b/registry/etcdv3/service_discovery.go
@@ -19,6 +19,7 @@ package etcdv3
 
 import (
 	"fmt"
+	"strings"
 	"sync"
 	"time"
 )
@@ -313,7 +314,7 @@ func newEtcdV3ServiceDiscovery(name string) (registry.ServiceDiscovery, error) {
 	client := etcdv3.NewServiceDiscoveryClient(
 		etcdv3.WithName(etcdv3.RegistryETCDV3Client),
 		etcdv3.WithTimeout(timeout),
-		etcdv3.WithEndpoints(remoteConfig.Address),
+		etcdv3.WithEndpoints(strings.Split(remoteConfig.Address, ",")...),
 	)
 
 	descriptor := fmt.Sprintf("etcd-service-discovery[%s]", remoteConfig.Address)