
RAG 시스템을 구축하면서 이중화 구성까지 고려하게 되었고, 그 과정에서 벡터 DB를 단일화된 서버에 보관할 필요성이 생겼다. 우리 회사는 GCP를 사용하고 있어, NFS 서버는 Google Filestore를 활용해 구축하기로 결정했다.1. NFS 클라이언트 설치하기(ubuntu)sudo apt updatesudo apt install nfs-common2. NFS 서버 인스턴스 생성하기filestore에서 인스턴스를 생성 후 인스턴스 개요를 확인하면 NFS 마운트 지점을 확인 할 수 있다.예) 10.132.194.66:/vector_data (해당 인스턴스는 이미 삭제 되었습니다) 3. 마운트할 로컬 디렉토리 만들기 sudo mkdir -p /mnt/nfs_vector 4. 마운트sudo mount..
운영 중인 서비스는 Nginx를 리버스 프록시로 사용하고 있고, 백엔드 서비스들은 Docker Compose로 올라간다.nginx와 백엔드 서비스는 동일한 custom network를 사용하며, 컨테이너명으로 통신을 한다. 그런데 서비스가 다 정상적으로 뜬 상태에서도 간헐적으로 Nginx에서 backend 연결 실패가 발생했다. 시기 상 컨테이너가 올라온 지 얼마 안되어 발생할 수 있는 수준이 아니라, 안정적으로 서비스를 하고 있는데도 아주 자주 발생했다. connect() failed (111: Connection refused) while connecting to upstream 처음엔 "백엔드가 죽었나?" 했는데, 모든 컨테이너는 살아있었다. 죽어있었으면 운영도 안되었겠지... 리소스 부족이나 GC..

과거에 Git 태그를 푸시하면 Docker 이미지를 생성하고 자동으로 Nexus에 푸시하는 파이프라인을 구축한 적이 있다. 하지만 당시 우리 시스템은 Docker 기반이 아니었고, 특정 프로젝트에서만 Docker 이미지를 필요로 했기 때문에 자동 배포까지는 구현하지 않았다. 그러나 이번에 서버 이전을 진행하면서 여러 가지를 개선하는 과정에서, 서비스 운영을 Docker 기반으로 전환하게 되었다.일반적으로 CI/CD에서는 이미지 생성 및 푸시 후 자동으로 서버에 배포하는 방식을 많이 사용하는 것 같았다. 이는 개발 서버나 스테이징 환경에 적합하다고 생각되었고 운영 서버에서는 보다 신중한 배포가 필요하다고 판단했다.그래서 내가 구현하려는 방식은, Nexus에서 Docker 이미지 태그 목록을 가져와 특정 태..

Docker 프라이빗 레지스트리를 구축하고 GCP 로드 밸런서와 Nginx를 활용하여 서비스 하는 중 로그인이 안되는 현상이 발생했다. 1. 환경 구성GCP 로드 밸런서(L7)VM 인스턴스: Nginx와 Docker Registry가 Docker 컨테이너로 실행트래픽 흐름:클라이언트는 https://도메인 로 접근로드 밸런서는 SSL 종료 후, 내부적으로 HTTP(포트 80)로 VM의 Nginx에 요청을 전달Nginx는 해당 요청을 Docker Registry로 프록시Nginx 설정 server { listen 80; server_name 도메인; location / { proxy_pass http://nexus:8081; proxy_set_heade..

Git 저장소를 AWS에서 GCP로 이전하면서 여러 가지 문제를 겪었다. 특히 대용량 저장소 이전에서 예상치 못한 난관이 많았고, 다양한 방법을 시도해 해결했다. 이번 글에서는 처음 시도한 방법과 실패한 이유, 그리고 최종적으로 성공한 방법을 정리해보려 한다. Git 저장소 이전 방법1. 기본적인 Git 이전 방법가장 먼저 아래와 같은 방식으로 저장소를 이전했다.1) 기존 저장소를 클론 (mirror 방식)git clone --mirror 2) 새로운 저장소에 푸시cd .gitgit remote set-url origin git push --mirror하지만... 대용량 저장소에서는 실패! 😭push 실패 원인과 해결 방법❌ 실패 원인: push 중 RPC 에러 발생파일 크기가 크면 아래와 같은 에..

AWS에서 GCP로 이전하는 작업 중에서 Bucket을 어떻게 옮겨야하나 고민이 많았다. 프로그램을 작성해야하나 고민 했지만 GCP에서는 손쉽게 이전 할 수 있는 방법을 제공하고 있다.개인적으로 GCP의 문서들은 보기 어렵다고 생각되는데 이번 가이드 만큼은 아주 쉬워서 따라하기에 무리가 없었다.1. AWS 작업하기1.1 CloudFront 배포 생성 🌐 🌟🌟AWS CloudFront는 콘텐츠 전송 네트워크(CDN, Content Delivery Network) 서비스로 전 세계에 분산된 엣지 로케이션(Edge Location)을 활용해서 웹 콘텐츠(이미지, 동영상, HTML, CSS, API 응답 등)를 빠르고 안전하게 전달하는 역할을 한다. CloudFront를 이용해 S3 데이터를 배포하려면 아..

SSH를 통해 서버에 접속 하려고 할 때 permissions 0664 for '.pem' are too open 나는 경우가 있다. 👀 이게 무슨 뜻일까?key 파일이 너무 오픈되어있다..? 무슨말인가 보니 프라이빗 키의 권한이 너무 개방적이어서 SSH가 보안상의 이유로 키를 무시하는 상황이다. 🔧 해결 방법이런 경우 해당 키 파일의 권한을 변경 해주면 된다.해당 키의 소유자만 해당 키를 읽을 수 있도록 변경해주었다.chmod 400 /var/jenkins_home/secrets/키파일.pem ✅ 이제 다시 접속해 보면?정상적으로 접속되는 걸 확인할 수 있다! 🚀

로그인 할 때 대소문자 구분 없이 로그인이 되는 사이트를 본 적이 있을 것이다. 그럴 때 마다, 사용자로 부터 받은 아이디를 모두 소문자나, 대문자로 치환하여 DB에 전달하는게 아닐까 라는 생각을 한 적이 있다.(collate가 모르는 사람이 구현을 했다면 이렇게 구현을 하지 않았을까..? 이렇게 생각 한 나처럼..) 그러나 collate를 알고 있다면 전혀 그럴 필요가 없다는 사실..! Collate란?문자 집합에 포함된 문자들을 어떻게 비교하고 정렬할지를 정의하는 콜레이션을 설정 하는 키워드- 문자열 데이터를 비교 할 때 대소문자를 구분할지 여부- 문자 간 정렬 순서를 정의- 언어별 특수 문자 처리 방식을 지원 Collate의 구조예) utf8mb4_general_ci- utf8mb4 : 문자 집합-..
- Total
- Today
- Yesterday
- java
- nginx
- softeer
- mysql
- 코딩테스트
- 오토에버코테
- 쿠버네티스
- Kubernetes
- centos
- 전자정부프레임워크
- 리액트
- 스프링
- 톰캣
- softeer java
- 자바스크립트
- 현대오토에버
- 아파치카프카
- 자바
- 자바코테
- gcp
- 현대코테
- Linux
- javascript
- 도커
- Spring
- 코테
- react
- springboot
- Docker
- tomcat
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |