두 Linux 서버 간에 Apache2 가상 호스트 구성을 공유하는 방법은 무엇입니까?

두 Linux 서버 간에 Apache2 가상 호스트 구성을 공유하는 방법은 무엇입니까?

Apache2 서버 간에 구성 지시문을 공유하는 가장 좋은 옵션은 무엇입니까? 이는 안정적인 로드 밸런싱을 사용하기 위해 필요합니다. 가장 중요한 지시어는 가상 호스트를 정의하는 지시어입니다.

어떤 종류의 도움이라도 대단히 감사하겠습니다.

답변1

우리는 하나의 호스트를 "마스터"로 정의합니다. 또한 (요즘 대부분의 배포판에 따라) 가상 호스트 구성은 /etc/apache2/vhost.d/ 폴더에 보관되고 가상 호스트별로 파일을 할당합니다.

예를 들어

www.example.com.conf
customers.example.com.conf
suppliers.example.com.conf
... and so on..

그런 다음 "마스터"에서 다른 서버로 복사하는 cron'd rsync입니다.

답변2

이 문제를 해결하는 방법에는 여러 가지가 있습니다.

  1. NFS 또는 CIFS와 같은 중앙 집중식 저장소에 구성을 저장합니다.
  2. 버전 관리 시스템(git, svn 등)을 사용하여 구성을 저장하고 웹 서버에서 확인합니다.
  3. rsync 또는 scp를 사용하여 한 서버에서 다른 서버로 구성 동기화

중앙 구성이 변경되면 Apache가 다시 로드되도록 두 번째 옵션을 Puppet 또는 CFengine과 같은 일부 프로비저닝 도구와 결합하는 것을 고려할 수 있습니다.

답변3

저는 개발, 준비, 프로덕션 서버에 통합 구성을 사용합니다. 대부분의 구성은 모두 동일합니다. 서로 다른 경우 차이점을 가상 호스트 정의 또는 <IfDefine>섹션에 넣습니다. 예를 들면 다음과 같습니다.

<IfDefine DEVELOPMENT>
...
</IfDefine>

각 서버는 자신이 어떤 서버인지 알려주는 명령줄 스위치로 시작됩니다. 예를 들어, 제가 개발 서버에

export APACHE_ARGUMENTS="-DDEVELOPMENT"

/etc/apache2/envvars에 넣습니다(Debian의 경우 - RedHat의 경우 OPTIONS='-DDEVELOPMENT'/etc/sysconfig/httpd에 넣습니다). 따라서 가상 호스트 외에도 개발 서버에는 섹션 내에 모든 구성이 있습니다 <IfDefine DEVELOPMENT>.

구성이 변경되면 일반적으로 개발 중인 버전 제어에 대한 변경 사항을 커밋하고 다른 호스트로 푸시합니다.

관련 정보