๐Ÿค– Backend/Database

Caused by: org.redisson.client.RedisAuthRequiredException: NOAUTH Authentication required. ์›์ธ ๋ฐ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

sckwon770 2024. 9. 29. 17:09

๊ฐ‘์ž๊ธฐ ํŒ€์›๋“คํ•œํ…Œ ํ…Œ์ŠคํŠธ ์„œ๋ฒ„๊ฐ€ ์ ‘์†์ด ์•ˆ๋œ๋‹ค๊ณ  ์—ฐ๋ฝ์ด ์™”๋‹ค. ๋ถ„๋ช… ์–ด์ œ๋„ ๋ฐฐํฌ 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 ๊ฐ’์„ ๋„ฃ๊ณ , ์žฌ๊ธฐ๋™ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค!