@@ -34,7 +34,6 @@ type RepMgr struct {
34
34
PrimaryRegion string
35
35
Region string
36
36
PrivateIP string
37
- MachineID string
38
37
DataDir string
39
38
DatabaseName string
40
39
Credentials admin.Credential
@@ -162,12 +161,10 @@ func (r *RepMgr) setDefaults() error {
162
161
return err
163
162
}
164
163
165
- hostname := r .machineIdToDNS (r .MachineID )
166
-
167
164
conf := ConfigMap {
168
165
"node_id" : nodeID ,
169
- "node_name" : fmt .Sprintf ("'%s'" , hostname ),
170
- "conninfo" : fmt .Sprintf ("'host=%s port=%d user=%s dbname=%s connect_timeout=5'" , hostname , r .Port , r .Credentials .Username , r .DatabaseName ),
166
+ "node_name" : fmt .Sprintf ("'%s'" , r . PrivateIP ),
167
+ "conninfo" : fmt .Sprintf ("'host=%s port=%d user=%s dbname=%s connect_timeout=5'" , r . PrivateIP , r .Port , r .Credentials .Username , r .DatabaseName ),
171
168
"data_directory" : fmt .Sprintf ("'%s'" , r .DataDir ),
172
169
"failover" : "'automatic'" ,
173
170
"use_replication_slots" : "yes" ,
@@ -279,7 +276,7 @@ func (*RepMgr) restartDaemon() error {
279
276
}
280
277
281
278
func (r * RepMgr ) daemonRestartRequired (m * Member ) bool {
282
- return m .Hostname != r .MachineID
279
+ return m .Hostname != r .PrivateIP
283
280
}
284
281
285
282
func (r * RepMgr ) unregisterWitness (id int ) error {
@@ -304,14 +301,14 @@ func (r *RepMgr) rejoinCluster(hostname string) error {
304
301
return err
305
302
}
306
303
307
- func (r * RepMgr ) clonePrimary (hostname string ) error {
304
+ func (r * RepMgr ) clonePrimary (ipStr string ) error {
308
305
cmdStr := fmt .Sprintf ("mkdir -p %s" , r .DataDir )
309
306
if _ , err := utils .RunCommand (cmdStr , "postgres" ); err != nil {
310
307
return fmt .Errorf ("failed to create pg directory: %s" , err )
311
308
}
312
309
313
310
cmdStr = fmt .Sprintf ("repmgr -h %s -p %d -d %s -U %s -f %s standby clone -c -F" ,
314
- hostname ,
311
+ ipStr ,
315
312
r .Port ,
316
313
r .DatabaseName ,
317
314
r .Credentials .Username ,
@@ -325,21 +322,6 @@ func (r *RepMgr) clonePrimary(hostname string) error {
325
322
return nil
326
323
}
327
324
328
- func (r * RepMgr ) regenReplicationConf (ctx context.Context ) error {
329
- // TODO: do we need -c?
330
- if _ , err := utils .RunCmd (ctx , "postgres" ,
331
- "repmgr" , "--replication-conf-only" ,
332
- "-h" , "" ,
333
- "-p" , fmt .Sprint (r .Port ),
334
- "-d" , r .DatabaseName ,
335
- "-U" , r .Credentials .Username ,
336
- "-f" , r .ConfigPath ,
337
- "standby" , "clone" , "-F" ); err != nil {
338
- return fmt .Errorf ("failed to regenerate replication conf: %s" , err )
339
- }
340
- return nil
341
- }
342
-
343
325
type Member struct {
344
326
ID int
345
327
Hostname string
@@ -449,56 +431,26 @@ func (*RepMgr) MemberByHostname(ctx context.Context, pg *pgx.Conn, hostname stri
449
431
return & member , nil
450
432
}
451
433
452
- // MemberBy6PN returns a member by its 6PN address.
453
- func (r * RepMgr ) MemberBy6PN (ctx context.Context , pg * pgx.Conn , ip string ) (* Member , error ) {
454
- members , err := r .Members (ctx , pg )
455
- if err != nil {
456
- return nil , err
457
- }
458
-
459
- resolver := privnet .GetResolver ()
460
- var lastErr error
461
- for _ , member := range members {
462
- ips , err := resolver .LookupIPAddr (ctx , member .Hostname )
463
- if err != nil {
464
- lastErr = err
465
- continue
466
- }
467
-
468
- for _ , addr := range ips {
469
- if addr .IP .String () == ip {
470
- return & member , nil
471
- }
472
- }
473
- }
474
-
475
- if lastErr != nil {
476
- return nil , fmt .Errorf ("no matches found for %s, and error encountered: %s" , ip , lastErr )
477
- }
478
-
479
- return nil , nil
480
- }
481
-
482
434
func (r * RepMgr ) ResolveMemberOverDNS (ctx context.Context ) (* Member , error ) {
483
- machineIds , err := r .InRegionPeerMachines (ctx )
435
+ ips , err := r .InRegionPeerIPs (ctx )
484
436
if err != nil {
485
437
return nil , err
486
438
}
487
439
488
440
var target * Member
489
441
490
- for _ , machineId := range machineIds {
491
- if machineId == r .MachineID {
442
+ for _ , ip := range ips {
443
+ if ip . String () == r .PrivateIP {
492
444
continue
493
445
}
494
446
495
- conn , err := r .NewRemoteConnection (ctx , r . machineIdToDNS ( machineId ))
447
+ conn , err := r .NewRemoteConnection (ctx , ip . String ( ))
496
448
if err != nil {
497
449
continue
498
450
}
499
451
defer func () { _ = conn .Close (ctx ) }()
500
452
501
- member , err := r .MemberByHostname (ctx , conn , r . machineIdToDNS ( machineId ))
453
+ member , err := r .MemberByHostname (ctx , conn , ip . String ( ))
502
454
if err != nil {
503
455
continue
504
456
}
@@ -525,21 +477,6 @@ func (r *RepMgr) InRegionPeerIPs(ctx context.Context) ([]net.IPAddr, error) {
525
477
return privnet .AllPeers (ctx , targets )
526
478
}
527
479
528
- func (r * RepMgr ) InRegionPeerMachines (ctx context.Context ) ([]string , error ) {
529
- machines , err := privnet .AllMachines (ctx , r .AppName )
530
- if err != nil {
531
- return nil , err
532
- }
533
-
534
- var machineIDs []string
535
- for _ , machine := range machines {
536
- if machine .Region == r .PrimaryRegion {
537
- machineIDs = append (machineIDs , machine .Id )
538
- }
539
- }
540
- return machineIDs , nil
541
- }
542
-
543
480
func (r * RepMgr ) HostInRegion (ctx context.Context , hostname string ) (bool , error ) {
544
481
ips , err := r .InRegionPeerIPs (ctx )
545
482
if err != nil {
@@ -577,11 +514,3 @@ func (r *RepMgr) UnregisterMember(member Member) error {
577
514
func (r * RepMgr ) eligiblePrimary () bool {
578
515
return r .Region == r .PrimaryRegion
579
516
}
580
-
581
- func (r * RepMgr ) machineIdToDNS (nodeName string ) string {
582
- if len (nodeName ) != 14 {
583
- panic ("invalid machine id" )
584
- }
585
-
586
- return fmt .Sprintf ("%s.vm.%s.internal" , nodeName , r .AppName )
587
- }
0 commit comments