마제스터치 컨버터블2 을 사용하고 있어서 기록으로 작성함. 현재 이 커보드는 단종되서 더 이상 생산되지 않음. 내가 가지고 있는 것은 저소음 적축임.
Harbor 업데이트 하기
현재 개인적으로 Harbor 를 사용하고 있다. 별로 중요하지 않은 프로젝트여서 크게 신경쓰지 않는 저장소인데, 그래도 이래저래 테스트를 하는데 유용하다. Harbor 를 사용하다가 새로운 버전이 출시되어서 어떻게 업데이트를 했는지를 기록으로 남겨둔다. Harbor Stop Harbor 를 정지 시켜야 한다. Harbor 는 Docker-compose 기반으로 작동됨으로 docker-compose 명령어를 이용해서 다음과 같이 정지를 시켜줘야 한다. Backup 혹시 잘못됐을때를 대비해 Backup 을 해준다. 디렉토리를 그냥 복사해주는 것으로 하면 된다. 새로운 버전 다운로드 Docker 명령어를 이용해서 새로운 버전의 harbor 이미지를 다운로드 한다. 데이터베이스 Migration 하기 기존의 데이터베이스를 […]
유용한 Git 명령어
유용한 Git 명령어 정리. Git 설정 대부분 Git 설정은 명령어로 한다. 하지만 Git bash 를 이용할 경우에 설정 파일을 직접 편집하도록 할 수도 있다. 브랜치 리스트 로컬 브랜치 삭제 원격 브랜치 삭제 원격 브랜치 삭제는 branch 명령어를 사용하지 않는다. 로컬에 원격 브랜치 목록 업데이트 원격 브랜치 목록 보기를 했을때에 실제 원격 브랜치와 차이가 있을 수 있다. 이것때문에 헷깔릴 수 있는데, 원격 브랜치 목록을 로컬에 반영하기 위해서는 다음과 같이 해준다. prune 을 자동으로 되도록 설정할 수 있다. git 설정 파일에서는 다음과 […]
Spring boot 에 systemd 유닛 만들기
요즘 프로젝트를 하고 있는데, 역시나 자바 시스템이 있다. Spring Boot3 을 사용하고 있고 자바 17을 쓰는등 나름대로 괜찮은 환경에서 개발이 이루어지고 있다. 그런데, 이것을 서버에서 배포를 하고 Spring Boot 를 실행해야 하는데, 어떻게 하나 봤더니 초보자 수준도 못 벗어나는 설정을 하고 있으니… 안타까운 마음에 어떻게 하는 것이 좋은 것인지 한번 적어봤다. Spring boot, jar 실행 파일 Spring Boot3 를 컴파일 하면 jar 파일 나온다. 그리고 별다른 서버 없이도 바로 실행하고 접속이 가능해 진다. 한가지 재미있는 사실은 많은 사람들이 Spring boot3 […]
CloudWatch Log 총 용량 계산하기
CloudWatch Log 의 총 용량의 사용량을 알아야 얼마 정도 비용이 나가는지를 추정할 수 있다. CloudWatch Log 화면에서 총 용량을 보여주면 고맙겠지만 그런게 없다보니 비용이 얼마정도 나가는지도 모르게된다. Python 을 이용해서 총 용량을 계산해보자. nextToken AWS SDK 를 사용하는데 있어 항상 나오는 것이 nextToken 이다. AWS 는 무제한으로 API Call 을 하도록 허용하지도 않고 결과의 모두를 출력해주지 않는다. 다음을 보자. describe_log_groups 메소드에 인자값으로 limit 가 있다. 이 값은 Default 값이 있다. 문제는 이 인자값을 50 이상을 지정할 수가 없다는 것이다. CloudWatch […]
node_exporter 설치하기
node_exporter 는 OS 에 대한 각종 지표를 수집해주는 exporter 다. Prometheus 가 읽어 갈수 있도록 작은 웹서버로 작동된다. 설치야 바이너리로 배포를 하기 때문에 아키텍쳐에 맞게 다운받아서 설치를 하면 된다. 압축 풀고 시작하면 그만일 정도로 아주 간단하다. Prometheus 에 exporter들은 대부분 간단하다. 복잡하게 설치하지는 않는다. 그런데… 고려해야하는 부분이 존재한다. 일단, 설치부터… Download & Install 다운로드는 Github 저장소에 받으면 된다. node_exporter 디렉토리가 보이고 그 안에 node_exporter 바이너파일이 있다. 이것을 적당한 곳으로 이동시키놓으면 끝난다. 어떻게 시작/중지 할건지… 여기서 이제 고민을 해야한다. 많은 사람들은 […]
[번역] Nginx $proxy_add_x_forwarded_for and real_ip_header
이글은 다음의 글을 번역한 것입니다. 나는 대략 다음과 같은 구조로 Nginx 와 또 다른 프론트 로드 밸런서 뒤에 webapp 을 가지고 있다. Client(a.a.a.a) -> LB(b.b.b.b) -> NGX(c.c.c.c) -> WEBAPP(d.d.d.d) 이것이 내 Nginx 설정의 일부다. 1. 로드 밸런서는 X-Forwarded-For 필드에 Client IP 를 추가 한다. 2. Nginx 는 X-Forwarded-For 헤더에서 LB IP(b.b.b.b) 를 생략하고 Client 에 Real IP를 찾는데, $remote_addr 은 b.b.b.b 에서 a.a.a.a 로 변경되고 따라서 proxy_set_header X-Real-IP $remote_addr 은 맞는 설정이다. (내가 원하는 설정대로다.) 그런데, Nginx 는 X-Forwarded-For 헤더를 […]
X-Forwared-For 에서 Client IP 얻기
Spring Boot3 에서 Reactive Web 이 아닌 그냥 Web 을 한다고 하면 Servlet 기반이고, Spring Boot 앱을 실행했을 경우 기본적으로 Embedded Tomcat 이 구동된다. 만일 다음과 같은 환경이라고 가정해 보자. Client —-> AWS ALB ——> Nginx —–> Spring Boot3 (Embedded Tomca) ‘어느 미친놈이 저런 구조로 아키를 설계하고 구현하냐?’ 라고 비아냥될 수도 있지만 실제로 이렇게 하는 곳이 있다. 이런 구조에서 Spring Boot3 개발자은 다음과 같은 요구사항을 인프라에 전달 한다. Real Ip 를 가지고 올 수 있게 해주세요. Spring Boot3 에서 Real […]