Skip to content

Commit f7ab46f

Browse files
committed
resolve conflict
Signed-off-by: bufferflies <[email protected]>
2 parents 7650525 + bdee7c1 commit f7ab46f

File tree

16 files changed

+714
-107
lines changed

16 files changed

+714
-107
lines changed

components/cluster/command/upgrade.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ import (
2424
func newUpgradeCmd() *cobra.Command {
2525
offlineMode := false
2626
ignoreVersionCheck := false
27-
var tidbVer, tikvVer, pdVer, tsoVer, schedulingVer, routerVer, tiflashVer, kvcdcVer, dashboardVer, cdcVer,
28-
alertmanagerVer, nodeExporterVer, blackboxExporterVer, tiproxyVer string
27+
var tidbVer, tikvVer, pdVer, tsoVer, schedulingVer, resourceManagerVer, routerVer, tiflashVer, kvcdcVer, dashboardVer, cdcVer, alertmanagerVer, nodeExporterVer, blackboxExporterVer, tiproxyVer string
2928
var restartTimeout time.Duration
3029

3130
cmd := &cobra.Command{
@@ -51,6 +50,7 @@ func newUpgradeCmd() *cobra.Command {
5150
spec.ComponentTSO: tsoVer,
5251
spec.ComponentScheduling: schedulingVer,
5352
spec.ComponentRouter: routerVer,
53+
spec.ComponentResourceManager: resourceManagerVer,
5454
spec.ComponentTiFlash: tiflashVer,
5555
spec.ComponentTiKVCDC: kvcdcVer,
5656
spec.ComponentCDC: cdcVer,
@@ -83,6 +83,7 @@ func newUpgradeCmd() *cobra.Command {
8383
cmd.Flags().StringVar(&pdVer, "pd-version", "", "Fix the version of pd and no longer follows the cluster version.")
8484
cmd.Flags().StringVar(&tsoVer, "tso-version", "", "Fix the version of tso and no longer follows the cluster version.")
8585
cmd.Flags().StringVar(&schedulingVer, "scheduling-version", "", "Fix the version of scheduling and no longer follows the cluster version.")
86+
cmd.Flags().StringVar(&resourceManagerVer, "resource-manager-version", "", "Fix the version of resource-manager and no longer follows the cluster version.")
8687
cmd.Flags().StringVar(&tiflashVer, "tiflash-version", "", "Fix the version of tiflash and no longer follows the cluster version.")
8788
cmd.Flags().StringVar(&dashboardVer, "tidb-dashboard-version", "", "Fix the version of tidb-dashboard and no longer follows the cluster version.")
8889
cmd.Flags().StringVar(&cdcVer, "cdc-version", "", "Fix the version of cdc and no longer follows the cluster version.")

components/playground/playground.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1423,7 +1423,7 @@ func (p *Playground) bootCluster(ctx context.Context, env *environment.Environme
14231423
}
14241424

14251425
for _, router := range p.routers {
1426-
routerAddr = append(schedulingAddr, router.Addr())
1426+
routerAddr = append(routerAddr, router.Addr())
14271427
}
14281428

14291429
fmt.Printf("PD API Endpoints: ")

embed/templates/config/prometheus.yml.tpl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,22 @@ scrape_configs:
190190
- targets:
191191
{{- range .SchedulingAddrs}}
192192
- '{{.}}'
193+
{{- end}}
194+
{{- if .ResourceManagerAddrs}}
195+
- job_name: "resource-manager"
196+
honor_labels: true # don't overwrite job & instance labels
197+
{{- if .TLSEnabled}}
198+
scheme: https
199+
tls_config:
200+
insecure_skip_verify: false
201+
ca_file: ../tls/ca.crt
202+
cert_file: ../tls/prometheus.crt
203+
key_file: ../tls/prometheus.pem
204+
{{- end}}
205+
static_configs:
206+
- targets:
207+
{{- range .ResourceManagerAddrs}}
208+
- '{{.}}'
193209
{{- end}}
194210
- job_name: "router"
195211
honor_labels: true # don't overwrite job & instance labels
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# WARNING: This file was auto-generated. Do not edit!
5+
# All your edit might be overwritten!
6+
DEPLOY_DIR={{.DeployDir}}
7+
8+
cd "${DEPLOY_DIR}" || exit 1
9+
10+
{{- if .NumaNode}}
11+
exec numactl --cpunodebind={{.NumaNode}} --membind={{.NumaNode}} env GODEBUG=madvdontneed=1 bin/pd-server services resource-manager\
12+
{{- else}}
13+
exec env GODEBUG=madvdontneed=1 bin/pd-server services resource-manager \
14+
{{- end}}
15+
{{- if .Name}}
16+
--name="{{.Name}}" \
17+
{{- end}}
18+
--backend-endpoints="{{.BackendEndpoints}}" \
19+
--listen-addr="{{.ListenURL}}" \
20+
--advertise-listen-addr="{{.AdvertiseListenURL}}" \
21+
--config=conf/resource-manager.toml \
22+
--log-file="{{.LogDir}}/resource-manager.log" 2>> "{{.LogDir}}/resource-manager_stderr.log"

pkg/cluster/api/pdapi.go

Lines changed: 86 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1048,9 +1048,10 @@ func (pc *PDClient) SetLeaderPriority(name string, value int32) error {
10481048
}
10491049

10501050
const (
1051-
tsoStatusURI = "status"
1052-
schedulingStatusURI = "status"
1053-
routerStatusURI = "status"
1051+
tsoStatusURI = "status"
1052+
schedulingStatusURI = "status"
1053+
resourceManagerStatusURI = "status"
1054+
routerStatusURI = "status"
10541055
)
10551056

10561057
// TSOClient is an HTTP client of the TSO server
@@ -1253,6 +1254,88 @@ func (tc *SchedulingClient) CheckHealth() error {
12531254
return nil
12541255
}
12551256

1257+
// ResourceManagerClient is an HTTP client of the resource manager server
1258+
type ResourceManagerClient struct {
1259+
version string
1260+
addrs []string
1261+
tlsEnabled bool
1262+
httpClient *utils.HTTPClient
1263+
ctx context.Context
1264+
}
1265+
1266+
// NewResourceManagerClient returns a new ResourceManagerClient, the context must have
1267+
// a *logprinter.Logger as value of "logger"
1268+
func NewResourceManagerClient(
1269+
ctx context.Context,
1270+
addrs []string,
1271+
timeout time.Duration,
1272+
tlsConfig *tls.Config,
1273+
) *ResourceManagerClient {
1274+
enableTLS := false
1275+
if tlsConfig != nil {
1276+
enableTLS = true
1277+
}
1278+
1279+
if _, ok := ctx.Value(logprinter.ContextKeyLogger).(*logprinter.Logger); !ok {
1280+
panic("the context must have logger inside")
1281+
}
1282+
1283+
cli := &ResourceManagerClient{
1284+
addrs: addrs,
1285+
tlsEnabled: enableTLS,
1286+
httpClient: utils.NewHTTPClient(timeout, tlsConfig),
1287+
ctx: ctx,
1288+
}
1289+
1290+
cli.tryIdentifyVersion()
1291+
return cli
1292+
}
1293+
1294+
func (tc *ResourceManagerClient) tryIdentifyVersion() {
1295+
endpoints := tc.getEndpoints(resourceManagerStatusURI)
1296+
response := map[string]string{}
1297+
_, err := tryURLs(endpoints, func(endpoint string) ([]byte, error) {
1298+
body, err := tc.httpClient.Get(tc.ctx, endpoint)
1299+
if err != nil {
1300+
return body, err
1301+
}
1302+
1303+
return body, json.Unmarshal(body, &response)
1304+
})
1305+
if err == nil {
1306+
tc.version = response["version"]
1307+
}
1308+
}
1309+
1310+
// GetURL builds the client URL
1311+
func (tc *ResourceManagerClient) GetURL(addr string) string {
1312+
httpPrefix := "http"
1313+
if tc.tlsEnabled {
1314+
httpPrefix = "https"
1315+
}
1316+
return fmt.Sprintf("%s://%s", httpPrefix, addr)
1317+
}
1318+
1319+
func (tc *ResourceManagerClient) getEndpoints(uri string) (endpoints []string) {
1320+
for _, addr := range tc.addrs {
1321+
endpoints = append(endpoints, fmt.Sprintf("%s/%s", tc.GetURL(addr), uri))
1322+
}
1323+
return
1324+
}
1325+
1326+
// CheckHealth checks the health of resource manager node.
1327+
func (tc *ResourceManagerClient) CheckHealth() error {
1328+
endpoints := tc.getEndpoints(resourceManagerStatusURI)
1329+
_, err := tryURLs(endpoints, func(endpoint string) ([]byte, error) {
1330+
body, err := tc.httpClient.Get(tc.ctx, endpoint)
1331+
if err != nil {
1332+
return body, err
1333+
}
1334+
return body, nil
1335+
})
1336+
return err
1337+
}
1338+
12561339
// RouterClient is an HTTP client of the router server
12571340
type RouterClient struct {
12581341
version string

pkg/cluster/operation/upgrade.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ func Upgrade(
143143

144144
// Usage within the switch statement
145145
switch component.Name() {
146-
case spec.ComponentPD, spec.ComponentTSO, spec.ComponentScheduling, spec.ComponentRouter:
146+
case spec.ComponentPD, spec.ComponentTSO, spec.ComponentScheduling, spec.ComponentResourceManager, spec.ComponentRouter:
147147
// defer PD related leader/primary to be upgraded after others
148148
isLeader, err := checkAndDeferPDLeader(ctx, topo, int(options.APITimeout), tlsCfg, instance)
149149
if err != nil {
@@ -244,6 +244,8 @@ func checkAndDeferPDLeader(ctx context.Context, topo spec.Topology, apiTimeout i
244244
isLeader, err = instance.(*spec.TSOInstance).IsPrimary(ctx, topo, tlsCfg)
245245
case spec.ComponentRouter:
246246
isLeader, err = instance.(*spec.RouterInstance).IsPrimary(ctx, topo, tlsCfg)
247+
case spec.ComponentResourceManager:
248+
isLeader, err = instance.(*spec.ResourceManagerInstance).IsPrimary(ctx, topo, tlsCfg)
247249
}
248250
if err != nil {
249251
return false, err

pkg/cluster/spec/monitoring.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,13 @@ func (i *MonitorInstance) InitConfig(
346346
cfig.AddRouter(router.Host, uint64(router.Port))
347347
}
348348
}
349+
if servers, found := topoHasField("ResourceManagerServers"); found {
350+
for i := 0; i < servers.Len(); i++ {
351+
rm := servers.Index(i).Interface().(*ResourceManagerSpec)
352+
uniqueHosts.Insert(rm.Host)
353+
cfig.AddResourceManager(rm.Host, uint64(rm.Port))
354+
}
355+
}
349356
if servers, found := topoHasField("TiKVServers"); found {
350357
for i := 0; i < servers.Len(); i++ {
351358
kv := servers.Index(i).Interface().(*TiKVSpec)

0 commit comments

Comments
 (0)