SpringBoot/개인프로젝트

https 적용 후 무중단 배포가 안되는 문제

2023. 5. 2. 23:11
목차
  1.  

배포 시 스크립트 파일에 따라

 

application-real1.properties

server.port=8081
spring.profiles.include=real1,oauth,real-db
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect
spring.jpa.properties.hibernate.dialect.storage_engine=innodb
spring.session.store-type=jdbc

 

application-real2.properties

server.port=8082
spring.profiles.include=real2,oauth,real-db
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect
spring.jpa.properties.hibernate.dialect.storage_engine=innodb
spring.session.store-type=jdbc

 

8081과 8082 포트를 번갈아 가며 사용하게 되어 무중단 배포가 가능해진다. 하지만 https 적용 후 아래와 같이 profile.sh의 15 라인에 매개변수가 많다는 오류가 나온다.

 

profile.sh를 살펴보면 http://localhost/profile을 호출해서 현재 활성화 된 프로필 정보를 가져온다.

#!/usr/bin/env bash

# 쉬고 있는 profile 찾기: real1이 사용 중이면 real2가 쉬고 있고, 반대면 real1이 쉬고 있음

function find_idle_profile() {
    RESPONSE_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost/profile)

    if [ ${RESPONSE_CODE} -ge 400 ]  # 400보다 크면 (즉, 40x/50x 모두 포함)
    then
      CURRENT_PROFILE=real2
    else
      CURRENT_PROFILE=$(curl -s http://localhost/profile)
    fi

    if [ ${CURRENT_PROFILE} == real1 ]
    then
      IDLE_PROFILE=real2
    else
      IDLE_PROFILE=real1
    fi

    echo "${IDLE_PROFILE}"
}

# 쉬고 있는 profile의 port 찾기
function find_idle_port() {
    IDLE_PROFILE=$(find_idle_profile)

    if [ ${IDLE_PROFILE} == real1 ]
    then
      echo "8081"
    else
      echo "8082"
    fi
}
@RequiredArgsConstructor
@RestController
public class ProfileController {
    private final Environment env;

    @GetMapping("/profile")
    public String profile() {
        List<String> profiles = Arrays.asList(env.getActiveProfiles());
        List<String> realProfiles = Arrays.asList("real", "real1", "real2");
        String defaultProfile = profiles.isEmpty() ? "default" : profiles.get(0);

        return profiles.stream()
                .filter(realProfiles::contains)
                .findAny()
                .orElse(defaultProfile);
    }
}

 

하지만 이 상황에서 http://localhost/profile을 호출하면 301 Moved Permanently가 나온다. 이것 때문에 too many arguments 에러가 발생한 것이다.

 

이를 해결하기 위해 nginx의 설정을 변경해보았다.

 

 

기존

 

변경

 

변경하고 나니 현재 활성화된 프로필이 제대로 나온다.

그리고 여전히 http로 접속해도 https로 접속되며 자물쇠가 걸려있다.

 

그리고 다시 배포를 해보면

이번에는 제대로 프로필이 변경되어 real2가 나온다.

'SpringBoot > 개인프로젝트' 카테고리의 다른 글

에러조치  (0) 2023.05.01
기능 구현 : 댓글 삭제  (0) 2023.05.01
Ajax가 작동이 되지 않는 문제  (0) 2023.05.01
트위치 API 채널 검색 결과를 받아오는 과정에서의 문제  (0) 2023.05.01
AWS EC2 https 적용  (1) 2023.05.01
  1.  
'SpringBoot/개인프로젝트' 카테고리의 다른 글
  • 에러조치
  • 기능 구현 : 댓글 삭제
  • Ajax가 작동이 되지 않는 문제
  • 트위치 API 채널 검색 결과를 받아오는 과정에서의 문제
ewok
ewok
ewok
기록장
ewok
전체
오늘
어제
  • 분류 전체보기
    • 웹개발 교육
      • HTML
      • CSS
      • JavaScript
      • Database
      • Java
      • jQuery
      • Ajax
      • Bootstrap
      • jsp
      • Spring
      • MyBatis
      • 프로젝트
    • JAVA
    • SpringBoot
      • 기초
      • AWS
      • 개인프로젝트
    • Spring Security
    • JPA
    • 테스트코드
    • Error
    • CS
      • 컴퓨터 구조
      • 이산수학
    • 알고리즘
      • 정리
      • Java
    • SQL
    • 자격증
      • SQLD
      • 정보처리기사
    • Git

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • SQLD
  • base
  • branch
  • 노랭이
  • sqld 자격증
  • 버전 관리
  • 생성자
  • org.springframework.beans.factory.UnsatisfiedDependencyException
  • 브랜치
  • git bash
  • org.hibernate.tool.schema.spi.CommandAcceptanceException
  • sqld 합격
  • GIT
  • this
  • merge commit

최근 댓글

최근 글

hELLO · Designed By 정상우.
ewok
https 적용 후 무중단 배포가 안되는 문제
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.