๊ฐ์๊ธฐ ํ์๋คํํ ํ ์คํธ ์๋ฒ๊ฐ ์ ์์ด ์๋๋ค๊ณ ์ฐ๋ฝ์ด ์๋ค. ๋ถ๋ช ์ด์ ๋ ๋ฐฐํฌ workflow๊ฐ ๋์ํ๊ณ ์ ์ ์๋ํ๋ ๊ฒ์ ํ์ธํ๊ธฐ ๋๋ฌธ์ ์ด์ํด์ ๋ก๊ทธ๋ฅผ ํ์ธํ๋๋, ์ฒ์ ๋ณด๋ ๋ก๊ทธ๊ฐ ์์๋ค. ํ์ธํด๋ณด์.
Caused by: org.redisson.client.RedisAuthRequiredException: NOAUTH Authentication required.
NOAUTH Authentication required. ๋
NOAUTH Authentication required๋ ๋น๋ฐ๋ฒํธ๊ฐ ์ค์ ๋์ด ์์์๋ AUTH ์ค์ ์ด ์๋์์ด์ ๋ฐ์ํ๋ ์๋ฌ์ด๊ธฐ๋ ํ๋ค. ์ด๋ฅผ ํ์ธํ๋ ค๋ฉด redis-cli์ ์ ์ํด๋ณด์. ํ์๋ Docker container๋ก redis๋ฅผ ๊ด๋ฆฌํ๊ณ ์์ผ๋ฏ๋ก ์กฐ๊ธ ๋ค๋ฅธ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
$ sckwon770@ubuntu:~/jnu-parking/storage$ sudo docker exec -it 77d53a9a5bb8 redis-cli
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.
AUTH ์ค์ ์ด ๋ฌธ์ ๋ผ๋ฉด ์๋ต์ผ๋ก pong์ด ์์ผํ์ง๋ง, ์์ ๊ฐ์ ๋๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
๊ทธ๋ฐ๋ฐ ์ด์ํ๋ค. ์ด๋๊น์ง ๋ณ๋๋ก ๋ ๋์ค ์ค์ ์ ๊ด๋ฆฌํ์ง ์์, ๋ํดํธ๋ก ํจ์ค์๋๊ฐ ์ค์ ๋์ง ์์์ฑ๋ก ์ฌ์ฉํ๋ค.
์์ธ ํ์
- ์ฌ๋ฌ ๋ช ์ด ๊ฐ๋ฐํ๋ ํ๋ก์ ํธ์ด๋, ๋๊ตฐ๊ฐ ์ค์ ํ์ผ์ ๋์ ํ๊ฑธ๊น?
docker-compose.yml์ ํ์ธํ๋, ์ด๊ธฐ์ ์์ฑํ ๊ทธ๋๋ก์ด๋ค.
version: '3.8'
services:
redis:
image: redis:alpine
container_name: redis_container
ports:
- "6379:6379" # ๋ก์ปฌํธ์คํธ์์ 6380 ํฌํธ๋ก Redis์ ์ ๊ทผ
networks:
- jnu-parking
volumes:
- redis_data:/data
volumes:
redis_data:
networks:
jnu-parking:
external: true
~
- ๋ํดํธ ํจ์ค์๋๊ฐ ๋ณ๋๋ก ์กด์ฌํ๋๊ฑธ๊น?
์ด์๋ํ ๊ณต์ ๋ฌธ์๋ ์์์ง๋ง, docker-library-redis repo์ issues์์ redis-lab ๊ฐ๋ฐ์๊ฐ ๋ต๋ณํ ๋ด์ฉ์ด ์๋ค. ๋ํดํธ๋ ๋น๋ฐ๋ฒํธ๊ฐ ์๋ ๊ฒ์ด ๋ง๋ค.
- ์ปจํ ์ด๋ ์์ฑ์์ ๋ณ๋๋ก ์ค์ ํ์ผ์ ๋งคํํ์ง ์์์ผ๋, ๋ณ๋๋ก ์์ฑ๋๋ ์ค์ ํ์ผ์ด ์๊ฑฐ๋ ๋๊ตฐ๊ฐ ์์ ํ๋๊ฑธ๊น?
์ปจํ ์ด๋ ๋ด๋ถ์ redis.conf ํ์ผ ์์ฒด๊ฐ ์กด์ฌํ์ง ์์๋ค.. ๊ธฐ๋ฌํ ์ผ์ด ์๋ ์ ์๋ค...
/data # cd /etc/redis
/bin/sh: cd: can't cd to /etc/redis: No such file or directory
/bin/sh: cd: can't cd to /usr/local/etc/redis: No such file or directory
/ # sudo find / -name "redis.conf"
/bin/sh: sudo: not found
ํด๊ฒฐ ๋ฐฉ๋ฒ
์ผ๋ฐ์ ์ผ๋ก ์๋ ค์ง ๋ด์ฉ๋๋ก ๊ตฌ์ถ๋์ด ์์์๋ ๋ฌธ์ ๊ฐ ๋ฐ์๋๊ณ ์๋ ์ํ์ด๋ค. ๊ตฌ์ถ๋ ์์คํ ๋ค์ด ์คํ์์ค์ด๋ฏ๋ก ๊ฒฐํจ์ด ์์์๋ ์๊ณ ์๋ฃ๊ฐ outdated๋์ด ๋ณ๊ฒฝ์ฌํญ์ด ์๋ ๊ฒ์ผ์๋ ์๋ค. ๋ค๋ง, ํ๋ ํ์คํ ๊ฒ์ ์์คํ ์ด ๋ํดํธ ๊ฐ์ ์์กดํ๊ณ ์๋ ๊ฒ์ ์ฌ๋ฐ๋ฅธ ๋ด์ฉ์ด ์๋๋ค. ์ธ์ ๋ผ๋ ๋ฐ์ํ ๋ฌธ์ ์๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
๋ฐ๋๋ก ๋ช ์์ ์ผ๋ก redis.conf๋ฅผ ๋งคํํ๊ณ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํด ํด๊ฒฐํด๋ณด์.
์ปจํ ์ด๋์ redis.conf์ ๋ํด ๋งคํ๊ฐ์ ์ถ๊ฐํ๊ณ
version: '3.8'
services:
redis:
image: redis:alpine
container_name: redis_container
ports:
- "6379:6379" # ๋ก์ปฌํธ์คํธ์์ 6380 ํฌํธ๋ก Redis์ ์ ๊ทผ
networks:
- jnu-parking
volumes:
- redis_data:/data
- ./redis.conf:/etc/redis/redis.conf
volumes:
redis_data:
networks:
jnu-parking:
external: true
~
redis.conf ๋ด์ฉ์ ์์ฑํ์. redis.conf ํ์ผ์ ๊ณต์ ์์๋ (๋งํฌ) ์์ ํ์ธํ ์ ์๋ค. ํ์์ ๊ฒฝ์ฐ ์ ์ ๋ฆฌ๋์ด ์๋ ํฌ์คํ ์ ์ค์ ํ์ผ์ ์ฐธ๊ณ ํ๋ค.
# ์ฐ๊ฒฐ ๊ฐ๋ฅํ ๋คํธ์ํฌ(0.0.0.0 = Anywhere)
bind 0.0.0.0
# ์ฐ๊ฒฐ ํฌํธ
port 6379
# Master ๋
ธ๋์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ๋น๋ฐ๋ฒํธ
requirepass redis
# ์ต๋ ์ฌ์ฉ ๋ฉ๋ชจ๋ฆฌ ์ฉ๋(Default : ์์คํ
์ ์ฒด ์ฉ๋)
maxmemory 2gb
# ์ค์ ๋ ์ต๋ ์ฌ์ฉ ๋ฉ๋ชจ๋ฆฌ ์ฉ๋์ ์ด๊ณผํ์๋ ์ฒ๋ฆฌ ๋ฐฉ์
# - noeviction : ์ฐ๊ธฐ ๋์์ ๋ํด error ๋ฐํ (Default)
# - volatile-lru : expire ๊ฐ ์ค์ ๋ key ๋ค์ค์์ LRU algorithm ์ ์ํด์ ์ ํ๋ key ์ ๊ฑฐ
# - allkeys-lru : ๋ชจ๋ key ๋ค ์ค LRU algorithm์ ์ํด์ ์ ํ๋ key ์ ๊ฑฐ
# - volatile-random : expire ๊ฐ ์ค์ ๋ key ๋ค ์ค ์์์ key ์ ๊ฑฐ
# - allkeys-random : ๋ชจ๋ key ๋ค ์ค ์์์ key ์ ๊ฑฐ
# - volatile-ttl : expire time(TTL)์ด ๊ฐ์ฅ ์ ๊ฒ ๋จ์ key ์ ๊ฑฐ (minor TTL)
maxmemory-policy volatile-ttl
# RDB ์ค์ (์ฃผ๊ธฐ์ ๋ฐฑ์
)
# 15๋ถ ์์ ์ต์ 1๊ฐ ์ด์์ key๊ฐ ๋ณ๊ฒฝ๋์์ ๋
save 900 1
# 5๋ถ ์์ ์ต์ 10๊ฐ ์ด์์ key๊ฐ ๋ณ๊ฒฝ๋์์ ๋
save 300 10
# 60์ด ์์ ์ต์ 10000๊ฐ ์ด์์ key๊ฐ ๋ณ๊ฒฝ๋์์ ๋
save 60 10000
# AOF ์ค์ (์ฐ๊ธฐ์ ๋ํ ๋ก๊ทธ ํ์ผ ์ ์ฅ)
## AOF ์ฌ์ฉ ์ฌ๋ถ
# appendonly yes
# ์ ์ฅํ AOF ํ์ผ๋ช
# appendfilename appendonly.aof
# ๋์คํฌ์ ๋๊ธฐํ ์ฒ๋ฆฌ ๋ฐฉ์
# - always : AOF ๊ฐ์ ์ถ๊ฐํ ๋๋ง๋ค fsync๋ฅผ ํธ์ถํด์ ๋์คํฌ์ ์ฐ๊ธฐ
# - everysec : ๋งค์ด๋ง๋ค fsync๋ฅผ ํธ์ถํด์ ๋์คํฌ์ ์ฐ๊ธฐ
# - no : OS๊ฐ ์ค์ sync๋ฅผ ํ ๋๊น์ง ๋ฐ๋ก ์ค์ ํ์ง ์์
# appendfsync everysec
## Replication ๊ด๋ จ ์ค์
## Slave Redis ์ค์
#slaveof 127.0.0.1 6380
Redis ์ปจํ ์ด๋๋ฅผ ์๋ก ๋์ฐ๊ณ ํ์ธํด๋ณด์. ์ ์์ ์ผ๋ก PONG ์๋ต์ด ์จ๋ค.
127.0.0.1:6379> ping
PONG
๋ง์ง๋ง์ผ๋ก Spring ๊ธฐ๋์ ์ฌ์ฉ๋๋ .env ํ์ผ์๋ redis_password ๊ฐ์ ๋ฃ๊ณ , ์ฌ๊ธฐ๋ํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ค!