mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-06 18:10:25 +08:00
集群DNS设置中增加”包含Ln节点“选项
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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).
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user