mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-06 10:00:24 +08:00
集群中自动设置CNAME记录如果已经存在,则跳过
This commit is contained in:
@@ -13,17 +13,9 @@ import (
|
|||||||
func (this *NodeCluster) DecodeDNSConfig() (*dnsconfigs.ClusterDNSConfig, error) {
|
func (this *NodeCluster) DecodeDNSConfig() (*dnsconfigs.ClusterDNSConfig, error) {
|
||||||
if len(this.Dns) == 0 {
|
if len(this.Dns) == 0 {
|
||||||
// 一定要返回一个默认的值,防止产生nil
|
// 一定要返回一个默认的值,防止产生nil
|
||||||
return &dnsconfigs.ClusterDNSConfig{
|
return dnsconfigs.DefaultClusterDNSConfig(), nil
|
||||||
NodesAutoSync: false,
|
|
||||||
ServersAutoSync: false,
|
|
||||||
CNAMEAsDomain: true,
|
|
||||||
IncludingLnNodes: true,
|
|
||||||
}, nil
|
|
||||||
}
|
|
||||||
var dnsConfig = &dnsconfigs.ClusterDNSConfig{
|
|
||||||
CNAMEAsDomain: true,
|
|
||||||
IncludingLnNodes: true,
|
|
||||||
}
|
}
|
||||||
|
var dnsConfig = dnsconfigs.DefaultClusterDNSConfig()
|
||||||
err := json.Unmarshal(this.Dns, &dnsConfig)
|
err := json.Unmarshal(this.Dns, &dnsConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import (
|
|||||||
"github.com/TeaOSLab/EdgeAPI/internal/goman"
|
"github.com/TeaOSLab/EdgeAPI/internal/goman"
|
||||||
"github.com/TeaOSLab/EdgeAPI/internal/utils"
|
"github.com/TeaOSLab/EdgeAPI/internal/utils"
|
||||||
"github.com/TeaOSLab/EdgeAPI/internal/utils/numberutils"
|
"github.com/TeaOSLab/EdgeAPI/internal/utils/numberutils"
|
||||||
|
"github.com/TeaOSLab/EdgeCommon/pkg/dnsconfigs"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
|
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||||
"github.com/iwind/TeaGo/dbs"
|
"github.com/iwind/TeaGo/dbs"
|
||||||
@@ -436,22 +437,22 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster,
|
|||||||
var clusterId = int64(cluster.Id)
|
var clusterId = int64(cluster.Id)
|
||||||
var clusterDnsName = cluster.DnsName
|
var clusterDnsName = cluster.DnsName
|
||||||
var clusterDomain = clusterDnsName + "." + domainName
|
var clusterDomain = clusterDnsName + "." + domainName
|
||||||
var dnsConfig, _ = cluster.DecodeDNSConfig()
|
dnsConfig, err := cluster.DecodeDNSConfig()
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, nil, 0, 0, false, false, err
|
||||||
|
}
|
||||||
|
if dnsConfig == nil {
|
||||||
|
dnsConfig = dnsconfigs.DefaultClusterDNSConfig()
|
||||||
|
}
|
||||||
|
|
||||||
var tx = this.NullTx()
|
var tx = this.NullTx()
|
||||||
|
|
||||||
// 自动设置的cname记录
|
// 自动设置的cname记录
|
||||||
var cnameRecords = []string{}
|
|
||||||
var ttl int32
|
var ttl int32
|
||||||
if len(cluster.Dns) > 0 {
|
var cnameRecords = dnsConfig.CNAMERecords
|
||||||
dnsConfig, _ := cluster.DecodeDNSConfig()
|
|
||||||
if dnsConfig != nil {
|
|
||||||
cnameRecords = dnsConfig.CNAMERecords
|
|
||||||
if dnsConfig.TTL > 0 {
|
if dnsConfig.TTL > 0 {
|
||||||
ttl = dnsConfig.TTL
|
ttl = dnsConfig.TTL
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 节点域名
|
// 节点域名
|
||||||
nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, clusterId, true, dnsConfig != nil && dnsConfig.IncludingLnNodes)
|
nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, clusterId, true, dnsConfig != nil && dnsConfig.IncludingLnNodes)
|
||||||
@@ -556,7 +557,7 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster,
|
|||||||
// 新增的域名
|
// 新增的域名
|
||||||
var serverDNSNames = []string{}
|
var serverDNSNames = []string{}
|
||||||
for _, server := range servers {
|
for _, server := range servers {
|
||||||
dnsName := server.DnsName
|
var dnsName = server.DnsName
|
||||||
if len(dnsName) == 0 {
|
if len(dnsName) == 0 {
|
||||||
return nil, nil, nil, 0, 0, false, false, errors.New("server '" + numberutils.FormatInt64(int64(server.Id)) + "' 'dnsName' should not empty")
|
return nil, nil, nil, 0, 0, false, false, errors.New("server '" + numberutils.FormatInt64(int64(server.Id)) + "' 'dnsName' should not empty")
|
||||||
}
|
}
|
||||||
@@ -582,6 +583,11 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster,
|
|||||||
|
|
||||||
// 自动设置的CNAME
|
// 自动设置的CNAME
|
||||||
for _, cnameRecord := range cnameRecords {
|
for _, cnameRecord := range cnameRecords {
|
||||||
|
// 如果记录已存在,则跳过
|
||||||
|
if lists.ContainsString(serverDNSNames, cnameRecord) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
serverDNSNames = append(serverDNSNames, cnameRecord)
|
serverDNSNames = append(serverDNSNames, cnameRecord)
|
||||||
record, ok := serverRecordsMap[cnameRecord]
|
record, ok := serverRecordsMap[cnameRecord]
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|||||||
@@ -441,9 +441,9 @@ func (this *DNSTaskExecutor) doCluster(taskId int64, clusterId int64) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 新增的域名
|
// 新增的域名
|
||||||
serverDNSNames := []string{}
|
var serverDNSNames = []string{}
|
||||||
for _, server := range servers {
|
for _, server := range servers {
|
||||||
dnsName := server.DnsName
|
var dnsName = server.DnsName
|
||||||
if len(dnsName) == 0 {
|
if len(dnsName) == 0 {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@@ -471,6 +471,11 @@ func (this *DNSTaskExecutor) doCluster(taskId int64, clusterId int64) error {
|
|||||||
cnameRecords = dnsConfig.CNAMERecords
|
cnameRecords = dnsConfig.CNAMERecords
|
||||||
}
|
}
|
||||||
for _, cnameRecord := range cnameRecords {
|
for _, cnameRecord := range cnameRecords {
|
||||||
|
// 如果记录已存在,则跳过
|
||||||
|
if lists.ContainsString(serverDNSNames, cnameRecord) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
serverDNSNames = append(serverDNSNames, cnameRecord)
|
serverDNSNames = append(serverDNSNames, cnameRecord)
|
||||||
_, ok := serverRecordsMap[cnameRecord]
|
_, ok := serverRecordsMap[cnameRecord]
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|||||||
Reference in New Issue
Block a user