👨🏻‍💻Infra

    [Apache] Apache server-status  로 모니터링 하기

    [Apache] Apache server-status 로 모니터링 하기

    Apache에서는 "mod_status" 모듈에 "server-status"라는 핸들러를 제공한다. (핸들러는 있는 동작을 시키는 함수 같은 것이다. 프로그램의 모임이라고 생각하면 된다.) "server-status" 핸들러를 호출하여 Apache의 동작 상황을 확인할 수 있다. 그럼 브라우저에서 "server-status" 핸들러를 호출하여 동작 상황을 보자 mod_status 모듈 로드 먼저 "mod_status"모듈을 이용할 수 있도록 "LoadModule"에서 모듈을 로드한다. 앞부분에 주석을 제거한다. LoadModule status_module modules/mod_status.so 다음은 "server-status" 핸들러를 호출하는 설정을 한다. "Include"을 사용하여 "httpd-i..

    VMware Network 연결 안되는 증상

    VMware Network 연결 안되는 증상

    사용 중인 VM을 복사 후 Network 연결이 되지 않았다. IP 변경 후 네트워크 재시작을 하여도 동일 증상이 발생하였다. VMware에서는 리눅스(Redhat 계열) 복제 후 동작시키면 네트워크가 되지 않는다 다른 이유로는 네트워크 카드를 교체하거나 위치가 바뀐경우다 예를들어 네트워크 카드를 교체하거나 위치가 바뀌어 eth0 -> 1로 변경, eth1 -> 2로 변경 되어 서비스가 올라오지 않는 문제다 원인은 /etc/udev/rules.d/70-persistent-net.rules 파일에 저장된 NIC 이름과 MAC 주소가 엉켜서 생기는 문제다 /etc/udev/rules.d/70-persistent-net.rules : 재시작시 서버에 할당된 MAC 정보를 읽어들여 새로운 파일을 생성 본론으로 ..

    [Cloud] AWS 다중 서버 환경 구성

    이번에는 여러 대의 서버 인스턴스로 운영하는 방법을 설명한다. 여러 대의 서버를 운영하는 이유 크게 2가지가 있다. 1. 많은 트래픽에 대응 하기 위해 2. 서버에 장애가 생겨도 서비스가 안전하게 돌아갈수 있게 하기 위해 ※ 트래픽을 감당하기 위해 서버의 수를 늘려 대응(scale out) 하는 다중 서버 환경 ※ 단순히 서버의 수를 늘리는 것 뿐만 아닌 트래픽에 따라 서버의 수를 자동으로 늘리고 줄이는 자동 조정(auto scaling) ※ 장애로 서버 중 한대가 서비스 불능 상태가 돼도 다른 서버들이 이를 대신 요청을 처리하는 장애 조치 에 대해서도 설명하겠다. AWS Auto Scaling 그룹은 AWS에서 제공하는 자동 다중 서버 서비스다. Auto Scaling 그룹은 같은사양, 같은환경, 같은..

    [Cloud] AWS 보안 그룹

    [Cloud] AWS 보안 그룹

    AWS 보안 그룹 추가 앞서 현재 인스턴스는 SSH 포트만 허용 해놓았기 때문에 다른 기본 포트도 허용한다. 앞으로 실습에서 EC2 인스턴스로 웹 요청을 받을 것이기 때문에 기본 HTTP HTTPS 포트로 요청을 받을수 있게 허용한다.

    [Cloud] AWS EC2 접속

    [Cloud] AWS EC2 접속

    EC2 인스턴스 접속 전 글에 앞서 내려받은 키페어가 사용된다. EC2 인스턴스에 할당된 퍼블릭 도메인 혹은 퍼블릭 IP를 이용하여 SSH로 접속한다 [SSH 클라이언트 ex) PuTTY] EC2 인스턴스에 접속하기 위해 ec2-user 사용자를 사용했으며, ec2-user는 Amazon Linux의 시스템 사용자 계정으로 앞으로 root 권한이 아닌 대부분의 작업은 ec2-user로 진행하게 된다.

    [Cloud] AWS EC2 생성

    [Cloud] AWS EC2 생성

    AWS는 사용량 만큼 비용을 내야하므로 EC2 인스턴스가 켜져있는 시간에 대해 요금을 내야한다. 잠시 사용하지 않는경우 꺼두는것을 추천하며, 인스턴스를 끄는 방법은 인스턴스 대상을 오른쪽 마우스 버튼으로 클릭 한뒤 [인스턴스 상태] -> [중지] 를 선택한다. 여기서 [종료]는 "terminate" 로서 인스턴스를 완전히 삭제하는 것이다. 종료 시 복구 방법이 없으니 더는 사용하지 않는경우에만 [종료] 를 클릭한다. pending : 생성 중 running : 실행 중 stopped : 잠시 중시된 상태 terminated : 삭제(종료)된 상태

    [Cloud] AWS EC2 개념

    EC2 (Elastic Compute Cloud) 는 우리가 쉽게 사양을 고르고 원하는 시간만큼 사용할 수 있는 "가상서버" 다. CentOS, Ubuntu, Windows 등 운영 서버에 필요한 대부분의 OS를 지원하며, 사용 목적에 맞는 수십 가지 사양들을 제공한다. EC2 는 필요할 때마다 켜고 끌 수 있으며 사용한 시간에 대해서만 비용을 지급하면 된다. 비싼 돈을 주고 초기에 직접 서버를 구매해서 관리를 위한 공간과 인터넷 망을 구축하고 전기요금, 네트워크 비용 등 관리비를 지급하는 것에 비하면 정말 간편하고 저렴하게 서버를 이용할수 있다. EC2 생성 전 3가지 개념 1) AMI (Amazon Machine Image) AMI란 우리가 생성할 EC2 인스턴스의 기반이 되는 이미지다. 윈도우를 설..

    [Cloud] AWS 리전 및 가용 영역

    AWS 리전 과 가용 영역 AWS는 전 세계에 23개 지역에 인프라를 구축해서 호스팅하고 있는 글로벌 서비스다. (2019년 11월 기준) 지리 영역을 리전(region) 이라고 부르는데, 사용자가 가장 많은곳부터 리전을 만들고 있으며, 계속 늘려가고 있다. 서비스하려는 지역에 가장 가까운 리전을 선택해야 네트워크 지연 시간을 최소화 할수있다. 현재 한국에서는 서울 리전이 있으며 일본에는 도쿄와 오사카 리전이 있다. 대부분의 서비스는 모든 리전에 제공되지만 새로 생성된 서비스는 리전에 따라 늦게 오픈되는 경우도 있다. 모든 리전이 동일한 클라우드 서비스를 제공하는 것이 아니며, 더 많은 서비스를 가지고 있는 리전이 있다. 리전별로 몇 개월 정도 차이가 있으며 서울 리전은 다른 리전에 비해 조금 늦게 오픈..

    [Cloud] AWS 개념

    AWS Service AWS 에서는 단순한 컴퓨팅 서버만을 제공하는것이 아니라 운영서버에서 자주 사용되는 온갖 서비스들을 함께 제공한다. 데이터베이스, 배포 자동화, 모니터링, 보안, 메일, 도메인 등 100가지가 훨씬 넘는 서비스들을 제공하고 있다. 이러한 서비스 대부분은 모두 아마존 내부에서 더 편하게 운영 서버를 관리하기 위해 만들어서 사용하다가 어느정도 완성도가 높아지면 다른 회사들도 사용할 수 있게 서비스로 공개한 것들이다. AWS 같은 클라우드 서비스를 이용하지 않는다면 직접 서버를 구매해서 설치하고 관리해야하지만 사용하는 경우 몇번의 클릭만으로 생성하고 안정적으로 운영할수 있다. AWS 현재 위치 아마존뿐만 아니라 구글(Google Cloud), 마이크로소프트(Azure), IBM(IBM C..

    [AWS] AWS 탄생배경

    AWS 탄생 배경 AWS (Amazon Web Services) 는 미국 기업인 아마존에서 만든 클라우드 서비스 플랫폼이다. 인터넷 쇼핑몰 아마존에서 처음부터 클라우드 서비스 플랫폼을 만들 생각을 하고 있던 것은 아니였다. 2000년도 쯤 인터넷 쇼핑몰을 운영하던 아마존은 늘어난 트래픽과 주문량을 감당하다보니 자연스럽게 굉장히 뛰어난 수준의 내부 인프라 시스템을 구축하게 되었다. 컴퓨팅, 스토리지, 데이터베이스 등 운영 서버에 필요한 인프라를 누구보다 안정적이고, 규모를 키울수 있으며, 저렴하게 운영할 수 있는 능력을 아마존 쇼핑몰 하나에만 제공하기보다 전 세계 모든 회사를 대상으로 제공하자는 생각 을 하게 됐고 결국 2006년부터 이 인프라를 누구나 쉽게 사용할 수 있게 만들어 다른 회사에 돈을 받고 ..

    Tomcat 원격 코드 취약점 | CVE-2020-1938 Ghostcat

    Tomcat 원격 코드 취약점 | CVE-2020-1938 Ghostcat

    취약버전 (취약점 공개일 2020.2.24) 9.0.0~9.0.30 8.5.0~8.5.50 7.0.0~7.0.99 Tomcat 버전별 취약점 업데이트 내용 확인 ※ 7.x : http://tomcat.apache.org/security-7.html ※ 8.x : http://tomcat.apache.org/security-8.html ※ 9.x : http://tomcat.apache.org/security-9.html 원인 AJP 연결은 HTTP 연결보다 신뢰도가 높은것으로 취급하며, 기존 취약점버전 Tomcat은 모든 IP주소(0.0.0.0) 에서 수신대기하는 AJP 커넥터를 기본적으로 사용하도록 설정하여 제공하였다. 이 부분은 신뢰할수없는 사용자가 AJP 포트에 엑세스할수있다는것이며, 공격자는 파일..

    [Linux] 대기상태 D(uninterruptible sleep) PID 죽이기

    http://www.novell.com/support/kb/doc.php?id=7002725 http://ssambback.tistory.com/115 리눅스 시스템을 운영하다 보면 시스템 Hang-up에 대한 문제점을 많이 들어나게 됩니다. 물론 리눅스 시스템 자체의 문제점이라고 보다는 특정 운영 프로세스에 대해서 인터럽트 또는 스케쥴이 정상적으로 진행되지 못했을때 나타는 문제점에 대해서 간략해 소개해 보고자 합니다. 갑자기 시스템 로그에서 출력하게된 /var/log/message 의 시스템 로그. kernel: INFO: task startup.sh:9902 blocked for more than 120 seconds. kernel: "echo 0 > /proc/sys/kernel/hung_task_..

    [Linux] 깃허브란

    먼저 Git 에 대해 설명한다 Git이란 버전관리 프로그램이다 쉽게 생각하여 버전 1.0 2.0 등등 버전을 관리한다는것이다 예를 들어 어떤 개발자는 1.1버전을 개발중에있는데 갑자기 에러가 발생한다고 하면 1.0 버전을 따로 저장해놓지 않았으면 큰일이 된다. 이럴때를 대비해 각각 프로그램을 버전별로 따로 저장해두면 해결하기 쉬우며 Git은 프로젝트 폴더안에 숨김폴더를 생성하여 이전 기록과 달라진 부분들을 기록하고 되돌아가고싶은 경우 그 달라진 부분을 복원한다. 폴더를 여러개 만들 필요도 없고, 코드의 저장과 불러오기가 명령어 한줄로 수행되며, 저장 하고 싶은 만큼 저장해도 실제 전체 코드를 저장하는 것이 아니기 때문에 용량이 크게 늘어나지도 않는다 또한 그룹 프로젝트의 경우 한 사람이 A라는 기능을 개..

    [Linux] http -> https 주소 리다이렉트 시키기

    여기 계신 분들이라면 당연히 다 알고 계시겠지만 문제는 인터넷에 나와 있는 한국말로 된 팁들이 대부분 어딘가 빠져 있거나 허술하거나 잘못되어 있더군요 저도 그것들을 믿고 실행했다가 작동이 안 되거나, 최상위 주소만 되고 세부주소는 안되거나 (예: xetown.com 만 되고 xetown.com/square는 안됨) 하는 문제점들을 겪었고 결정적으로 지금까지 "301 리다이렉트"가 아니라 "302 리다이렉트"로 적용되어 있었네요 (301은 영구적인 이동, 302는 일시적인 이동을 나타내는데, htaccess 리라이트 구문에 기재를 해 놓지 않으면 302로 인식하기 때문에 301이라고 명시해줘야 합니다) 이게 영어로 찾아보면 거의 다 제대로 나와 있는데, 한국어로 찾아보면 그렇지 않네요 각설하고... 한마디..

    PHP 메모리 부족 (PHP Fatal Error: Allowed memory size of)

    서버 램이 넉넉잡아 16기가 정도 남았다고 해봅시다. memory_limit이 128MB(기본값)이라면 섬네일 생성이 필요한 페이지를 동시에 100명이 요청해도 됩니다. (128MB × 100 = 12.8GB) memory_limit이 512MB이라면 섬네일 생성이 필요한 페이지를 동시에 50명만 요청해도 서버가 다운됩니다. (512MB × 50 = 25.6GB) 즉 서버에서 안정적으로 처리할 수 있는 동접수에 큰 차이가 생기고, 악의를 가진 사용자가 일부러 대용량 이미지를 첨부한 후 동시에 다수의 섬네일 생성을 요청하여 서버를 마비시킬 수 있는 취약점도 발생합니다. PHP Fatal Error: Allowed memory size of 134217728 bytes exhausted (tried to a..

    미들웨어 개념 및 종류

    https://dbrang.tistory.com/693 /******************************************************************************************** -- Title : 미들웨어 개념 및 종류 -- Reference : blog.naver.com/swinter8 -- Key word : ********************************************************************************************/ n 개 념 : 일반적으로 미들웨어란 개념은 의미상 뿐만 아니라, 기능, 제품 등을 고려할때, 광범위하다. 굳이 개념상 정리를 하자고 하면, 미들웨어란 “클라이언트와 서버 간의 통신을 ..

    Apache log에 favicon.ico 출력 제거

    1. 개요 1) favicon의 정의 - favicon이란, favorite + icon 의 합성어 - 즐겨찾기를 할 경우 즐겨찾기 목록 좌측의 아이콘을 등록할 때 쓰임/ - 한글로 "파비콘"이라고 칭함 - 즐겨찾기를 수행할 때, Default로 찾는 파일임(소스상에서 다른 지정을 안할 경우) Web Server를 운용하다 보면.. errorlog에 아래와 같은 로그가 남기는 것을 볼 수 있다. favicon은 즐겨찾기 등록시에 옆에 보이는 아이콘이다. 소스상에서 따로 코딩하지 않으면 자동적으로 해당 Docroot의 Root디렉토리에서 찾는다. 아래의 경우, /home/monitor/webapps 경로는 물리적 소스 경로이다. 사실상, 별로 중요치 않은 로그이기 때문에 안 쌓이게 하는 것이 좋다. ===..

    [Linux] Process의 대한 Thread 정보 확인

    ps 명령어 옵션 – 'e' or 'A' : 모든 프로세스 선택 – 'f' or 'F' : 보여질 수 있는 모든 정보 출력 – 'L' : 스레드 정보인 LWP / NLWP 출력 – 'T' : thread를 보여준다. SPID 출력 (SPID = LWP, TID) #사람들이 ps -ef 를 많이 쓰는 이유 추가정보 – PID(Process ID) : 프로세스의 아이디 – PPID(Parent Process ID) : 부모 프로세스의 아이디 – LWP(Light Weight Process, is thread) : 스레드 고유아이디 – NLWP(Number Light Weight Process) : 해당 프로세스에서 동작하는 스레드의 총 갯수

    국내 ISP DNS 정보

    국내 인터넷망을 관리하는 통신사, 즉 ISP 사업자별로 대표 DNS 가 등록되어 있다. 간혹가다가 자동으로 할당받는 DNS 정보가 잘못되어 인터넷 연결이 안 될 수가 있다. 이런경우를 위해 DNS 정보를 임의로 입력해준다. 아래는 국내에서 대표적으로 사용하는 통신사별 DNS 정보이다. KT 기본 DNS 서버 : 168.126.63.1 보조 DNS 서버 : 168.126.63.2 SK 기본 DNS 서버 : 210.220.163.82 보조 DNS 서버 : 219.250.36.130 LG 기본 DNS 서버 : 164.124.101.2 보조 DNS 서버 : 203.248.252.2 Google 기본 DNS 서버 : 8.8.8.8 보조 DNS 서버 : 8.8.4.4

    wget

    리눅스 환경에서 인터넷 파일을 다운로드 할 경우 가장 많이 쓰이는 방법은 wget 명령어를 사용하는 것이다. 1. 단일 파일 받기 $ wget [URL] 다운로드 하는 동안 진행 경과와 함께 다음의 정보를 보여줌 - 현재 몇 퍼센트 다운 받았는지에 대한 정보 - 현재 다운로드 받은 바이트 수 - 현재 다운로드 속도 - 다운로드 완료까지 남은 시간 2. 다른 이름으로 저장하기 wget은 기본적으로 다운로드 경로의 마지막 슬래쉬('/') 다음에 오는 단어를 파일이름으로 사용합니다. 그런데 위 방법은 이상한 이름으로 저장이 됩니다. ex) wget http://serverstudy.tistory.com/abc[2][3][4].txt 라고한다면 저장된 파일이름은 abc[2][3][4] 가 됩니다. 그렇기 떄문에..