集群DNS设置中增加”包含Ln节点“选项

This commit is contained in:
GoEdgeLab
2022-08-25 19:18:30 +08:00
parent 5b960dee2f
commit e96ea7e976
8 changed files with 65 additions and 51 deletions

View File

@@ -16,8 +16,11 @@ import (
// CheckClusterDNS 检查集群的DNS问题 // CheckClusterDNS 检查集群的DNS问题
// 藏这么深是避免package循环引用的问题 // 藏这么深是避免package循环引用的问题
func CheckClusterDNS(tx *dbs.Tx, cluster *models.NodeCluster) (issues []*pb.DNSIssue, err error) { func CheckClusterDNS(tx *dbs.Tx, cluster *models.NodeCluster) (issues []*pb.DNSIssue, err error) {
clusterId := int64(cluster.Id) var clusterId = int64(cluster.Id)
domainId := int64(cluster.DnsDomainId) var domainId = int64(cluster.DnsDomainId)
// 集群DNS设置
var clusterDNSConfig, _ = cluster.DecodeDNSConfig()
// 检查域名 // 检查域名
domain, err := dns.SharedDNSDomainDAO.FindEnabledDNSDomain(tx, domainId, nil) domain, err := dns.SharedDNSDomainDAO.FindEnabledDNSDomain(tx, domainId, nil)
@@ -101,7 +104,7 @@ func CheckClusterDNS(tx *dbs.Tx, cluster *models.NodeCluster) (issues []*pb.DNSI
// TODO 检查域名是否已解析 // TODO 检查域名是否已解析
// 检查节点 // 检查节点
nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, clusterId, true) nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, clusterId, true, clusterDNSConfig != nil && clusterDNSConfig.IncludingLnNodes)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@@ -152,6 +152,7 @@ func (this *NodeClusterDAO) CreateCluster(tx *dbs.Tx, adminId int64, name string
CNameRecords: []string{}, CNameRecords: []string{},
CNameAsDomain: true, CNameAsDomain: true,
TTL: 0, TTL: 0,
IncludingLnNodes: true,
} }
dnsJSON, err := json.Marshal(dnsConfig) dnsJSON, err := json.Marshal(dnsConfig)
if err != nil { if err != nil {
@@ -468,7 +469,7 @@ func (this *NodeClusterDAO) ExistClusterDNSName(tx *dbs.Tx, dnsName string, excl
} }
// UpdateClusterDNS 修改集群DNS相关信息 // UpdateClusterDNS 修改集群DNS相关信息
func (this *NodeClusterDAO) UpdateClusterDNS(tx *dbs.Tx, clusterId int64, dnsName string, dnsDomainId int64, nodesAutoSync bool, serversAutoSync bool, cnameRecords []string, ttl int32, cnameAsDomain bool) error { func (this *NodeClusterDAO) UpdateClusterDNS(tx *dbs.Tx, clusterId int64, dnsName string, dnsDomainId int64, nodesAutoSync bool, serversAutoSync bool, cnameRecords []string, ttl int32, cnameAsDomain bool, includingLnNodes bool) error {
if clusterId <= 0 { if clusterId <= 0 {
return errors.New("invalid clusterId") return errors.New("invalid clusterId")
} }
@@ -509,6 +510,7 @@ func (this *NodeClusterDAO) UpdateClusterDNS(tx *dbs.Tx, clusterId int64, dnsNam
CNameRecords: cnameRecords, CNameRecords: cnameRecords,
TTL: ttl, TTL: ttl,
CNameAsDomain: cnameAsDomain, CNameAsDomain: cnameAsDomain,
IncludingLnNodes: includingLnNodes,
} }
dnsJSON, err := json.Marshal(dnsConfig) dnsJSON, err := json.Marshal(dnsConfig)
if err != nil { if err != nil {

View File

@@ -14,10 +14,12 @@ func (this *NodeCluster) DecodeDNSConfig() (*dnsconfigs.ClusterDNSConfig, error)
NodesAutoSync: false, NodesAutoSync: false,
ServersAutoSync: false, ServersAutoSync: false,
CNameAsDomain: true, CNameAsDomain: true,
IncludingLnNodes: true,
}, nil }, nil
} }
var dnsConfig = &dnsconfigs.ClusterDNSConfig{ var dnsConfig = &dnsconfigs.ClusterDNSConfig{
CNameAsDomain: true, CNameAsDomain: true,
IncludingLnNodes: true,
} }
err := json.Unmarshal(this.Dns, &dnsConfig) err := json.Unmarshal(this.Dns, &dnsConfig)
if err != nil { if err != nil {

View File

@@ -1403,7 +1403,7 @@ func (this *NodeDAO) CountAllEnabledNodesWithRegionId(tx *dbs.Tx, regionId int64
} }
// FindAllEnabledNodesDNSWithClusterId 获取一个集群的节点DNS信息 // FindAllEnabledNodesDNSWithClusterId 获取一个集群的节点DNS信息
func (this *NodeDAO) FindAllEnabledNodesDNSWithClusterId(tx *dbs.Tx, clusterId int64, includeSecondaryNodes bool) (result []*Node, err error) { func (this *NodeDAO) FindAllEnabledNodesDNSWithClusterId(tx *dbs.Tx, clusterId int64, includeSecondaryNodes bool, includingLnNodes bool) (result []*Node, err error) {
if clusterId <= 0 { if clusterId <= 0 {
return nil, nil return nil, nil
} }
@@ -1415,6 +1415,9 @@ func (this *NodeDAO) FindAllEnabledNodesDNSWithClusterId(tx *dbs.Tx, clusterId i
} else { } else {
query.Attr("clusterId", clusterId) query.Attr("clusterId", clusterId)
} }
if !includingLnNodes {
query.Lte("level", 1)
}
_, err = query. _, err = query.
State(NodeStateEnabled). State(NodeStateEnabled).
Attr("isOn", true). Attr("isOn", true).

View File

@@ -417,9 +417,10 @@ func (this *DNSDomainService) convertRecordToPB(record *dnstypes.Record) *pb.DNS
// 检查集群节点变化 // 检查集群节点变化
func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster, records []*dnstypes.Record, domainName string, defaultRoute string) (result []maps.Map, doneNodeRecords []*dnstypes.Record, doneServerRecords []*dnstypes.Record, countAllNodes int64, countAllServers int64, nodesChanged bool, serversChanged bool, err error) { func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster, records []*dnstypes.Record, domainName string, defaultRoute string) (result []maps.Map, doneNodeRecords []*dnstypes.Record, doneServerRecords []*dnstypes.Record, countAllNodes int64, countAllServers int64, nodesChanged bool, serversChanged bool, err error) {
clusterId := int64(cluster.Id) var clusterId = int64(cluster.Id)
clusterDnsName := cluster.DnsName var clusterDnsName = cluster.DnsName
clusterDomain := clusterDnsName + "." + domainName var clusterDomain = clusterDnsName + "." + domainName
var dnsConfig, _ = cluster.DecodeDNSConfig()
var tx = this.NullTx() var tx = this.NullTx()
@@ -437,7 +438,7 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster,
} }
// 节点域名 // 节点域名
nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, clusterId, true) nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, clusterId, true, dnsConfig != nil && dnsConfig.IncludingLnNodes)
if err != nil { if err != nil {
return nil, nil, nil, 0, 0, false, false, err return nil, nil, nil, 0, 0, false, false, err
} }

View File

@@ -1304,18 +1304,19 @@ func (this *NodeService) FindAllEnabledNodesDNSWithNodeClusterId(ctx context.Con
if clusterDNS == nil { if clusterDNS == nil {
return nil, errors.New("not found clusterId '" + numberutils.FormatInt64(req.NodeClusterId) + "'") return nil, errors.New("not found clusterId '" + numberutils.FormatInt64(req.NodeClusterId) + "'")
} }
dnsDomainId := int64(clusterDNS.DnsDomainId) var dnsConfig, _ = clusterDNS.DecodeDNSConfig()
var dnsDomainId = int64(clusterDNS.DnsDomainId)
routes, err := dns.SharedDNSDomainDAO.FindDomainRoutes(tx, dnsDomainId) routes, err := dns.SharedDNSDomainDAO.FindDomainRoutes(tx, dnsDomainId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, req.NodeClusterId, true) nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, req.NodeClusterId, true, dnsConfig != nil && dnsConfig.IncludingLnNodes)
if err != nil { if err != nil {
return nil, err return nil, err
} }
result := []*pb.NodeDNSInfo{} var result = []*pb.NodeDNSInfo{}
for _, node := range nodes { for _, node := range nodes {
ipAddresses, err := models.SharedNodeIPAddressDAO.FindNodeAccessAndUpIPAddresses(tx, int64(node.Id), nodeconfigs.NodeRoleNode) ipAddresses, err := models.SharedNodeIPAddressDAO.FindNodeAccessAndUpIPAddresses(tx, int64(node.Id), nodeconfigs.NodeRoleNode)
if err != nil { if err != nil {
@@ -1327,7 +1328,7 @@ func (this *NodeService) FindAllEnabledNodesDNSWithNodeClusterId(ctx context.Con
return nil, err return nil, err
} }
pbRoutes := []*pb.DNSRoute{} var pbRoutes = []*pb.DNSRoute{}
for _, routeCode := range domainRouteCodes { for _, routeCode := range domainRouteCodes {
for _, r := range routes { for _, r := range routes {
if r.Code == routeCode { if r.Code == routeCode {

View File

@@ -458,6 +458,7 @@ func (this *NodeClusterService) FindEnabledNodeClusterDNS(ctx context.Context, r
CnameRecords: dnsConfig.CNameRecords, CnameRecords: dnsConfig.CNameRecords,
Ttl: dnsConfig.TTL, Ttl: dnsConfig.TTL,
CnameAsDomain: dnsConfig.CNameAsDomain, CnameAsDomain: dnsConfig.CNameAsDomain,
IncludingLnNodes: dnsConfig.IncludingLnNodes,
}, nil }, nil
} }
@@ -517,6 +518,7 @@ func (this *NodeClusterService) FindEnabledNodeClusterDNS(ctx context.Context, r
CnameRecords: dnsConfig.CNameRecords, CnameRecords: dnsConfig.CNameRecords,
Ttl: dnsConfig.TTL, Ttl: dnsConfig.TTL,
CnameAsDomain: dnsConfig.CNameAsDomain, CnameAsDomain: dnsConfig.CNameAsDomain,
IncludingLnNodes: dnsConfig.IncludingLnNodes,
DefaultRoute: defaultRoute, DefaultRoute: defaultRoute,
}, nil }, nil
} }
@@ -610,7 +612,7 @@ func (this *NodeClusterService) UpdateNodeClusterDNS(ctx context.Context, req *p
var tx = this.NullTx() var tx = this.NullTx()
err = models.SharedNodeClusterDAO.UpdateClusterDNS(tx, req.NodeClusterId, req.DnsName, req.DnsDomainId, req.NodesAutoSync, req.ServersAutoSync, req.CnameRecords, req.Ttl, req.CnameAsDomain) err = models.SharedNodeClusterDAO.UpdateClusterDNS(tx, req.NodeClusterId, req.DnsName, req.DnsDomainId, req.NodesAutoSync, req.ServersAutoSync, req.CnameRecords, req.Ttl, req.CnameAsDomain, req.IncludingLnNodes)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@@ -355,12 +355,12 @@ func (this *DNSTaskExecutor) doCluster(taskId int64, clusterId int64) error {
} }
// 当前的节点记录 // 当前的节点记录
newRecordKeys := []string{} var newRecordKeys = []string{}
nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, clusterId, true) nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, clusterId, true, dnsConfig != nil && dnsConfig.IncludingLnNodes)
if err != nil { if err != nil {
return err return err
} }
isChanged := false var isChanged = false
for _, node := range nodes { for _, node := range nodes {
routes, err := node.DNSRouteCodesForDomainId(domainId) routes, err := node.DNSRouteCodesForDomainId(domainId)
if err != nil { if err != nil {
@@ -379,7 +379,7 @@ func (this *DNSTaskExecutor) doCluster(taskId int64, clusterId int64) error {
continue continue
} }
for _, ipAddress := range ipAddresses { for _, ipAddress := range ipAddresses {
ip := ipAddress.DNSIP() var ip = ipAddress.DNSIP()
if len(ip) == 0 || !ipAddress.CanAccess || !ipAddress.IsUp || !ipAddress.IsOn { if len(ip) == 0 || !ipAddress.CanAccess || !ipAddress.IsUp || !ipAddress.IsOn {
continue continue
} }
@@ -387,14 +387,14 @@ func (this *DNSTaskExecutor) doCluster(taskId int64, clusterId int64) error {
continue continue
} }
for _, route := range routes { for _, route := range routes {
key := route + "@" + ip var key = route + "@" + ip
_, ok := oldRecordsMap[key] _, ok := oldRecordsMap[key]
if ok { if ok {
newRecordKeys = append(newRecordKeys, key) newRecordKeys = append(newRecordKeys, key)
continue continue
} }
recordType := dnstypes.RecordTypeA var recordType = dnstypes.RecordTypeA
if utils.IsIPv6(ip) { if utils.IsIPv6(ip) {
recordType = dnstypes.RecordTypeAAAA recordType = dnstypes.RecordTypeAAAA
} }