개발일기/AWS

aws 로드밸런서_healthy 하게 만들기

챠나 2023. 6. 15. 05:44

우리 팀은 과부하와 동시성제어를 막기위해 기본서버와 채팅서버를 분리하여 기획하였다.

그래서 채팅서버도 따로 https의 배포가 필요했다!

기본서버는 CICD gitactions를 사용했지만 채팅서버는 시간관계상 git clone을 이용하여 배포하였다.

 

그래서 그런지 처음했던 배포랑은 달랐고 똑같이 되지않았다ㅠㅠㅠ

우선 채팅서버는 모든 controller가 토큰이 있어야 접근이 가능했고 그 restAPI 경로 때문에 Health check path에서 애를 엄청 먹었다.........

구글링하여 할 수 있는 방법을 다 동원해도 계속 unhealthy에 502 에러 아니며 403 에러가 미친듯이 났다ㅠㅠㅠㅠ

 

그래서 생각한 방법은 

일단 토큰이 필요없는 경로를 하나 만드는것!!!

swagger를 빌드에 추가하여 줬다!

implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'

이제 알았는데 swagger 코드 필요없이 요 implementation 한줄로 끝난다고.......................(개충격)

 

securityConfig에 permitAll 추가해주기!

		// 기본 설정인 Session 방식은 사용하지 않고 JWT 방식을 사용하기 위한 설정
		http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
		http.authorizeHttpRequests(authorize -> authorize
				.shouldFilterAllDispatcherTypes(false)
				.antMatchers(AUTH_WHITELIST)
				.permitAll()
				.antMatchers("/chat/**").permitAll() // 이부분 추가!!!!!!!
				.antMatchers("/test").permitAll()
				.anyRequest()
				.authenticated());// 그외의 요청들은 모두 인가 받아야 한다.

그리고 controller 부분에 api를 하나 추가해주었다.

	// 로드밸런서 확인용
	@GetMapping("/test")
	public ResponseEntity<Void> forCheck() {
		return chatService.forCheck();
	}

Health check path 에 "/test" 를 넣어서 세이브!!

로드밸런서의 리스너를 이렇게 추가하고 80port를 443port로 리다이렉트 시키는 규칙을 추가해주었다.

 

혹시나 하는 맘에 ubuntu 에서 

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

이것으로 포트포워딩을 로드벨런싱에 넣지 않고 80prot 가 지 알아서 8080port를 찾아가게 만들었다

뇌피셜 nginx를 쓰게되면 이 명령어로 포트포워드 시켜주는 것이 안전하다는 썰이 있음?

 

이 얼마나 보고싶던 헬씨한 녀석들이나규ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

 

 


 

참고

이 오류는 db가 터진것으로 db에 있는 내용물을 한번 싹 갈고 실행해야함