
저는 현재 인터넷 사용자에게 강화된 개인 정보 보호 기능을 제공하기 위해 OpenVPN 서비스를 설계하고 있습니다.
지금까지는 CentOS 및 Xen을 실행하는 전용 서버를 사용하여 고가용성과 로드 밸런싱을 위해 OpenVPN 서버 각각에 여러 도메인을 제공할 계획입니다.
하나의 domU가 다운되면 동일한 호스트에 두 번째 domU를 자동으로 불러오고 싶습니다. 이러한 유형의 장애 조치가 가능합니까?
domU 서버에 대한 VPN 연결의 로드 밸런싱을 위한 솔루션이 있습니까?
답변1
예, Xen DomU의 상태를 모니터링하고 DomU가 실패할 경우 임의의 명령을 실행할 수 있습니다. 기본 OpenVPN DomU를 확인하고 기본이 실패한 경우 보조 DomU를 실행하도록 Dom0에 지시하는 세 번째 호스트(DomU 또는 물리적)에서 Monit 데몬의 인스턴스를 실행할 수 있습니다. Monit 문서에는 이를 구현하는 방법을 보여줄 수 있는 많은 예제가 있습니다.
예, OpenVPN에는 고가용성 및/또는 로드 공유 기능이 내장되어 있으며 설정이 매우 간단합니다.
첫째, 각 서버가 자체 IP 주소를 수신하는 여러 OpenVPN 서버를 병렬로 실행하게 됩니다. 서버는 상태를 공유하지 않으며 서로에 대해 아무것도 모릅니다.
그런 다음 명령줄이나 OpenVPN 클라이언트의 구성 파일에서 여러 '--remote' 옵션을 지정합니다. 클라이언트에 사용 가능한 원격 서버 옵션이 여러 개 있는 경우 임의로 하나를 선택하여 연결합니다. 해당 서버에 장애가 발생하면 연결을 다시 시도하고, 연결에 실패하면 무작위로 다른 서버를 선택합니다. 자세한 내용은 여기에서 OpenVPN 문서를 참조하세요.
비슷한 질문에 대한 내 답변을 여기에서 확인하실 수 있습니다.
내 다른 답변에서 언급했듯이 특히 다음 클라이언트 옵션에 주의를 기울이고 싶을 것입니다.
- 연결 재시도
- 연결-재시도-최대
- 원격 무작위
- ifconfig-풀-지속
물론 이것은 진정한 로드 밸런싱이 아닙니다. OpenVPN 클라이언트는 로드가 가장 적거나 클라이언트가 가장 적은 서버를 선택하지 않고 단지 무작위로 서버를 선택하기 때문입니다. 서버 로드를 균일하게 유지하기 위해 진정한 로드 밸런싱이 필요한 경우 하드웨어나 소프트웨어 중 일종의 전용 로드 밸런싱 솔루션을 찾아야 합니다.
답변2
어쩌면 일반 Linux HA 클러스터의 두 노드처럼 두 개의 domU VM을 구성할 수도 있습니다. 하지만 이 구성은 두 번째 노드가 꺼지지 않고 대기 중인 경우에만 작동할 수 있다고 생각합니다. 첫 번째 노드가 작동하지 않을 때 백업 domU 노드를 시작하려면 첫 번째 노드의 상태를 영원히 확인하고 오류가 발생할 경우 완전히 종료되도록 실행하는 스크립트를 dom0 수준에서 작성해야 한다고 생각합니다. 백업 시작(저는 그러한 쉘 스크립트가 너무 어려워서는 안 된다고 생각합니다. 또는 작업을 수행할 수 있는 Linux용 좋은 소프트웨어를 사용할 수 있지만 더 방해가 될 수 있습니다).
또한 이를 위해 일반 Linux 시스템과 같은 두 개의 VM을 고려하고 로드 밸런싱 표준 Linux 솔루션을 설치하고 사용할 수 있습니다.
답변3
OpenVPN HA 클러스터 설정의 경우 OpenVPN, WAN 부하 분산 및 OSPF의 조합을 사용할 수 있습니다. 여기에 새로운 HOWTO가 있습니다: http://www.vyatta4people.org/highly-available-openvpn-connection-between-two-offices/ 즐기다!