전체 글

개발과 운영, 박찬우의 기술 블로그입니다.
DevOps/open source_오픈소스

[NGINX] nginx reverse proxy

1. 개요현재 매 월마다 서비스 정기점검을 진행하고 있다. 보통 새벽시간대에 점검을 진행하는데 이 때 일반 사용자는 점검중인 서비스에 접근할 수 없도록 점검 페이지로 이동해야 하며, 개발자, QA등 테스트 인원들은 동일 도메인에 정상적으로 접근하도록 작업이 필요한 상황이다. 이에 점검 시간 중 사내 대역에서는 서비스에 정상적으로 접근하고 그 외 외부 접근은 모두 점검페이지로 접근하도록 Nginx Proxy 서버를 구축하려 한다. 2. proxy란?proxy : 대리, 대신, 대리권  출처: 동아출판 프라임 영한사전 프록시란 ‘대리’라는 단어 뜻 그대로 통신이나 응답을 중계하여 대리로 수행하는 것을 뜻한다.이 프록시 기능을 하는 주체를 프록시 서버(Proxy Server)라고 한다.  2.1 proxy 서..

DevOps/open source_오픈소스

[NGINX] 기본 구성과 Configuration

1.개요지금까지 내가 운영했던 대부분의 웹 서버는 nginx였다. 그리고 이번에 정기점검 페이지 전환 작업을 위한 proxy 서버 또한 nginx로 구성하게 되었는데 이렇게 nginx를 많이 사용하면서 제대로 공부한 적은 없던 것 같아 이번 기회에 한번 정리를 해보려 한다. 2. nginx의 기본 원리Nginx는 하나의 master process와 하나 이상의 worker process로 구성되어 있다.master process : configuration file을 읽고 실행하며 worker process들을 관리worker process : 유저가 요청한 request에 대한 실제 작업을 수행 즉, Nginx는 멀티 프로세스 싱글 스레드 방식으로 동작한다.* 비동기 이벤트 방식으로 동작하여 메모리 사..

회고

[회고] 24년 3분기 회고

보호되어 있는 글입니다.

DevOps/Monitoring_모니터링

[Prometheus] 프로메테우스 config reload

👍🏼 요약HTTP POST 요청 혹은 프로세스 시그널(kill) 명령으로 재시작 없이 reload가 가능하다.HTTP POST 방식curl -X POST http://localhost:9090/-/reload프로메테우스 설정에서 Lifecycle 옵션이 활성화 되어있어야 한다.프로세스 시그널kill -SIGHUP [PID]    kill -1 [PID](두 명령 동일함)ps -ef | grep [process 이름]  해당 명령으로 PID 확인 가능 🔃 프로메테우스 config reload💡프로메테우스 구성/운영 중 감시 대상을 변경하거나 알람 role를 추가하는 등 프로메테우스 설정을 변경해야 하는 경우가 존재한다. 본인의 경우 현재 컨테이너로 동작중에 있어 config 파일을 수정하고 재시작을..

IaC/Terraform_테라폼

[Terraform] Module (모듈 작성 및 호출, 모듈 소스 관리)

💡cloudNet@ 팀의 가시다 님이 진행하는 Terraform 101 Study 4기 5주차 내용으로,[테라폼으로 시작하는 IaC] 도서를 참조하였습니다. 감사합니다.. Module테라폼으로 인프라와 서비스를 관리하면 시간이 지날수록 구성이 복잡해지고 관리하는 리소스가 늘어나게 된다. 테라폼의 구성 파일과 디렉터리 구성에는 제약이 없기 때문에 단일 파일 구조상에서 지속적으로 업데이트 할 수 있지만 다음과 같은 문제가 발생한다.테라폼 구성에서 원하는 항목을 찾는 것이 점점 어려워짐리소스들 간의 연관 관계가 복잡해질수록 변경 작업의 영향도를 분석하기 위한 노력이 늘어남개발/스테이징/프로덕션 환경으로 구분된 경우 비슷한 형태의 구성이 반복되어 업무 효율이 줄어듬새로운 프로젝트를 구성하는 경우 기존 구성에서..

DevOps/Monitoring_모니터링

[Prometheus] 프로메테우스 데이터 기본 저장경로 (+docker compose)

요약일반적으로 사용하는 프로메테우스와 프로메테우스 Docker Image 의 메트릭이 저장되는 기본 경로가 다르다.프로메테우스의 기본 메트릭 저장 경로는 /prometheus/data 이다.docker image에는 --storage.tsdb.path 옵션이 붙어 /prometheu 로 경로가 변경된다.prometheus documenter에 나온 정보대로 기본 경로 /prometheus 로 지정하고 싶다면, 따로 --storage.tsdb.path=/prometheus 옵션을 부여해야 하니, 구성에 주의해야 한다.    현재 docker compose를 구성하여 프로메테우스를 구성 중 docker compose up -d 명령으로 컨테이너 실행을 진행하면 계속해서 컨테이너 마운트 포인트 관련한 에러가 ..

DevOps/Monitoring_모니터링

[Prometheus] 프로메테우스 데이터 마이그레이션 (docker volume 옵션)

1. 기존 프로메테우스 데이터 마이그레이션현재 테스트로 프로메테우스를 구성하여 node exporter를 통해 몇몇 리눅스 서버를 모니터링하고 있다.별 다른 설정 없이, 단순 프로메테우스 이미지를 컨테이너 실행 시킨 것 뿐이라, 데이터 등도 컨테이너 내부에서 쌓이고 있다.  대강 이런 형식인데, 문제는 모니터링 대상이 추가되거나, 구성에 변경이 있을 시 컨테이너를 재시작하면 쌓여있던 데이터가 전부 날아가는 것이다..(당연히,, 컨테이너를 새로 빌드하면 그렇지..) 그래서 지금 동작중인 해당 프로메테우스의 저장된 3개월치의 데이터를 가지고신규 구성한 컨테이너로 마이그레이션하는 작업을 진행해보겠다. 신규 구성 프로메테우스 구성은 기존 글을 참고하시라https://cwpack0730.tistory.com/10..

IaC/Terraform_테라폼

[Terraform] 프로바이더, State, 워크스페이스

💡cloudNet@ 팀의 가시다 님이 진행하는 Terraform 101 Study 4기 4주차 내용으로,[테라폼으로 시작하는 IaC] 도서를 참조하였습니다. 감사합니다.. 1. 프로바이더테라폼은 terraform 바이너리 파일을 시작으로 로컬 환경이나 배포 서버와 같은 원격 환경에서 원하는 대상을 호출하는 방식으로 실행된다. 이때 ‘원하는 대상’은 호출하는 방식이 서로 다르지만 대상의 공급자 즉, 프로바이더가 제공하는 API를 호출해 상호작용 한다. 여기서 테라폼이 대상과의 상호작용을 할 수 있도록 하는 것이 프로바이더이다.각 프로바이더의 API 구현은 서로 다르지만 이전 포스팅에서 살펴본 테라폼의 고유 문법으로 동일한 동작을 수행하도록 구현되어 있다. 프로바이더는 플러그인 형태로 테라폼에 결합되어 대..

IaC/Terraform_테라폼

[Terraform] 기본 사용법#6 (프로비저너, null_resource와 terraform_data, moved 블록, CLI 시스템 환경 변수)

💡cloudNet@ 팀의 가시다 님이 진행하는 Terraform 101 Study 4기 3주차 내용으로,[테라폼으로 시작하는 IaC] 도서를 참조하였습니다. 감사합니다.. 1. 프로비저너프로비저너는 프로바이더와 비슷하게 ‘제공자’로 해석되나, 프로바이더로 실행되지 않는 커맨드와 파일 복사 같은 역할을 수행한다. 예를 들어 클라우드에 리눅스 VM을 생성하는 것에 더해 특정 패키지를 설치해야 하거나 파일을 생성해야 하는 경우, 이것들은 테라폼의 구성과 별개로 동작해야 한다. 프로비저너로 실행된 결과는 테라폼의 상태 파일과 동기화도지 않으므로 프로비저닝에 대한 결과가 항상 같다고 보장할 수 없다.따라서 프로비저너 사용을 최소화 하는 것이 좋다. 프로비저너 종류에는 파일 복사와 명령어 실행을 위한 file, ..

IaC/Terraform_테라폼

[Terraform] 기본 사용법#5 (for, for_each, dynamic 반복문, 조건식, 함수)

💡cloudNet@ 팀의 가시다 님이 진행하는 Terraform 101 Study 4기 3주차 내용으로,[테라폼으로 시작하는 IaC] 도서를 참조하였습니다. 감사합니다.. 1. 반복문1.1 for_each 반복문for_each는 반복(for)을 할 때 타임 값에 대해 하나하나 each object로 접근한다는 의미이다.즉, 리소스 또는 모듈에서 for_each에 입력된 데이터 형태가 map 또는 set이면, 선언된 key 값 개수만큼 리소스를 생성하게 된다.for_each : 반복문으로, 선언된 key 값 개수만큼 리소스를 생성함 다음과 같이 tf파일을 생성하여 apply를 실핼해보겠다.# main.tfresource "local_file" "abc" { **for_each** = { **a =..

IaC/Terraform_테라폼

[Terraform] count 실습 (aws ec2, vpc, subnet 생성 시나리오) +cloudnet 스터디 악분님 제공

💡cloudNet@ 팀의 가시다 님이 진행하는 Terraform 101 Study 4기 2주차 내용으로,[테라폼으로 시작하는 IaC] 도서를 참조하였습니다. 감사합니다.. cloudnet 스터디 악분님이 count를 실습해볼 수 있는 좋은 시나리오를 공유해주셨습니다. (감사합니다)한번 따라서 정리해보도록 하겠습니다. 1. count 실습 (스터디 악분님 제공)다음과 같이 실습환경을 구성한다. 총 10개의 시나리오를 통해 학습한 내용을 확인해 보겠다. 시나리오 1. aws_subnet- AWS VPC Subnet 테라폼 코드 작성- 요구사항 : subnet cidr를 변수로 입력 다음과 같이 main.tf, variables.tf, terraform.tfvars 총 3개의 파일을 작성한다.# main.t..

IaC/Terraform_테라폼

[Terraform] 기본 사용법#4 (local 지역값, 출력 output, 반복문)

💡cloudNet@ 팀의 가시다 님이 진행하는 Terraform 101 Study 4기 2주차 내용으로,[테라폼으로 시작하는 IaC] 도서를 참조하였습니다. 감사합니다.. 1. local (지역값)코드 내에서 사용자가 지정한 값 또는 속성 값을 가공해 참조 가능한 local (지역 값) 은 외부에서 입력되지 않고, 코드 내에서만 가공되어 동작하는 값을 선언한다.‘local’은 입력 변수와 달리 선언된 모듈 내에서만 접근 가능하고, 변수처럼 실행 시에 입력받을 수 없다. 로컬은 사용자가 테라폼 코드를 구현할 때 값이나 표현식을 반복적으로 사용할 수 있는 편의를 제공한다. 하지만 여러 곳에서 자주 사용되는 경우 실제 값에 대한 추적이 어려워지므로 유지 관리 측면에서 부담이 발생할 수 있다. 주의할 것!! ..

cwpack0730
Woo DEV