반응형
2025.03.23 - [server] - Redis Sentinel 세팅
Redis Sentinel 세팅
Linux Ubuntu 기반으로 작성하였습니다. OSUbuntu 24.04 ServerComputeMasterSlave-1Slave-2모든 서버에 Redis를 설치sudo apt updatesudo apt install redis-serversudo apt install redis-sentinel 모든 서버 설정sudo vi /etc/redis/redis.conf
xddsr123.tistory.com
- java
- 17
- kotlinVersion
- 1.9.25
- spring boot
- 3.4.0
- implementation("org.springframework.boot:spring-boot-starter-data-redis")
- 3.4.0
application.yml
spring:
datasource:
data:
redis:
password:
database:
lettuce:
pool:
min-idle:
max-idle:
max-active:
sentinel:
master:
nodes:
-
-
-
RedisConfigProperty.kt
import org.springframework.boot.context.properties.ConfigurationProperties
import org.springframework.boot.context.properties.EnableConfigurationProperties
import org.springframework.boot.context.properties.bind.ConstructorBinding
import org.springframework.stereotype.Component
@Component
@ConfigurationProperties(prefix = "spring.data.redis")
@EnableConfigurationProperties(RedisSentinelProperties::class)
class RedisConfigProperty {
lateinit var password: String
var database: Int = 0
lateinit var sentinel: RedisSentinelProperties
}
@ConfigurationProperties(prefix = "spring.data.redis.sentinel")
data class RedisSentinelProperties @ConstructorBinding constructor(
val master: String,
val nodes: List<String>
)
RedisConfig.kt
import com.planverse.server.common.config.property.RedisConfigProperty
import org.springframework.boot.context.properties.EnableConfigurationProperties
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.data.redis.connection.RedisNode
import org.springframework.data.redis.connection.RedisPassword
import org.springframework.data.redis.connection.RedisSentinelConfiguration
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory
@Configuration
@EnableConfigurationProperties(RedisConfigProperty::class)
class RedisConfig(
private val redisConfigProperty: RedisConfigProperty,
) {
@Bean("lettuceConnectionFactory")
fun lettuceConnectionFactory(): LettuceConnectionFactory {
val sentinelConfig = RedisSentinelConfiguration().apply {
master(redisConfigProperty.sentinel.master)
redisConfigProperty.sentinel.nodes.map {
sentinel(RedisNode.fromString(it))
}
password = RedisPassword.of(redisConfigProperty.password)
database = redisConfigProperty.database
}
return LettuceConnectionFactory(sentinelConfig)
}
}
반응형