AWS ElastiCache 시작하기
이번 글에서는 AWS ElastiCache를 생성하고 아주 간단한 실습을 하는 것을 정리해보겠습니다.
이번 실습에서는 Redis를 사용해서 할 것이기 때문에 Redis를 체크하겠습니다.
위의 노드 유형을 t2.micro(프리티어)로 해야 합니다! (Default로 되어 있는 거 쓰면 좋은 성능이라 요금 많이 나옵니다..)
보안그룹은 따로 생성해서 지정해주어도 되고 기존이 6379 포트가 열려있는 보안그룹이 있다면 그것을 사용해도 됩니다.(저도 열려있는 보안그룹이 있기 때문에 그것을 사용하겠습니다.)
그리고 나머지는 Default로 놓고 생성하겠습니다. 그러면 위와 같이 생성이 되는데 5분 정도 기다려야 생성이 완료됩니다.
EC2 접속 후 redis-cli 설치하기
# make 하기 위핸 gcc 다운
sudo yum install -y gcc
# redis-cli 설치 및 make
wget http://download.redis.io/redis-stable.tar.gz && tar xvzf redis-stable.tar.gz && cd redis-stable && make
# redis-cli를 bin에 추가해 어느 위치서든 사용 가능하게 등록
sudo cp src/redis-cli /usr/bin/
## make 없을시 설치
- sudo apt install make
ElastiCache 접속하기
redis-cli -h 본인의엔드포인트 -p 6379
ex) redis-cli -h test-redis.7ab7ab.ab.0001.apn2.cache.amazonaws.com -p 6379
ElastiCache를 들어가면 위와 같이 엔드포인트가 존재합니다. 여기서 primary의 엔드포인트를 사용하여 접속하겠습니다.
위와 같이 Redis-cli를 사용하여 ElastiCache를 접속해서 간단한 테스트를 해보았습니다. 참고로 ElastiCache는 Local에서 접속이 불가능합니다! 그래서 EC2에서 접속 테스트를 해봐야 합니다.
Spring Boot에서 Redis 간단한 실습
간단하게 아키텍쳐로 표현하면 아래와 같습니다.
위의 아키텍쳐와 같이 실습을 진행해보겠습니다. 먼저 Spring Boot Gradle 기반의 프로젝트를 하나 만들겠습니다.
build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
}
그리고 Spring-Data-Redis 의존성을 추가하겠습니다. 그리고 Redis 설정 파일을 만들겠습니다.
Redis config 생성
@Configuration
public class RedisConfig {
@Value("${spring.redis.host}")
private String redisHost;
@Value("${spring.redis.port}")
private int redisPort;
@Bean
public RedisConnectionFactory redisConnectionFactory() {
LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisHost, redisPort);
return lettuceConnectionFactory;
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory());
redisTemplate.setKeySerializer(new StringRedisSerializer());
return redisTemplate;
}
}
LuttuceConnectionFactory를 사용해서 Redis 서버와 연결을 하고, RedisTemplate을 사용해서 데이터를 직렬화해서 저장하고 꺼내오는 역할을 하는 거 같습니다.(아직 입문이라.. 틀릴 수도 있습니다 ㅠ,ㅠ)
application.yml
spring:
redis:
host: 자신의 엔드포인트
port: 6379
위의 AWS ElasiCache의 엔드포인트를 적었다면 Github에 올리기 전에 꼭!! gitignore 등록을 하셔야 합니다.
Controller 코드
@RequiredArgsConstructor
@RestController
public class RedisController {
private final RedisService redisService;
@GetMapping("/")
public String test() {
redisService.redisString();
return "test";
}
}
위와 같이 루트 경로의 간단한 API를 하나 만들겠습니다.
Service 코드
@Slf4j
@RequiredArgsConstructor
@Service
public class RedisService {
private final RedisTemplate<String, Object> redisTemplate;
public void redisString() {
ValueOperations<String, Object> operations = redisTemplate.opsForValue();
operations.set("test", "test");
String redis = (String)operations.get("test");
log.info(redis);
}
}
간단하게 Redis에 key = test, value = test로 저장을 하는 코드를 작성했습니다. 그리고 해당 프로젝트의 jar 파일을 EC2로 올리겠습니다. (Local에서는 ElastiCache가 접속이 안되어서 EC2에서 테스트를 해야합니다.)
./gradlew clean build
Jar를 EC2에 올리는 것은 FileZila를 사용했는데 이 과정은 생략하겠습니다.
현재 EC2에 redis.jar 파일이 존재합니다. 이것을 실행시켜보겠습니다.
nohup java -jar redis-0.0.1-SNAPSHOP.jar &
그러면 위와 같이 8080 포트가 잘 실행되는 것을 볼 수 있습니다.
그리고 EC2 IP의 8080 포트로 접속해보면 위와 같이 응답이 에러 없이 잘 뜨는 것을 볼 수 있습니다.
EC2에서 다시 Redis-cli를 사용해서 ElasiCache에 접속해보겠습니다.
접속한 후에 아까 key=test, value=test로 했기 때문에 get test 했을 때 value가 test로 잘 반환되는 것을 볼 수 있습니다. 즉, 잘 저장이 된 것입니다.
출처 :
'[AWS] > ROG' 카테고리의 다른 글
[추천] [AWS Amazon Linux 2] Tomcat 8.5.64 컴파일 설치 & 서비스 등록 (0) | 2022.03.04 |
---|---|
SSH 접속 오류 : REMOTE HOST IDENTIFICATION HAS CHANGED - RSA key 오류 해결법 (0) | 2022.03.03 |
[AWS] Monitoring - 2. CloudWatch Agent 설치[Memory/Disk 수집] (0) | 2022.02.28 |
[AWS] AWS(아마존) EC2 (Linux,ubuntu,centos) Timezone 설정 (0) | 2022.02.28 |
[AWS] Winsdows 서버 PowerShell 스크립트 자동 실행 방법 (0) | 2022.02.23 |
댓글