pgpool2 를 이용한 이중화 셋팅 (k3s)
·
DB/Postgresql
얼마전에 DB 서버 2대에 patroni를 이용하여 이중화를 했다.patroni는 서버를 모니터하면서 master 와 slave 를 관리해준다.이제는 이 서버에 적절히 분배해 주면서 앞단에서 로드밸런서 역할도 하고 쿼리 종류에 따라 Write 는 master 로 Read 는 두 서버를 적절히 분산을... 하기위해 pgpool 을 적용했다. 쿼리를 분석해서 자동 분기를 해주는 솔루션은 pgpool 이 거의 유일하다고 한다.개발자가 WAS 의 소스코드 레벨에서 ORM 등을 사용하여 두개의 역할을 나눠서 알아서 나눠서 호출하게 할수는 있지만 이미 만들어진 WAS서버에서 다시 고쳐서 쓰기는 번거롭다. 자동으로 해주는 솔루션을 찾다보니 pgpool 을 이용하게 되었다.일전에 했다가..별로여서 안쓰고 있었는데 학습..
k3s 에 cloudflare ddns 업데이터 적용
·
인프라/Cloudflare
기존에 dnszi 에서 사용하던 ddns 업데이트 이후 cloudflare 로 옮긴후 적용이 필요했다. 먼저 k3s 에 인증키 생성gglabadmin@k3s-node1:/k8s/common/cloudflare$ cat ddns-secret.yaml apiVersion: v1kind: Secretmetadata: name: cloudflare-api-token namespace: defaulttype: OpaquestringData: token: "api토큰" 다음으로proxy 할것과 안할것을 구분해서 두개의 설정 파일 준비 [DNS 만 연결]gglabadmin@k3s-node1:/k8s/common/cloudflare$ cat ddns-direct-deployment.yaml apiVersion: ..
Cloudflare Proxy 적용
·
인프라/Cloudflare
운영중인 함쓰 가계부 앱의 사용자에게 앱이 자꾸 로그인이 풀린다는 제보가 들어왔다.심할때는 로그인이 풀린다음 재로그인을 10번정도 시도해야 된다고 한다. 카페에 남긴 이 내용을 보고 처음 든생각은?? "나는 한번도 안끊기는데???"폰의 영향인가? 최신 업데이트된 OS 탓인가? 마침 최근 IOS도 26이 나오고 안드로이드도 16이 나오다 보니.. 여러 가능성이 있었다.그런데 마침 댓글에... "나만 끊기는게 아니었네요~" 라는 글이 달렸다.오잉... 그런사람이 많다고?? 함쓰는 JWT 토큰 인증 방식을 사용하고 있다.AccessToken 은 15분 RefreshToken 은 2주를 셋팅하여 사용중이다.앱 차원에서 AccessToken 이 만료되거나 가까워지면 RefreshToken 을 이용해서 자동으로 ..
k3s 에 consul 적용
·
인프라/Kubernetes
현재 내 서버에 10.34.1.151, 152, 153 3개 노드에 k3s 를 설치해 두었다.10.34.1.150 에 vip 를 설정하고 metallb 도 해둔 상태인데이전에 실습하면 consul 서비스를 사용하려면 3개 노드가 필요하다고 하여.. k3s 에 가상화를 적용하지 않고 직접 설치를 했었다.그래서 기존에 존재하는 k3s 에 설치하는 방법을 찾아보았고 잘 되는 것 같아 기록을 남긴다. 일단 k3s 기본으로 같이 설치된 traefik 설정을 변경한다.sudo kubectl edit svc traefik -n kube-systemmetadata: annotations: meta.helm.sh/release-name: traefik meta.helm.sh/release-namespace:..
(연습) postgresql 이중화 (Failover)
·
DB/Postgresql
이전에 작성한 연습글을 보면 이중화까지 완료를 했다.patroni 를 이용하여 master / slave 설정이 끝났다.그럼 한번 master 에 데이터베이스를 만들고 동기화가 잘되는지 보자.일단 현재 설정을 확인해보자. 가상환경에서 실행했으니 가상환경을 띄우고 아래와 같이 해보면gglabadmin@postgresql2:/opt/patroni_venv/venv_patroni$ sudo source venv_patroni/bin/activategglabadmin@postgresql2:/opt/patroni_venv/venv_patroni$ patronictl -c /etc/patroni/patroni.yaml list postgres-cluster+ Cluster: postgres-cluster (7580..
(연습) postgreSQL 이중화 (consul, patroni)
·
DB/Postgresql
postgresql 을 이전에 이중화를 해보려고 글을 쓴적이 있다.당시.. pgpool2 로 진행하다가 실패했다.성공을 못한건 아니었지만 운영을 해보았더니.. 자동 failover 가 문제가 있었고..실제 장애가 나서 처리하는데 애를 꽤 먹었다.그래서 현재 운영중인 서비스는 단일 구성에 하루 2회 백업을 진행하고 있다. 몇년이 지난 지금 검색을 해보니 그때와는 다르게 HA 구성을 하는 듯 하여 다른 방법으로 도전을 해보려고 한다.일단 이번에는 patroni 라는 솔루션을 사용해보려고 한다. 먼저 사용자 입장에서 접근을 한다고 생각해 보자.사용자는 일단 app 서버에 접근할것이다.참고로 내 서버는 nestjs 에 prisma orm 을 사용하였다.그다음 아무런 HA구성이 없다면 DB url을 찾아 바로 ..
k3s Cert-Manager 에서 외부 서비스로 Proxy
·
인프라/Kubernetes
기존에 별도의 우분투로 설치된 문서 관리 서비스가 있었다.outline 오픈소스로 되어 있었고 중간에 좀 복잡하게 인증서 처리를 했는데바로 시놀로지 dsm 의 인증서와 역방향 프록시를 그대로 이용하는 것이었다.그런데 이번에 망분리를 이용하면서 이용할수 없게 되었는데 k3s 에 설치한 certmanager 를 이용하여 인증서를 관리하고ingress 를 이용하여 외부 서버로의 연결이 되도록 설정을 해봤다. 이미 k3s 에 certmanager 구성이 되어 있다고 가정한다.k3s 서비스 구성gglabadmin@k3s-node1:/k8s/apps/docs$ cat service.yaml apiVersion: v1kind: Servicemetadata: name: outline-external namespac..
k3s 에서 dnszi 유동아이피 연동 스케쥴 추가하기
·
인프라/Kubernetes
기존에 서버에서는 crontab 을 사용해서 내가 사용하던 서버중 하나를 이용해 crontab 작업을 했다.k3s 로 옮기면서 이 작업을 변경할 필요가 있었는데 k3s 를 사용하니까 역시 pod로 만들 방법을 gpt 에 물어보니 깔끔하게 잘된다. 설정/k8s/common/dnszi 디렉토리를 만들고 안에 다음 두 파일을 만들었다. 1. URL 들을 저장하는 yaml2. 이것을 반복해서 스케쥴 돌려주는 conjob 용 yamlgglabadmin@k3s-node1:/k8s/common/dnszi$ lltotal 16drwxr-xr-x 2 root root 4096 Nov 29 21:51 ./drwxr-xr-x 5 root root 4096 Nov 29 21:46 ../-rw-r--r-- 1 root root..
pfSense 와 CertManager 연동 오류
·
인프라/Kubernetes
집안의 홈서버에서 k3s 3node 를 이용한 HA 구성 연습을 하면서..일주일동안 진전이 없던 부분이 있었다.바로 traefik 기본 설정된 ACME 에서는 HA 구성이 안된다는 것을 알고 별도의 CertManager 를 이용하는 것이었는데..아무리 해도 동작이 안되었다. 검색해본 모든 포스트를 해보고 각종 AI 의 솔루션들을 모두 적용해본것 같다.Lets Encrypt 에서 내 도메인으로 인증시 .well-known/~~~ 주소로 들어와서 확인을 하게 되는데이 부분이 지속적으로 404 에러와 함께 동작하지 않았다. 그 부분을 기록으로 남겨보려고 한다. 상황내 서버는 일단 pfSense 가 공인아이피를 받아서 내부ip로 NAT 를 하는 구조이다.또한 그 밑에는 k3s 3개 노드가 존재한다.아이피는 10..
(실전) k8s 설치부터 https 서비스 포팅까지
·
인프라/Kubernetes
배경최근 몇가지 실험과 실습을 통해 내가 서비스하고 있는 docker image 하나를 올려보았다.그동안 docker 만 이용해 봤는데 꽤 재미 있다.중간에 시행 착오가 있었는데 이 글을 통해 전체 흐름을 한번에 정리해서 처음부터 끝까지 다시 해보려고 한다. 목표 흐름구성 요소위치/타입IP 주소 및 포트주요 기능 및 역할HA (고가용성) 역할1. pfSense외부 방화벽/라우터공인 IP → 10.34.1.150외부 트래픽을 내부 K8s 클러스터의 VIP로 포워딩하는 관문 역할.외부에서 클러스터로 들어오는 트래픽의 단일 진입점 제공.2. MetalLBK8s 애드온 (Speaker)10.34.1.150 (VIP)K8s LoadBalancer Service에 외부 접근 가능한 VIP를 할당하고, ARP/NDP..
(연습) k3s HA 구성 트래픽 흐름 구조
·
인프라/Kubernetes
k3s 3개 노드로 구성하고 나서 가만히 보니 뭔가 부족해 보였다.실제 샘플 pod 를 띄우고 강제로 node 를 하나씩 죽여다가 살려봤는데 살아나지 않는 경우도 있고..뭔가 이상해서 찾아봤다 결론적으로 master node 의 HA 구성이 안된것이다.보통 3개를 설치하면 3개 노드 모두 master 를 설치하여 그들간의 고가용성을 유지한다고 하는데 빠져 있었다.이미 설치가 완료된 k3s 클러스터를 한번 바꿔보려고 한다. root@k3s-node1:~# kubectl get nodesNAME STATUS ROLES AGE VERSIONk3s-node1 Ready control-plane,master 45h v1.33.5+k3s1k3s-no..
pfSense 포트포워딩
·
인프라/Network
k3s 를 셋팅하면서 traefik 설정중 포트 포워딩을 할 상황이 생겼다.기본적으로 외부에서 들어올때 80, 443 서비스를 위해서 NAT 방화벽 셋팅을 했다.메뉴는 Firewall -> nat 에서 add 해서 추가이런식으로 80 과 443을 셋팅한다.위 설정만 해도 방화벽 Rule 에 자동으로 들어간다.짠~
(연습) k3s VIP 설정 (MetalLB)
·
인프라/Kubernetes
3대의 노드에 하나의 ip로 서비슬르 만들기 위해서 처음에 구상할때는 keepalived + haproxy 를 이용하려고 했다.그런더 검색을 하다보니 이방법이 예전방식이고 Metallb 가 사실상 표준이 되었다고 한다. MetalLB 설치마스터 노드에서 설치 명령 실행$ sudo k3s kubectl get nodesNAME STATUS ROLES AGE VERSIONk3s-node1 Ready control-plane,master 6h40m v1.33.5+k3s1k3s-node2 Ready 6h34m v1.33.5+k3s1k3s-node3 Ready 6..
pfsense VPN 셋팅
·
인프라/Network
내부망을 구축하고 해당 망에 접속할 방법이 없어졌다. 해당망은 집 내부 환경과 별도로 구축했다보니..현재로서는 Proxmox 내의 콘솔로 접속하는 방법밖에 없다.그래서 개발 환경에 접속하기 위해서 vpn 을 셋팅하려고 한다.검색을 해보니 OpenVPN 이 가장 보안적으로 뛰어나다고 한다. 그래서 OpenVPN 을 셋팅하고자 한다. OpenVPN 셋팅상단 메뉴에서 VPN 을 보면 OpenVPN 이라고 있다.현재는 아무것도 없이 깔끔함위쪽의 빨간색 메뉴 맨 끝에 보면 Wizards 가 있다. pfsense 는 이 마법사를 이용하면 쉽게 설정이 된다고 한다. 한번 해보자.사용자를 어떻게 관리할거냐를 묻는듯...LDAP 같은 옵션이 있는것 보니 별도의 계정관리 시스템과 연동이 되는듯 하지만 나혼자 쓸것이므로 L..
USB 유선랜 속도 이슈
·
인프라/Network
배경집에 서버를 두고 사용하면서 개발하는 서버와 가정 내 장비들의 망분리를 위해서서버에 랜카드를 추가했다.그런데 랜카드를 추가한후에 디스크들의 연결이 불안정해졌다.총 6개정도의 sata 하드가 있는데 붙었다 떨어졌다를 반복하고 특히 write 할때 잘 떨어졌다.지피티에 물어보니 파워문제일 확률이 가장 크단다.엄청 비싼.. 커세어750 파워를 사용중인데... ㅠ.ㅠ파워 라인을 바꿔보라고 하던데... 조립 다 끝낸 서버 선정리 하기 싫어서.usb 랜을 사용해보기로 했다. 이슈집에 창고를 뒤지다 보니 안쓰던 utp -> usb a 케이블이 하나 있길래 사용했다.내가 직접 산건 아닌것 같고 뭔가 살때 딸려온것 같다.일단 연결 잘되고 인터넷도 잘 되더라.그런데 대용량 파일을 받을일이 있어서 파일을 받는데... ..