eng-nate의 등록된 링크

 eng-nate로 등록된 티스토리 포스트 수는 19건입니다.

ArgoCD PRUNE과 SELF HEAL 테스트 [내부링크]

ArgoCD의 sync police를 automatic으로 설정시 선택 가능한 PRUNE RESOURCE와 SELF HEAL 옵션에 대하여 테스트한 내용을 정리한다. 1. PRUNE PRUNE : Resource를 업데이트 할 때 기존 Resource의 삭제여부를 결정한다. App을 생성할 때 SYNC POLICY를 Automatic으로 선택 후 아래 PRUNE RESOURCES를 선택하지 않는다. App Sync가 완료되었다. git에 올려둔 yaml파일을 수정한다. deploy명을 수정(prune-test -> argo-test)해 기존 deploy의 상태를 확인해 보겠다. apiVersion: apps/v1 kind: Deployment metadata: name: argo-test spec: re..

ArgoCD로 Kubernetes CD환경 구성하기 [내부링크]

ArgoCD는 GitOps의 일환으로 kubernetes의 resource와 github의 manifest의 정의를 동일하게 유지하는 오픈소스 이다. 즉 kubernetes환경을 위한 CD(Continuous Delivery) 툴 이다. 테스트는 EKS환경에서 진행하였다. 1. 개념 위에서 언급한 것 처럼 kubernetes환경의 resource와 github의 manifest(yaml)정의의 sync를 맞추기 위한 툴이다. github에 업로드된 yaml파일과 kubernetes의 resource 상태를 체크해 다르면 자동으로 sync(배포)를 해준다. 배포와 관련된 모든 resource를 code로 관리할 수 있다. 2. ArgoCD 설치 argocd namespace를 생성 후 공식 yaml파일을 ..

Kafka partition에 message저장 방식 [내부링크]

이번 포스팅에서는 message의 병렬처리를 위해 다수의 partition을 생성할 때 partitioner에 따른 동작 방식을 비교해 본다. 1. sticky partitioner(key값이 존재할 때) 3개의 partitions을 갖는 topic을 생성 후 message를 전송한다. [webwas@ip-172-31-39-9 config]$ kafka-topics.sh --create \ > --bootstrap-server localhost:9092,localhost:9093,localhost:9094 \ > --partitions 3 \ > --replication-factor 1 \ > --topic sticky-test Created topic sticky-test. partition을 3개 갖..

Kafka cluster 구성 및 failover 테스트 [내부링크]

이번 포스팅에서는 kafka cluster를 구성해보고 failover 테스트를 진행한다. 환경은 AWS EC2 인스턴스 하나에 kafka broker를 3대 띄워 진행한다. 1. cluster 구성 config zookeeper.properties tickTime=2000 dataDir=/webwas/kafka/zookeeper1(zookeeper2, zookeeper3) clientPort=2181(2182, 2183) server.0=127.0.0.1:2887:3887 server.1=127.0.0.1:2888:3888 server.2=127.0.0.1:2889:3889 initLimit=5 syncLimit=5 옵션명 설명 tickTime zookeeper가 사용하는 기본 시간으로 ms단위이다. ..

Datadog으로 kubernetes 모니터링 [내부링크]

Datadog으로 Kubernetes환경 모니터링을 생성해 보겠다. 아래 내용은 EKS를 기반으로 테스트 및 작성되었다. 1. EKS metric 수집을 위한 설정 EKS apiserver metric 수집을 위해선 default/kubernetes service에 아래 annotations을 추가해 주어야 한다. annotations: ad.datadoghq.com/endpoints.check_names: '["kube_apiserver_metrics"]' ad.datadoghq.com/endpoints.init_configs: '[{}]' ad.datadoghq.com/endpoints.instances: '[{ "prometheus_url": "https://%%host%%:%%port%%/metr..

Kafka 설치 및 간단 사용법 [내부링크]

Kafka는 분산 스트리밍 플랫폼으로 쉽게말해 메시지 큐를 제공하는 솔루션이다. 기본적인 테스트 내용만 정리하였으며 추 후 좀더 공부해서 업데이트 예정이다. 1. Kafka의 필요성 Kafka가 왜 필요한지 가장 잘 이해되는 그림인 것 같아 가져왔다. 기존 구조는 end to end 구조의 복잡성과 어려운 확장성을 가지고 있다. Kafka를 통해 복잡성 해소와 간단한 확장성으로 변경되었다. 2. Kafka의 구성요소 Producer : Kafka에 메시지를 전달하는 Client Consumer : Kafka에서 메시지를 가져가는 Client Topic : 메시지를 구분해 저장하는 공간 Broker : Kafka 서버라고 생각하면 쉬움 Partition : topic을 여럿으로 나누어 놓은 구조 Zooke..

Tomcat jmx-proxy를 활용한 모니터링 [내부링크]

Tomcat 모니터링을 위해 다양한 APM툴이 존재한다. 특히 무료라서 scouter와 함께 사용하는 경우가 많은 것 같다. 하지만 별도 agent를 설치하고, 방화벽을 오픈해야하는 등 개인적으로 귀찮았고 해서 jmx-proxy를 사용하게 되었다. 이번 포스팅에서는 Tomcat이 기본 재공하는 jmx-proxy를 활용한 모니터링 방법을 얘기하겠다.1. jmx-proxyTomcat의 내부 자원을 모니터링 할 수 있는 툴로 기본적으로 manager라는 application을 통해 제공된다.브라우져를 통해 UI를 사용하는 경우가 가끔있지만 실제로 사용하는경우는 거의 못봤다.http 통신을 통해 Tomcat의 내부 자원 및 상태 조회가 가능하다. 2. 설정Tomcat을 설치하면 webapps/manager라는 ..

Cloud환경의 모니터링을 위한 Datadog 구축하기 [내부링크]

Cloud환경 모니터링으로 SaaS서비스를 제공하는 Datadog의 설치방법을 설명한다. 이번 포스팅은 Linux환경과 kubernetes환경 각각에서 진행한다. 1. Datadog 계정 생성 Datadog설치를 위해선 api_key값이 필요하며 api_key생성을 위해 Datadog계정생성 및 ORG 생성이 필요하다. 아래 URL에 접속해 계정을 생성하자. https://app.datadoghq.com/account/login Datadog: Log In app.datadoghq.com 계정을 생성하고 나면 ORG 페이지가 보인다. 왼편에 Datadog에서 제공하는 기능들의 목록을 볼 수 있다. Integrations메뉴로 이동 후 Agent탭을 누르면 설치를 진행할 환경을 선택할 수 있고 환경별로 설..

Tomcat Connector Threads 설정 정리 [내부링크]

운영환경에서 주로 2가지 종류의 Tomcat Connector를 사용한다. HTTP Connector와 AJP Connector이다. 이번 포스팅에는 두 Connector의 Threads와 관련하여 몇가지 테스트를 통해 확인한 내용을 정리하겠다. 1. HTTP Connector 이름 그대로 HTTP 요청을 받아 처리가능한 Connector이다. maxThreads : 해당 Connector에 생성 가능한 최대 Thread의 수이다.(default : 200) minSpareThreads가 없는 경우 default로 10개의 Thread가 생성된다. maxThreads값은 limits 범위내에서 설정 가능하다. openfiles가 부족할 경우 Too many open files 발생한다. max user ..

Tomcat Session Clustering 설정 [내부링크]

다중인스턴스, 또는 다중화구성을 한 경우 session clustering 설정을 통해 Tomcat JVM간 session공유가 가능하도록 설정이 필요하다. redis등 별도로 session server를 두는 경우도 있으나 이번 포스팅에서는 Tomcat간의 session clustering을 설명한다. 1. Tomcat의 Session Manager Tomcat의 session clustering에는 DeltaManager와 BackupManager가 존재한다. DeltaManager는 Cluster에 속한 Member전원에게 session 객체를 공유한다. 공식 Docs에는 4node이상의 환경에서는 사용을 권장하지 않는다. BackupManager는 자신의 Backup Member에게만 sessio..

Apache mod_jk timeout 정리 [내부링크]

Apache에는 다양한 Timeout설정이 존재한다. 해당 포스팅에서는 mod_jk와 관련된 timeout들의 값을 설명한다. 1. workers.properties worker.template.connection_pool_timeout=60 worker.template.reply_timeout=360000 worker.template.socket_timeout=60 worker.template.socket_connect_timeout=3000 worker.template.connect_timeout=3000 worker.template.prepost_timeout=3000 worker.template.ping_timeout=3000 설정값 default 설명 Error Code connection_po..

Tomcat JNDI DataSource 설정 [내부링크]

이번 포스팅에서는 Tomcat에 DataSource 설정을 통해 DB와의 연동설정을 설명한다. 1. DataSource 설정 $CATALINA_BASE/conf/server.xml의 태그안에 DataSource설정을 추가한다. 태그안에 Context별로 사용할 DataSource를 지정한다. server.xml DataSource설정 옵션값은 아래 URL에서 확인 가능하다. https://tomcat.apache.org/tomcat-8.5-doc/jdbc-pool.html Apache Tomcat 8 (8.5.86) - The Tomcat JDBC Connection Pool The connection pool object exposes an MBean that can be registered. In o..

Tomcat 설치 및 기본구조 [내부링크]

Tomcat은 Apache/Nginx와 연동하여 많이 사용되는 오픈소스 WAS로 JavaEE표준으로 개발되었다. 이 포스팅에서는 간단한 Tomcat의 설치 및 기본구조를 설명한다. 1. 설치 Tomcat은 별도의 컴파일 없이 압축을 풀어 사용이 가능하다. 아래 URL에서 버전 및 OS를 선택하여 다운로드 가능하다. (8.5와 9버전이 많이 사용되고 있지만 8.5의 경우 2024/03/31 EoL을 앞두고 있다.) https://tomcat.apache.org/download-90.cgi Apache Tomcat - Apache Tomcat 9 Software Downloads Welcome to the Apache Tomcat 9.x software download page. This page pro..

Apache mod_security를 사용한 보안강화 [내부링크]

Apache로 서비스를 운영할 때 보안취약사항으로 HTTP response header에 WEB서버 정보가 노출내용이 지적된다. 일반적으로 ServerTokens과 ServerSignature 두 항목을 통해 조치를 하지만 최근 mod_security를 통한 추가 조치도 필요한 경우가 자주 발생한다 이번 포스팅에는 mod_security를 통해 response header에 WEB서버의 정보를 삭제하는 방법을 가이드한다. 1. mod_security module 생성 아래 URL로 설치파일을 다운받는다. https://www.modsecurity.org/tarball/2.9.3/modsecurity-2.9.3.tar.gz 설치파일 압축해제 후 구성, 컴파일을 수행한다. [webwas@localhost m..

mod_status를 사용한 Apache monitoring [내부링크]

이번 포스팅에서는 mod_info와 mod_status를 사용해 Apache모니터링 설정을 해보려고 한다. 해당 모듈은 기본적으로 제공이 된다는 장점이 있지만 보기 좋은 환경을 제공하진 않는다. 1. mod_info와 mod_status mod_info : 기동된 Apache의 config, 로딩된 모듈, 버전정보등등의 Apache의 정보를 확인 할 수 있는 모듈 mod_status : Apache의 상태(connection갯수, resource사용률, threads수 등)를 실시간으로 모니터링 할 수 있는 모듈 2. 모듈 로딩 Apache를 설치하고 나면 기본적으로 mod_info와 mod_status 모듈이 제공된다. 설정파일에 해당 모듈들을 로딩해준다. httpd.conf LoadModule sta..

mod_jk를 통한 Apache/Tomcat 연동 가이드 [내부링크]

Apache와 WAS(주로 Tomcat)를 연동할 때 AJP protocol을 사용하는 mod_jk를 많이 사용한다. 해당 포스팅에는 mod_jk를 사용해 AJP port로 연동하는 설정방법을 정리한다. 1. 모듈 생성 mod_jk사용을 위해 mod_jk 모듈이 필요하다. https://tomcat.apache.org/connectors-doc/ 에서 mod_jk생성을 위한 소스파일을 다운받는다. 구성과정에 다양한 옵션이 존재하며 필요시 아래를 참고한다. https://tomcat.apache.org/connectors-doc/webserver_howto/apache.html The Apache Tomcat Connectors - Web Server HowTo (1.2.48) - Apache HTTP S..

Apache의 mod_proxy 설정 [내부링크]

Apache의 mod_proxy 모듈을 사용해 back단으로 http call을 호출할 수 있다. 주로 WAS와 연동할 때 사용하며 그 외에도 proxy서버로 Apache를 구성하는 경우에도 사용한다. 해당 포스팅에서는 mod_proxy를 사용한 proxy설정 및 session clustering을 위한 sticky session 설정을 설명한다. 1. 모듈 로딩 Apache는 필요한 모듈을 Loading하는 방식으로 기능을 사용한다. proxy관련 다양한 모듈(기능)이 존재하며 자세한 설명은 아래를 참고한다. https://httpd.apache.org/docs/2.4/mod/ 모듈 목록 - Apache HTTP Server Version 2.4 coreCore Apache HTTP Server fea..

Apache event MPM(Multi-Processing Module) 설정 [내부링크]

Apache는 들어온 request를 처리하는 방식을 선택할 수 있으며 MPM이라고 한다. MPM에는 prefork, worker, event, winnt등이 존재하며 최초 설치시 configure과정에서 기본값을 설정할 수 있다. 해당 포스팅에는 요즘 가장 널리 쓰이는 event방식을 설명한다.event MPM은 worker MPM을 베이스로 만들어졌다. process별로 thread를 생성하여 요청을 처리하는 방식이지만 worker의 경우 요청과 thread의 비율이 1:1로 keep-alive로 인한 지연등의 이슈가 있다. 이를 해결하기 위해 process단위로 listener thread와 worker thread를 별도로 분리한 MPM이 event이다. 1. MPM설정기본적으로 HTTPD_HOM..

Apache Webserver 컴파일을 통한 설치 [내부링크]

Apache 대표적인 OpenSource Web Server로 설정등이 간편하고 reference가 많아 편하게 사용 가능한 제품이다. Apache의 설치는 패키지을 통한 방식과 컴파일을 통한 방식 2가지로 구분한다.(Windows의 경우 단순히 압축해제만 하면 되므로 설치방법을 별도로 포스팅 하진 않겠다) 해당 포스팅에는 컴파일을 통한 설치방법을 작성하였다. 1. 설치환경 및 사전준비 설치는 VirtualBox에 CentOS를 설치 후 진행하였다. 아래 패키지들이 필요함으로 미리 설치해둔다 gcc, expat-devel, openssl-devel, pcre, pcre-devel, make 2. 다운로드 https://httpd.apache.org/download.cgi 에 접속하여 소스파일을 다운로드 ..