생산을 위한 구축: 웹 응용 프로그램 - 개요

생산을 위한 구축: 웹 응용 프로그램 - 개요

2022-06-01 last update

7 minutes reading Logging Monitoring LAMP Stack Deployment Conceptual Ubuntu

소개


이 6부 강좌는 처음부터 다중 서버 생산 응용 프로그램 설정을 구축하는 방법을 보여 줍니다.최종 설정은 백업, 모니터링 및 중앙 로깅 시스템에서 지원되므로 문제를 감지하고 복구할 수 있습니다.이 시리즈의 최종 목표는 독립된 시스템 관리 개념을 구축하고 생산 서버 설정을 만드는 실제 주의사항을 소개하는 것입니다.
이 시리즈에서 소개할 몇 가지 개념에 관심이 있으시면 다음 강좌를 읽어 주십시오.
  • 5 Common Server Setups For Your Web Application
  • 5 Ways to Improve your Production Web Application Server Setup
  • 링크된 글은 생산 응용 프로그램 설정에 대한 일반적인 안내서를 제공하지만, 이 시리즈는 예시 응용 프로그램을 처음부터 끝까지 계획하고 설정하는 방법을 보여 줍니다.완전히 다른 기술 창고에서 다른 응용 프로그램을 실행하더라도 운영 서버 환경을 계획하고 실현하는 데 도움이 되기를 바랍니다.이 강좌는 다양한 시스템 관리 주제를 포함하기 때문에 일반적으로 상세한 설명을 보충 정보를 제공하는 외부 지원 문장으로 미루곤 한다.

    우리의 목표


    본 시리즈의 강좌가 끝날 때, 우리는 PHP 응용 프로그램인 워드프레스에 생산 서버를 구축하여 시범을 보일 것입니다. https://www.example.com/를 통해 접근할 수 있습니다.운영 애플리케이션 서버를 지원하는 서버도 포함됩니다.최종 설정은 다음과 같습니다(전용 DNS 및 원격 백업이 표시되지 않음).

    이 설정에서 프로그램 상자의 서버는 프로그램이 정상적으로 실행되는 관건으로 여겨진다.복구 계획 및 원격 백업 서버 외에도 운영 애플리케이션 설정을 지원하기 위해 나머지 구성 요소 백업, 모니터링 및 로깅이 추가됩니다.모든 구성 요소는 같은 Digital Ocean 구역에 설치된 단독 Ubuntu 14.04 서버에 설치됩니다. 우리의 예시에서 NYC3를 사용하고 전용 네트워크를 사용합니다.
    응용 프로그램을 구성하는 서버 세트는 다음 호스트 이름이라고 합니다.
  • lb1:HAProxy 로드 밸런서https://example.com/
  • 를 통해 액세스 가능
  • app1: Apache 및 PHP 애플리케이션 서버
  • app2: Apache 및 PHP 애플리케이션 서버
  • db1: MySQL 데이터베이스 서버
  • 주의해야 할 것은 이런 유형의 설정을 선택한 것은 여러 서버에서 응용 프로그램의 구성 요소를 구축하는 방법을 보여주기 위해서이다.자신의 설정은 자신의 필요에 따라 맞춤형으로 해야 합니다.이 서버 설정에 단일 장애 지점이 있는 경우 다른 로드 밸런서(및round-robin DNSdatabase server replication를 추가하거나 액티브 또는 패시브 로드 밸런서를 가리키는 정적 IP를 추가하여 제거할 수 있습니다.
    응용 프로그램 서버를 지원하는 구성 요소를 다음 호스트 이름이라고 합니다.
  • 백업: Bacula 백업 서버
  • 모니터링: Nagios 모니터링 서버
  • 로깅: 중앙 로깅을 위한 Elasticsearch, Logstash, Kibana(ELK) 스택
  • 또한 그림에는 다음 세 가지 지지 어셈블리가 표시되지 않습니다.
  • ns1: 전용 DNS의 마스터 바인딩 이름 서버
  • ns2: 전용 DNS의 보조 바인딩 이름 서버
  • 원격 백업: 운영 데이터 센터에서 물리적 재해가 발생했을 때 Bacula 백업의 사본을 저장하는 데 사용되는 원격 서버-=\
  • 우리는 또한 응용 프로그램의 각 구성 요소의 고장에 대해 기본적인 복구 계획을 세울 것이다.
    목표 설정에 도달하면 총 10대의 서버가 있습니다.우리는 한 번에 그것들을 만들 것이다. (이것은 DNS를 설정하는 등의 작업을 간소화하지만, 필요에 따라 하나하나를 마음대로 만들 수 있다.Bacula 대신 Digital Ocean 백업을 백업 솔루션으로 사용할 계획이라면 물방울을 만들 때 이 옵션을 선택하십시오.

    고가용성(옵션)


    단일 장애 지점이란 인프라의 일부 장애로 인해 전체 사이트 또는 서비스를 사용할 수 없게 될 수 있습니다.이 설정에서 단일 장애 지점을 해결하려면 다른 로드 밸런서를 추가하여 고도로 사용할 수 있습니다.고가용성 서비스는 장애 발생 시 백업 또는 패시브 시스템으로 자동 페일오버됩니다.고가용성 설정에서 두 개의 부하 평형기를 사용하면 주동적인 부하 평형기를 사용할 수 없는 상황에서 하나의 부하 평형기는 항상 수동적으로 유량을 받아들일 수 있어 정지를 방지할 수 있다.
    고가용성 설정을 위한 여러 가지 방법이 있습니다.자세한 내용은 를 참조하십시오this section of How To Use Floating IPs.

    가상 전용 네트워크(옵션)


    서버 간 네트워크 통신을 보호하려면 VPN 설정을 고려해야 할 수도 있습니다.데이터가 인터넷에서 전송될 때 암호화를 사용하여 네트워크 전송을 보호하는 것이 특히 중요하다.VPN 사용의 또 다른 장점은 호스트의 ID가 키 인증 프로세스를 통해 검증된다는 것입니다. 그러면 인증되지 않은 소스로부터 서비스가 보호됩니다.
    오픈 소스 VPN 솔루션을 찾고 있는 경우 Tinc 또는 OpenVPN을 고려해야 할 수도 있습니다.이러한 특수한 상황에서는 메쉬 배선을 사용하는 Tinc가 더 좋은 해결 방안입니다.이 두 가지 VPN 솔루션에 대한 자습서는 다음과 같습니다.
  • How To Install Tinc and Set Up a Basic VPN on Ubuntu 14.04
  • How To Secure Traffic Between VPS Using OpenVPN
  • 선결 조건


    모든 Ubuntu 14.04 서버에는 루트가 아닌 슈퍼 사용자가 있어야 합니다. 이 강좌에 따라 설정할 수 있습니다: Initial Server Setup with Ubuntu 14.04.모든 명령은 이 사용자 신분으로 각 서버에서 실행됩니다.
    우리는 당신이 Linux의 기본 안전 개념에 대해 어느 정도 알고 있다고 가정합니다. 우리는 상세하게 소개하지 않을 것입니다.빠른 Linux 보안 입문이 필요한 경우 본문을 읽으십시오.7 Security Measures to Protect your Servers.

    도메인 이름


    도메인 이름을 통해 애플리케이션이 제공될 것으로 가정합니다(예: "example.com."만약 아직 하나가 없다면, 도메인 이름 등록업체로부터 하나를 구매하십시오.
    도메인 이름을 선택하면 이 강좌에 따라 Digital Ocean DNS에 사용할 수 있습니다: How to Point to DigitalOcean Nameservers From Common Domain Registrars.
    IP 주소에 비해 사이트에 쉽게 액세스할 수 있을 뿐만 아니라 SSL 인증서를 사용하는 도메인과 인증의 장점을 실현하기 위해 도메인 이름이 필요합니다. 또한 SSL 인증서는 응용 프로그램과 사용자 간의 통신을 암호화합니다.

    SSL 인증서


    TLS/SSL은 응용 프로그램과 사용자 간에 암호화 및 도메인 인증을 제공하기 때문에 설정에서 SSL 인증서를 사용합니다.예제에서는 사용자가 "www.example.com"사이트에 액세스하기를 원하기 때문에 인증서의 일반 이름(CN)으로 지정합니다.인증서는 HAProxy 서버 lb1에 설치됩니다. 따라서 편의를 위해 인증서 키와 CSR을 생성해야 할 수도 있습니다.
    인증서를 제공하려면 Let's Encrypt를 사용하여 SSL 인증서를 무료로 받거나 비즈니스 인증서 발급 기관에서 SSL 인증서를 구매할 수 있습니다.암호화 방법 옵션에 대한 자세한 내용은 을 참조하십시오How To Install an SSL Certificate from a Commercial Certificate Authority.웹 서버에 인증서 설치 섹션을 건너뜁니다.
    또는 다음 명령을 통해 생성할 수 있는 자체 서명 SSL 인증서를 사용할 수도 있습니다.
    1. sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ~/www.example.com.key -out ~/www.example.com.crt

    목표 달성 절차


    현재 우리는 생산 응용 프로그램 설정의 개요를 가지고 있으며, 우리의 목표를 실현하기 위해 전체적인 계획을 세울 것이다.
    응용 프로그램을 구성하는 구성 요소가 가장 중요하기 때문에, 우리는 이 구성 요소들이 가능한 한 빨리 시작되고 실행되기를 바란다.그러나, 우리는 우리의 전용 네트워크 연결에 대해 이름 기반의 주소 분석을 사용할 계획이기 때문에, 우리는 먼저 DNS를 설정해야 한다.
    일단 우리의 DNS가 준비되면, 일이 정상적으로 실행될 수 있도록 프로그램을 구성하는 서버를 설정할 것입니다.데이터베이스는 응용 프로그램에 필요한 것이고 응용 프로그램은 부하 평형기에 필요한 것이기 때문에 우리는 다음과 같은 순서로 구성 요소를 설정할 것이다.
  • 데이터베이스 서버
  • 애플리케이션 서버
  • 로드 밸런서
  • 일단 우리가 응용 프로그램을 설정하는 절차를 완성하면 우리는 각종 장면을 위해 복구 계획을 설계할 수 있을 것이다.이 프로그램은 백업 정책을 결정하는 데 도움이 될 것입니다.
    다양한 복구 계획을 수립한 후에 백업을 설정하여 지원하기를 희망합니다.그리고 우리는 서버와 서비스가 정상적인 상태인지 확인하기 위해 감시를 설정할 수 있다.마지막으로, 우리는 로그를 보고, 문제를 해결하고, 추세를 확인하는 데 도움을 줄 수 있도록 집중 로그 기록을 설정할 것이다.

    결론


    전체 계획이 완료되면 우리는 생산 응용 프로그램 설정을 실시할 수 있다.이 설정은 비록 기능이 모두 갖추어져 있지만, 이것은 예시입니다. 그 중에서 유용한 정보를 수집하고, 배운 지식을 사용하여 자신의 응용 프로그램 설정을 개선할 수 있어야 합니다.
    다음 강좌를 계속하여 응용 프로그램 설정을 시작합니다: Building for Production: Web Applications — Deploying.