@@ -95,17 +95,26 @@ func NewManager(properties engines.Properties) (engines.DBManager, error) {
9595 return nil , err
9696 }
9797 mgr .currentRedisHost = fixPodIP
98+ case viper .IsSet ("LOAD_BALANCER_ENABLED" ):
99+ lbHostInfo := viper .GetString ("REDIS_ADVERTISED_LB_HOST" )
100+ svcHosts := strings .Split (lbHostInfo , "," )
101+ for _ , v := range svcHosts {
102+ items := strings .Split (v , ":" )
103+ if getIndex (items [0 ]) == getIndex (mgr .CurrentMemberName ) {
104+ mgr .currentRedisHost = items [1 ]
105+ break
106+ }
107+ }
98108 case viper .IsSet ("HOST_NETWORK_ENABLED" ) || viper .IsSet ("REDIS_ADVERTISED_PORT" ):
99109 mgr .currentRedisHost = viper .GetString ("KB_HOST_IP" )
100- if viper .IsSet ("REDIS_ADVERTISED_PORT" ) {
101- port , err := mgr .getAdvertisedPort (viper .GetString ("REDIS_ADVERTISED_PORT" ))
102- if err != nil {
103- return nil , err
104- }
105- mgr .currentRedisPort = port
110+ }
111+ if viper .IsSet ("REDIS_ADVERTISED_PORT" ) {
112+ port , err := mgr .getAdvertisedPort (viper .GetString ("REDIS_ADVERTISED_PORT" ))
113+ if err != nil {
114+ return nil , err
106115 }
116+ mgr .currentRedisPort = port
107117 }
108-
109118 majorVersion , err := getRedisMajorVersion ()
110119 if err != nil {
111120 return nil , err
@@ -198,15 +207,14 @@ func getFixedPodIP(podFQDN string) (string, error) {
198207 return "" , fmt .Errorf ("failed to get IP address for %s" , podFQDN )
199208}
200209
210+ func getIndex (name string ) string {
211+ items := strings .Split (name , "-" )
212+ return items [len (items )- 1 ]
213+ }
214+
201215func (mgr * Manager ) getAdvertisedPort (redisAdvertisedPort string ) (string , error ) {
202216 // redisAdvertisedPort: pod1Svc:advertisedPort1,pod2Svc:advertisedPort2,...
203217 addrList := strings .Split (redisAdvertisedPort , "," )
204-
205- getIndex := func (name string ) string {
206- items := strings .Split (name , "-" )
207- return items [len (items )- 1 ]
208- }
209-
210218 for _ , addr := range addrList {
211219 host := strings .Split (addr , ":" )[0 ]
212220 port := strings .Split (addr , ":" )[1 ]
0 commit comments