본문 바로가기

전체 글96

k3s 공식 사이트 https://docs.k3s.io/ k3s 는 rancher 에서 만든 경량화된 kubernetes # 마스터 노드 설치 curl -sfL https://get.k3s.io | sh - systemctl status k3s kubectl get node kubectl get all --all-namespaces # 워커 노드 조인 마스터 노드에서 토큰 확인 cat /var/lib/rancher/k3s/server/node-token curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh - 워커 노드에 고유한 호스트네임이 없는 경우 K3S_NODE_NAME 변수 추가 전달 # 배포 및 서비스 .. 2023. 4. 10.
haproxy(+keepalived)를 이용한 로드밸런싱 구성 웹서버가 다중으로 구성된 환경에서는 유입되는 트래픽을 다수의 웹서버로 전달할 로드밸런서의 역할이 필요합니다. 로드밸런서를 별도로 구성하지 않고 DNS 라운드로빈으로 1개 도메인에 여러 웹서버를 연결할 수도 있지만, 일반적인 네임서버에서 구성한 DNS 라운드로빈의 경우 헬스체크가 불가능한 단점이 있습니다. 로드밸런싱의 경우 물리장비인 L4 스위치를 통해 1개의 VIP(virtual IP)를 통해 수신한 트래픽을 다수의 real IP(웹서버)로 NAT하는 방식으로 사용하는 것이 일반적이나, haproxy 를 이용하여 소프트웨어적인 리버스 프록시 로드밸런서를 구성할 수 있는 방법이 있어 소개하고자합니다. haproxy 란 HAProxy는 여러 서버에 걸쳐 요청을 분산시키는 TCP 및 HTTP 기반 응용 프로그.. 2023. 4. 7.
AWS Lambda 를 이용하여 S3 버킷에 업로드된 이미지 자동 리사이징 최근 Lambda 서비스 관련 학습을 진행하고 있는데요. Lambda 를 이용한 대표적인 사용 예로 자주 등장하는 S3 버킷에 업로드된 이미지를 자동으로 리사이징하는 내용으로 학습 진행 후 내용 공유드리려고 합니다. 1. 로컬 환경에서 python 스크립트로 이미지 리사이징 테스트 Lambda 환경에서 이미지를 리사이징하기 앞서 연습삼아 로컬의 python 환경에서 이미지를 리사이징 해봅니다. python 에서 이미지를 리사이징하기 위해서는 Pillow 라는 모듈을 사용하기 때문에 설치 후 스크립트를 작성합니다. ## 모듈 설치 pip install Pillow ## 스크립트(resize.py) from PIL import Image import sys src_img=sys.argv[1] # 첫 번째 인.. 2023. 4. 6.
AWS 클라이언트 VPN AWS Network 섹션에 대한 학습 내용 공유합니다. Site-to-Site VPN 혹은 Trasit Gateway의 경우 온프레미스 라우터의 설정이 필요한 부분으로 직접 테스트가 어려워, AWS에서 제공하는 SSL VPN인 클라이언트 VPN 사용법에 대해 학습한 내용을 공유해드립니다. 클라이언트 VPN 엔드포인트 생성을 위한 자체서명 인증서(CA, 서버, 클라이언트) 생성 클라이언트 VPN은 openVPN과 유사하게 동작합니다. 때문에 클라이언트 vpn 엔드포인트 생성 시 서버 인증서 지정이 필요하며, 클라이언트 인증을 위해서는 아래 2가지 방법 중 한가지를 반드시 선택해야합니다. 1) 클라이언트에 대한 인증 방법으로는 클라이언트 인증서를 이용한 상호인증 방식 2) ActiveDirectory 혹은.. 2023. 4. 5.
terraform 을 통한 클라우드 인프라 관리 AWS의 클라우드포메이션처럼 AWS를 포함한 여러 클라우드 환경 및 컨테이너 환경의 인프라를 제어할 수 있는 infrastructure as code 도구인 terraform을 이용하여 AWS 인프라를 제어하는 방법에 대해 공유합니다. 설치(linux 기준) curl -O https://releases.hashicorp.com/terraform/0.13.5/terraform_0.13.5_linux_amd64.zip unzip terraform_0.13.5_linux_amd64.zip mv terraform /usr/bin/ chmod 755 /usr/bin/terraform terraform version 저는 AWS 외부에 있는 centos 상에서 테라폼을 사용했지만, MacOS에서도 쉽게 설치가 가능.. 2023. 4. 4.
s3 버킷에 php 코드를 통해 파일 업로드 Amazon S3로 파일을 업로드하기 위해서는 AWS에서 제공하는 GUI 콘솔을 이용하는게 가장 일반적인 사용 방법이지만, 지난 게시글에서 관리형 FTP 서비스인 AWS Transfer Family(비용 비쌈...)와 FTP 클라이언트 프로그램에서 S3 액세스를 지원하는 것을 확인했습니다. 오늘은 S3 버킷에 SDK(소프트웨어 개발 킷) for PHP를 이용하여 php 코드를 작성하고 버킷 리스트와 버킷에 포함된 오브젝트 리스트를 확인하고, 웹서버의 파일을 S3로 업로드하는 방법에 대해 알아보겠습니다. AWS SDK for PHP란 AWS SDK for PHP는 php 코드를 통해 AWS의 여러 서비스에 액세스하기 위한 개발 도구로 현재 버전은 3점대 버전입니다. 요구사항 AWS SDK for PHP를 .. 2023. 4. 3.
ProxySQL 을 통한 MySQL 쿼리 라우팅 설정 지난 게시글에서는 MySQL connector for Java 의 Replication 커넥션 기능을 사용하여 쓰기/읽기 DB로 쿼리를 분산하는 내용으로 공유를 진행했습니다. 하지만 MySQL connector for Java 의 Replication 커넥션 기능을 사용하는 경우 쿼리를 쓰기/읽기 DB 중 어느 DB로 보낼지 소스상에서 일일이 지정해줘야하는 점이 단점이었는데요. 이번 게시글에서는 쿼리 라우팅 기능이 포함된 오픈 소스 MySQL 프록시인 ProxySQL을 이용하여 Query Rule을 설정하고 설정할 룰에 따라 자동으로 쿼리를 라우팅하는 설정 방법을 공유하도록 하겠습니다. 1. ProxySQL이란 ProxySQL은 쿼리 라우팅 기능을 제공하는 MySQL 및 MySQL 포크(Percona, .. 2023. 4. 2.
node.js(express) app을 AWS 서버리스 환경(lambda, API gateway)으로 배포 최근 게시물을 통해 api 서버 구성 관련 내용을 공유해드렸는데요. 오늘은 지난번 서버(컨테이너)에 구성한 node.js app을 AWS 서버리스 환경(lambda+API gateway)으로 배포하는 내용으로 학습 내용 공유드립니다. 1. express 웹 프레임워크로 구성된 api 서버 지난 게시글에서 api 서버를 구성하기 위해 express 웹 프레임워크를 사용했습니다. node.js로 http 서버를 구성하기 위해서는 "server.listen(3000);"과 같이 트래픽 수신을 포함하여 웹서버 구성에 필요한 여러 소스들을 일일 설정해줘야합니다. 이런 웹서버를 구성하기 위한 기본 뼈대를 만들어주는 역할이 웹 프레임워크로, express는 가장 널리 쓰이는 node.js 웹 프레임워크라고 합니다. .. 2023. 4. 1.
MongoDB 클러스터(리플리카 셋, 샤드) 지난번 AWS DocumentDB 에 대한 게시물을 통해 mongoDB와 같은 도큐먼트 데이터베이스란 무엇인지, AWS DocumentDB 클러스터 생성 과정에 대해 간략히 소개해드렸는데요. 오늘은 mongoDB의 클러스터를 구성하는 두 가지 방법인 리플리카 셋(읽기 전용 복제본) 클러스터와 샤드 클러스터를 docker 컨테이너로 구성하는 테스트를 통해 mongoDB 클러스터 구성 방법과 그 특징에 대해 알아보겠습니다. 리플리카 셋(replica-set) 리플리카 셋이란 리플리카 셋은 mongoDB에서 사용하는 읽기 전용 복제본이 포함된 클러스터(마스터/슬레이브 노드 모두 포함)를 말하며 고가용성을 목적으로 사용됩니다. 아래는 리플리카 셋의 기본 구조입니다. 마스터 서버 장애 발생 시 슬레이브 서버들 간.. 2023. 3. 31.