백서: 고가용성에 적합한 클라우드 스토리지를 선택하기 위한 구매자 가이드
고가용성은 비즈니스 필수 애플리케이션에 있어 타협할 수 없는 요소입니다. 하지만 시장에 너무 많은 클라우드 스토리지 솔루션이 있는 상황에서 어떻게 선택하시겠습니까? 이 백서에서는 귀하에게 적합한 고가용성, 원활한 재해 복구 및 비용 효율적인 확장성을 보장하기 위해 구매하기 전에 물어봐야 할 10가지 주요 질문에 대해 설명합니다.
다음의 허가를 받아 복제됨시오스
SIOS SANless clusters High-availability Machine Learning monitoring
고가용성은 비즈니스 필수 애플리케이션에 있어 타협할 수 없는 요소입니다. 하지만 시장에 너무 많은 클라우드 스토리지 솔루션이 있는 상황에서 어떻게 선택하시겠습니까? 이 백서에서는 귀하에게 적합한 고가용성, 원활한 재해 복구 및 비용 효율적인 확장성을 보장하기 위해 구매하기 전에 물어봐야 할 10가지 주요 질문에 대해 설명합니다.
다음의 허가를 받아 복제됨시오스
이 주문형 심포지엄 세션은 달성하기 위한 모범 사례에 중점을 둡니다.고가용성AWS 기반 SAP 및 SAP S/4HANA 애플리케이션에 대한 비즈니스 연속성. 클라우드 인프라에 대한 의존도가 높아짐에 따라 기업은 잠재적인 중단으로부터 중요한 데이터와 애플리케이션을 보호하기 위해 탄력적이고 안정적인 SAP 시스템을 갖추는 것이 필수적입니다.
AWS는 백업 및 복구, 복제, 장애 조치를 포함하여 AWS 기반 SAP 및 SAP S/4HANA에 대한 고가용성 및 재해 복구의 주요 구성 요소에 대한 포괄적인 개요를 제공합니다. 그리고 AWS에서 사용할 수 있는 다양한 전략과 도구를 살펴보세요. AWS에서 탄력적이고 안정적인 SAP 및 SAP S/4HANA를 생성하는 방법에 대한 통찰력을 얻으십시오.
다음의 허가를 받아 복제됨시오스
SIOS LifeKeeper는 SAP HANA 환경(온프레미스 또는 클라우드)에 대한 기본 고가용성 보호를 제공하고 클러스터 장애 조치가 SAP 모범 사례를 자동으로 준수하여 빠르고 안정적인 지속적인 운영을 보장합니다.
이 영상에서는토드 도안, SIOS Technology의 솔루션 설계자는 SIOS LifeKeeper가 자동 장애 조치를 빠르고 쉽게 수행하여 고가용성을 유지하는 데 어떻게 도움이 되는지 보여줍니다.
SAP HANA의 경우:
SAP 인프라를 위한 고가용성 옵션:
SIOS LIfeKeeper의 장점:
비즈니스 연속성을 보장하려는 기업을 위한 조언:
SIOS Lifekeeper가 실제로 작동하는 모습을 살펴보겠습니다.
다음의 허가를 받아 복제됨시오스
소개 고가용성(HA) Oracle 인스턴스가 필요한 비즈니스 크리티컬 애플리케이션용 POC를 생성해야 하는 개발자로서 AWS EC2에서 Oracle EC2 HA 클러스터를 설정해야 합니다.어디에서 시작합니까?당신이 우리 대부분과 같다면 다음 작업을 검색하고 기사, 설치 가이드, 문서 및 스택 오버플로에 대한 질문을 읽는 데 끝없는 시간을 보낼 것입니다. 거의 맞는 답을 많이 찾을 수 있지만 버전이나 환경에 완전히 맞지는 않습니다. 설상가상으로 당신은 토끼 굴로 내려가 작동하지 않는 환경을 구축하는 데 며칠을 낭비하게 됩니다.
다양한 기술을 사용하여 개념 증명을 개발하기 위해 HA 환경을 설정하는 데 중점을 둔 일련의 블로그를 구성할 예정입니다. SIOS HA 솔루션 예: DataKeeper, LifeKeeper 및 SIOS Protection Suite. 내가 아직 다루지 않은 즉각적인 요구 사항이 있는 경우 알려주시면 내 백로그에서 구성을 위로 이동하겠습니다.
읽어주셔서 감사합니다.나는 그것이 당신의 삶을 더 쉽게 만들어주기를 바랍니다. 이러한 작업을 수행하는 방법에 이미 익숙한 경우 실행할 수 있는 아래 작업 목록이 있습니다. 다음은 각 작업을 수행하기 위한 단계별 가이드입니다.
이 첫 번째 블로그에서는 Linux용 SIOS LifeKeeper를 사용하여 Oracle Cluster용 AWS에 HA 환경을 설정합니다.이것은 모든 전제 조건을 제거하는 것을 의미합니다. Oracle Linux 8 AMI에서 aws-marketplace/Oracle Database 19.8.0 Enterprise Edition을 사용할 것입니다.이러한 항목은 자주 변경되며 필요에 맞는 올바른 항목을 찾기 어려울 수 있습니다.리포지토리, 라이선스, 등록 및 보안 문제로 인해 무엇이든, 특히 Oracle과 같은 것을 클라우드에 설치하는 것이 매우 어렵기 때문에 이 AMI는 세 번째 시도였습니다.이 AMI는 Oracle이 이미지에 이미 설치되어 있기 때문에 실제로 작동합니다.OS 버전과 Oracle DB 버전이 SIOS에서 지원되는지 확인하십시오.확인할 수 있는 것 여기 .
내 인스턴스에는 다음이 있습니다.
데이터베이스용 인스턴스에 추가 디스크를 연결하고 중복 통신 경로를 위해 추가 NIC를 연결합니다.두 NIC가 서로 다른 서브넷에 있는지 확인하십시오.이는 또한 인스턴스에 연결하기 위해 탄력적 IP 주소를 수동으로 생성하고 할당해야 함을 의미합니다.
인스턴스에 연결하고 추가 디스크를 마운트합니다. 퍼티와 Xming을 사용하여 내 인스턴스에 연결하고 있습니다.Xming을 사용하는 경우 연결을 시도하기 전에 Xlaunch를 실행해야 합니다.
인스턴스를 시작한 후 새 디스크를 분할해야 합니다.로 찾는 것이 가장 쉽습니다.[ ls /dev/disk/by-path ] :
이제 다음을 사용하여 디스크를 분할해야 합니다. fdisk :
다음으로 새 파티션에 파일 시스템을 만듭니다. mkfs.xfs :
이제 다음을 사용하여 파일 시스템을 마운트합니다. 산 :
마지막으로 fstab에서 디스크를 자동으로 마운트하는 항목을 추가합니다.
Oracle용 설치를 실행할 필요가 없다는 점에 유의해야 합니다.AMI가 이를 수행하고 사용자를 위한 데이터베이스를 생성했습니다.이 AMI로 사전 구성된 데이터베이스를 삭제하고 DBCA를 사용하여 /data 디스크에 새 데이터베이스를 생성했습니다.데이터베이스를 시작하고 스키마를 생성하고 SQLPLUS를 사용하여 데이터를 추가했습니다.이를 위해서는 Xwindows가 작동해야 합니다.
Putty를 사용하는 Xdisplay는 Windows용 Xming을 사용하여 설정할 수 있습니다.먼저 Xming을 설치합니다.그런 다음 X11 전달을 활성화했는지 확인하고 x 표시 위치에 localhost:0.0을 입력하고 로컬 표시를 위한 x 권한 파일에 경로 및 xming.exe 실행 파일을 입력합니다.
이렇게 하면 Windows 쪽이 처리되지만 여전히 Linux 쪽을 수정해야 합니다.먼저 /etc/ssh/sshd_config를 편집하고 "X11Forwarding yes"의 주석을 제거합니다.다음은 Xauthority에 올바른 키를 찾아 추가하는 것입니다.사용자 전환을 완료한 경우 새 세션을 시작해야 할 수 있습니다.ec2-user 실행으로 로그인한 후 xauth 목록 그러면 Xauthority 파일에 추가해야 하는 16진수 키가 제공됩니다.oracle 사용자로 전환: 수 – 오라클.그런 다음 실행 xauth는 $DISPLAY를 추가합니다. <xauth 목록에서 복사한 hexkey> .이렇게 하면 정보가 /home/oracle/.Xauthority 파일에 저장됩니다.출구 ec2-user로 돌아갑니다.
퍼티와 Xming을 사용하여 내 인스턴스에 연결하고 있습니다.Xming을 사용하는 경우 연결을 시도하기 전에 Xlaunch를 실행해야 합니다.
인스턴스를 시작한 후 새 디스크를 분할해야 합니다.로 찾는 것이 가장 쉽습니다.[ ls /dev/disk/by-path ] :
이제 다음을 사용하여 디스크를 분할해야 합니다. fdisk :
다음으로 새 파티션에 파일 시스템을 만듭니다. mkfs.xfs :
이 시점에서 /u01의 이름을 /oracle 디렉토리로 변경하여 새 파일 시스템을 /u01에 마운트할 수 있습니다. 여기서 Oracle은 AMI로 구축된 서버에 상주합니다.
mkdir /u01로 마운트 지점을 생성하고 mount로 볼륨을 마운트합니다.mv /oracle /u01을 사용하여 파일을 새 디스크로 이동합니다. 약 11GB의 데이터이므로 시간이 다소 걸립니다.
마지막으로 fstab에서 디스크를 자동으로 마운트하는 항목을 추가합니다.
Oracle용 설치를 실행할 필요가 없다는 점에 유의해야 합니다.AMI가 이를 수행하고 사용자를 위한 데이터베이스를 생성했습니다.데이터베이스를 시작하고 스키마를 만들고 SQLPLUS를 사용하여 데이터를 추가했습니다.
awscli 키트가 필요합니다. 따라서 우리가 루트인 동안 다음을 사용하여 파일을 다운로드합니다. 컬 "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
로 파일의 압축을 풉니다. awscliv2.zip 압축 해제
와 함께 응용 프로그램을 설치 sudo ./aws/설치
다음으로 콘솔 오른쪽 상단의 계정을 클릭하여 AWS에서 액세스 키를 설정한 다음 선택합니다. 보안 자격 증명
액세스 키 만들기를 클릭합니다.
그런 다음 .csv 파일 다운로드를 클릭합니다.
이 파일을 서버로 전송하고 csv 파일의 키 ID와 액세스 키를 사용하여 AWS를 구성합니다. AWS 구성 명령:
다음과 같이 작동하는지 테스트합니다. aws –no-paginate –no-cli-pager ec2 설명 인스턴스
먼저 Oracle 사용자를 root 및 wheel 그룹에 추가하여 의사 권한을 부여했습니다( Usermod -aG 휠 오라클) .이렇게 하면 Oracle 계정을 lkadmin 계정으로 만들어 편리하게 사용할 수 있습니다.두 서버에 sps.img 및 라이센스 파일을 다운로드했습니다.
소프트웨어를 설치하기 전에 수행해야 할 몇 가지 전제 조건 단계가 더 있습니다.먼저 TCP 포트 5900-59010을 열어 통신할 수 있도록 서버에 대한 보안 그룹을 구성합니다. TCP 포트 81 및 82도 엽니다. 또한 가상 IP에 대해 포트가 열려 있는지 확인하십시오.
클러스터의 가상 IP가 작동하려면 경로 테이블을 업데이트해야 합니다.이 다중 서브넷 클러스터 구성에서 가상 IP는 VPC에 할당된 CIDR 범위 밖에 있어야 합니다.트래픽을 클러스터의 가상 IP(172.30.0.101)에서 기본 클러스터 노드(Oracle1)로 보낼 새 경로를 정의합니다. VPC 대시보드에서 경로 테이블을 선택하고 편집을 클릭합니다.기본 서버에서 기본 ENI(탄력적 네트워크 인터페이스)의 대상이 있는 "172.30.0.101/32"에 대한 경로를 추가합니다.
네트워크 인터페이스에서 한 번에 하나씩 각 인터페이스를 선택한 다음 작업에서 소스/대상 변경을 선택합니다.
인증 오류가 발생하지 않는 한 올바르게 설치되고 구성된 것입니다.
체크 해제 할 수 있게 하다 상자:
모든 인터페이스에 대해 반복합니다.
이미 DNS 서버 설정이 없는 경우 이름으로 서로를 적절하게 확인할 수 있도록 두 서버 모두에 호스트 파일 항목을 만들고 싶을 것입니다.
oracle-vip을 가리키도록 $ORACLE_HOME/network/admin/listener.ora 파일을 편집하거나 생성합니다.
/etc/sysconfig/selinux 파일을 편집하고 "SELINUX=disabled"를 설정합니다.
서버를 재부팅합니다.이 시점에서 서버가 다시 작동하지 않으면 SELINUX 설정을 허용으로 두고 SELINUXTYPE을 비활성화로 설정하여 인스턴스를 차단할 수 있습니다.인스턴스에서 AWS의 볼륨을 연결 해제하고 mount -o rw, nouuid {장치} {마운트 디렉토리} 새로운 또는 기존 작업 인스턴스에 대한 명령./{마운트 디렉터리]/etc/sysconfig/selinux 파일을 편집하고 오류를 수정합니다.파일을 저장하고 이 인스턴스와 볼륨을 마운트 해제 및 연결 해제하고 이전 인스턴스에 다시 연결합니다.
다음으로 루트로 이미지 파일을 마운트하여 SIOS 보호 제품군을 설치했습니다. mount /home/ec2-user/sps.img /mnt/ -t iso9660 -o 루프 . 로 설정을 실행 /mnt/설정 :
LifeKeeper 인증에서 lkadmin 그룹까지 아래로 스크롤하고 Enter 키를 누른 다음 oracle을 'lkadmin' 그룹에 추가합니다.
확인을 선택한 다음 완료로 탭하고 Enter 키를 누릅니다.다음 라이선스 키 파일 설치로 스크롤하고 Enter 키를 누릅니다.
여기에서 라이센스 파일의 위치와 이름을 입력하십시오.
다음으로 복구 키트 선택 메뉴를 선택하고 Enter 키를 누릅니다.
여기에서 네트워킹을 선택합니다.
스페이스바를 눌러 EC2용 LifeKeeper 복구 키트를 선택합니다. Done으로 탭하고 Enter 키를 누릅니다.다음으로 Database 메뉴를 선택하고 아래로 스크롤하여 LifeKeeper Oracle RDBMS Recovery Kit에서 스페이스바를 누릅니다.
Done으로 탭하거나 D를 누르고 Storage까지 아래로 스크롤하고 Enter 키를 누릅니다.다음으로 스페이스바를 누르고 Linux용 DataKeeper를 선택합니다.
Done으로 탭하고 Enter 키를 누르거나 d를 눌러 Recovery Kit Selection으로 되돌아간 다음 Done으로 탭하거나 D를 눌러 Main Configuration 메뉴로 돌아갑니다.
설치 후 LifeKeeper 시작이 선택되었는지 확인한 다음 마지막으로 마지막 탭을 완료하거나 d를 누르면 설치 확인 화면이 표시됩니다.
여기에서 Enter 또는 y를 누르면 설치가 시작됩니다.
다음을 사용하여 LifeKeeper GUI 시작 /opt/LifeKeeper/bin/lkGUIapp 실패하면 .Xauthority 파일에 로그인한 계정의 매직 넘버가 없기 때문일 수 있습니다.나는 oracle로 로그인 한 다음 sudo -i 뿌리를 내리기 위해.따라서 내 GUI가 로드되지 않으면 /home/oracle/.Xauthority 파일을 /root에 복사합니다.
여기서는 oracle로 로그인합니다.
그런 다음 클러스터 연결 버튼을 클릭합니다.
오라클로 로그인:
통신 경로 만들기 버튼을 클릭합니다.
오류가 있는 경우 방화벽과 iptables가 비활성화되어 있는지 확인하십시오.다음을 누르십시오.
다음을 누르십시오.
첫 번째 IP 주소를 선택하고 다음을 누르십시오.
원격 IP를 선택합니다.
다음을 누르십시오.
만들기를 누르십시오.
다음을 누르십시오.
이제 완료를 누르십시오. 다음으로 보조 주소로 14단계를 반복하여 두 번째 통신 경로를 만들어야 합니다.
두 경로가 성공적으로 설정되면 서버가 녹색으로 전환되어야 합니다.
리소스 계층 만들기 버튼을 클릭합니다.
데이터 복제를 선택하고 다음을 누르십시오.
다음을 누르십시오(지능형이란 장애 조치 후 수동으로 장애 복구해야 함을 의미함).
다음을 누르십시오.
기본 서버를 선택하고 다음을 누르십시오.
기존 파일 시스템 복제를 선택하고 다음을 누르십시오.
기존 마운트 지점을 선택하고 다음을 누르십시오.
만들기 데이터 복제 리소스 태그를 지정하고 다음을 누르십시오.
파일 시스템 리소스 태그를 선택하고 다음을 누르십시오.[1]
최적의 성능을 위해 비트맵 파일은 임시 볼륨에 배치해야 합니다. 테스트 목적으로 위에 표시된 것처럼 비트맵을 OS 디스크에 배치할 수 있습니다. 비트맵 파일 위치를 선택하고 다음을 누르십시오.
비동기 복제 사용에 대해 아니오를 선택하고 다음을 누르십시오.
대상 서버를 선택하고 다음을 누르십시오.
스위치백 유형을 선택하고 다음을 누르십시오.
템플릿 우선 순위를 선택하고 다음을 누르십시오.
대상 우선 순위를 선택하고 다음을 누르십시오.
다음:
대상 디스크를 선택하고 다음을 누르십시오.
다음을 누르십시오.
다음을 누르십시오.
복제에 사용할 네트워크 끝점을 선택하고 다음을 누르십시오.
마운트 지점을 선택하고 다음을 누르십시오.
리소스 태그를 선택하고 다음을 누르십시오.
완료를 누르십시오:
히트 완료:
/u01을 클릭하면 볼륨 동기화가 표시됩니다.
리소스 만들기 버튼을 클릭합니다.
IP를 선택하고 다음을 누르십시오.
스위치백 유형을 선택하고 다음을 누르십시오.
기본 서버를 선택하고 다음을 누르십시오.
6단계에서 가상 IP 주소를 입력하고 다음을 누르십시오.
VIP의 서브넷 마스크를 입력하고 다음을 누르십시오.
네트워크 인터페이스를 입력하고 다음을 누르십시오.
리소스 태그를 입력하고 다음을 누르십시오.
성공적인 생성 후 다음을 누르십시오.
대상 서버를 선택하고 다음을 누르십시오.
전환 유형을 선택하고 다음을 누르십시오.
우선 순위를 선택하고 다음을 누르십시오.
우선 순위를 선택하고 다음을 누르십시오.
완료되면 다음을 누르십시오.
다음을 누르십시오.
적절한 넷마스크를 선택하고 다음을 누르십시오.
인터페이스를 선택하고 다음을 누르십시오.
리소스 태그를 선택하고 확장을 누르십시오.
성공적으로 완료되면 마침을 누르십시오.
확인 후 완료를 누르십시오.
LifeKeeper에서 이러한 리소스를 구성하기 전에 데이터베이스와 수신기가 실행 중인지 확인하십시오.리소스 만들기 버튼을 클릭합니다.
Oracle Database Listener를 선택하고 다음을 누르십시오.
기본 서버를 선택하고 다음을 누르십시오.
리스너 구성 파일 경로와 파일 이름을 입력하고 다음을 누르십시오.
다음을 누르십시오.
Listener Executables의 경로를 입력하고 다음을 누르십시오.
보호 수준을 선택하고 다음을 누르십시오.
복구 수준을 선택하고 다음을 누르십시오.
필요한 경우 수신기와 연결된 IP 주소를 선택하고 다음을 누릅니다.
리스너 태그 이름을 입력하고 만들기를 누르십시오.
다음을 누르십시오.
두 번째 서버에서 리소스를 빌드하려면 기본값 수락을 누르십시오.
완료를 클릭하십시오:
완료를 클릭하고 LSNR 및 /u01을 확장합니다.
리소스 계층 구조 만들기 버튼을 클릭합니다.
Oracle 데이터베이스를 선택하고 다음을 누르십시오.
스위치백 유형을 선택하고 다음을 누르십시오.
서버를 선택하고 다음을 누르십시오.
데이터베이스 이름을 선택하고 다음을 누르십시오(홈 디렉토리를 찾을 수 없다는 오류가 발생하면 데이터베이스가 실행 중인지 확인하십시오).
sysdba 사용자 이름을 입력하고 다음을 누르십시오.
계정의 비밀번호를 입력하고 다음을 누르십시오.
Oracle Listener를 선택하고 다음을 누르십시오.
만들기를 누르십시오.
성공적으로 생성되면 다음을 선택합니다.
기본값 수락을 선택합니다.
완료 선택:
완료 누르기: 트리를 확장하여 모든 리소스를 확인합니다.
리소스 계층 만들기 버튼을 클릭합니다.
Amazon EC2를 선택하고 다음>을 누르십시오.
지능형을 선택하고 다음>을 누르십시오.
기본 서버를 선택하고 다음>을 누르십시오.
EC2 리소스 유형(이 예에서는 백엔드 클러스터 사용)을 선택하고 다음>을 누릅니다.
IP 리소스를 선택하고 다음>을 선택합니다.
EC2 리소스 태그 이름을 선택하고 생성을 누릅니다.
자원이 성공적으로 생성되면 몇 초 후 다음>을 누르면 사전 확장 마법사가 나타납니다.기본값 수락을 누르십시오.
확인이 성공적으로 완료되면 기본값 수락을 다시 누르십시오.
마침을 누르고 확인 후 완료를 누릅니다.
구성이 완료되었습니다.이제 장애 조치를 테스트할 수 있습니다.
기본적으로 LifeKeeper는 장애 조치 단순히 서버를 종료하거나 재부팅하면 리소스를 사용할 수 있습니다. 서버를 종료하기 전에 워크로드를 이동하려면 활성 노드를 종료하기 전에 대기 서버로 리소스를 수동으로 이동해야 합니다. 그러나 테스트를 용이하게 하기 위해 기본 동작을 변경할 수 있습니다. 이는 아래와 같이 종료 전략을 변경하여 제어합니다.
주 서버를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다.
일반 탭에서 종료 전략을 리소스 전환으로 변경한 다음 적용을 누릅니다.
그런 다음 서버 풀다운에서 보조 서버를 선택하고 설정 변경을 확인합니다. 확인을 누릅니다.
보조 서버에서 lkGUIapp을 실행하고 있습니다.기본 서버에 있는 경우 LifeKeeper GUI를 종료하고 보조 서버에서 실행하십시오.
모든 리소스 계층 구조를 확장하고 기본 서버에 대한 SSH 세션을 엽니다.
또한 oracle-vip에 ping -i 5를 실행하고 있습니다.
기본 서버를 종료합니다.
제 경우에는 IP가 25초 미만 동안 응답을 멈춘 것을 볼 수 있습니다.5초 간격으로 4번의 핑 20-23을 놓쳤습니다.이제 모든 것이 백업 서버에서 활성화됩니다.주 서버가 여전히 다운되어 있기 때문에 계층 구조에 대한 경고가 표시됩니다.
스위치백을 지능형으로 놔둔 경우 주 서버를 불러온 후에는 수동으로 주 서버에서 서비스를 불러와야 합니다.서비스를 시작하기 전에 기본 서버가 InSync인지 확인하십시오.
cdb1의 StandBy 버튼을 마우스 오른쪽 버튼으로 클릭하고 In Service…를 선택합니다.
클릭 서비스
완료를 누르십시오.
디스크가 다시 동기화되는 데 몇 분 정도 걸리지만 결국 동기화됩니다.
모든 것을 복원하면 이제 개발 준비가 된 AWS의 HA Oracle 데이터베이스가 있습니다.
의 허가를 받아 복제됨 시오스
이 단계별 가이드에서는 Amazon의 Elastic Compute Cloud (Amazon EC2)에서 고 가용성 2 노드 MySQL 클러스터 (감시 서버 포함)를 구성하는 데 필요한 모든 단계를 안내합니다. 가이드에는 스크린 샷, 셸 명령 및 코드 조각이 모두 포함되어 있습니다. Amazon EC2에 어느 정도 익숙하고 이미 계정이 있다고 가정합니다. 그렇지 않은 경우 오늘 가입 할 수 있습니다. 또한 Linux 시스템 관리 및 가상 IP 등과 같은 장애 조치 클러스터링 개념에 대한 기본적인 지식이 있다고 가정하겠습니다.
장애 조치 클러스터링은 수년 동안 사용되어 왔습니다. 일반적인 구성에서는 두 개 이상의 노드가 공유 스토리지로 구성되어 기본 노드에서 장애 조치가 발생할 경우 보조 또는 대상 노드가 최신 데이터에 액세스 할 수 있습니다. 공유 스토리지를 사용하면 거의 0에 가까운 복구 지점 목표가 가능할뿐만 아니라 대부분의 클러스터링 소프트웨어에 대한 필수 요구 사항입니다. 그러나 공유 스토리지에는 몇 가지 문제가 있습니다. 첫째, 단일 장애 지점 위험입니다. 공유 스토리지 (일반적으로 SAN)가 실패하면 클러스터의 모든 노드가 실패합니다. 둘째, SAN은 비용이 많이 들고 구매, 설정 및 관리가 복잡 할 수 있습니다. 셋째, Amazon EC2를 포함한 퍼블릭 클라우드의 공유 스토리지는 고 가용성 (99.99 % 가동 시간), 거의 제로에 가까운 복구 시간 및 복구 지점 목표, 재해 복구 보호를 유지하려는 회사에게는 불가능하거나 실용적이지 않습니다.
다음은 엄격한 HA / DR SLA를 충족하면서 이러한 문제를 제거하기 위해 클라우드에서 SANless 클러스터를 생성하는 것이 얼마나 쉬운 지 보여줍니다. 아래 단계에서는 Amazon EC2와 함께 MySQL 데이터베이스를 사용하지만 SQL, SAP, Oracle 또는 기타 애플리케이션을 보호하기 위해 AWS에서 2 노드 클러스터를 생성하는 데 동일한 단계를 적용 할 수 있습니다.
참고 : 기능, 화면 및 버튼보기는 아래에 제시된 스크린 샷과 약간 다를 수 있습니다.
1. Virtual Private Cloud (VPC) 생성
2. 인터넷 게이트웨이 생성
삼. 서브넷 생성 (가용 영역)
4. 라우팅 테이블 구성
5. 보안 그룹 구성
6. 인스턴스 시작
7. 탄력적 IP 생성
8. 가상 IP에 대한 경로 항목 생성
9. ENI에 대한 소스 / 대상 확인 비활성화
10. 액세스 키 ID 및 보안 액세스 키 얻기
11. Linux OS 구성
12. EC2 API 도구 설치
13. MySQL 설치 및 구성
14. 클러스터 설치 및 구성
15. 클러스터 연결 테스트
이 문서에서는 단일 Amazon EC2 리전 내에서 클러스터를 생성하는 방법을 설명합니다. 클러스터 노드 (node1, node2 및 감시 서버)는 최대 가용성을 위해 서로 다른 가용성 영역에 상주합니다. 이는 또한 노드가 다른 서브넷에 있음을 의미합니다.
다음 IP 주소가 사용됩니다.
먼저 Virtual Private Cloud (VPC라고도 함)를 만듭니다. VPC는 전용 Amazon 클라우드 내의 격리 된 네트워크입니다. IP 주소 블록 및 서브넷, 라우팅 테이블, 보안 그룹 (예 : 방화벽) 등을 완벽하게 제어 할 수 있습니다. 가상 네트워크에 Azure Iaas VM (가상 머신)을 시작합니다.
기본 AWS 대시 보드에서 "VPC"를 선택합니다.
"Your VPCs"아래에서 화면 오른쪽 상단에서 적절한 지역을 선택했는지 확인합니다. 이 가이드에서는 3 개의 가용 영역이있는 리전이므로 "미국 서부 (오레곤)"리전이 사용됩니다. 지역 및 가용 영역에 대한 자세한 내용을 보려면 여기를 클릭하세요.
VPC에 이름을 지정하고 사용할 IP 블록을 지정합니다. 이 가이드에서는 10.0.0.0/16이 사용됩니다.
이제“Your VPCs”화면에 새로 생성 된 VPC가 표시됩니다.
다음으로 인터넷 게이트웨이를 만듭니다. 인스턴스 (VM)가 인터넷과 통신 할 수 있도록하려는 경우 필요합니다.
왼쪽 메뉴에서 인터넷 게이트웨이를 선택하고 인터넷 게이트웨이 만들기 버튼을 클릭합니다. 이름을 지정하고 다음을 만듭니다.
다음으로 인터넷 게이트웨이를 VPC에 연결합니다.
VPC를 선택하고 연결을 클릭합니다.
다음으로 서브넷 3 개를 만듭니다. 각 서브넷은 자체 가용 영역에 상주합니다. 3 개의 인스턴스 (VM : node1, node2, 감시)는 별도의 서브넷 (따라서 가용 영역)으로 시작되므로 가용 영역의 장애로 인해 클러스터의 여러 노드가 제거되지 않습니다.
미국 서부 (오레곤) 리전 인 us-west-2에는 3 개의 가용성 영역 (us-west-2a, us-west-2b, us-west-2c)이 있습니다. 3 개의 가용성 영역 각각에 하나씩 3 개의 서브넷을 만듭니다.
VPC 대시 보드에서 서브넷으로 이동 한 다음 서브넷 생성 :
첫 번째 서브넷에 이름 (“Subnet1)”을 지정하고 가용성 영역 us-west-2a를 선택한 다음 네트워크 블록 (10.0.0.0/24)을 정의합니다.
두 번째 서브넷 가용성 영역 us-west-2b를 생성하려면 반복합니다.
us-west-2c 가용성 영역에 세 번째 서브넷을 생성하려면 반복합니다.
완료되면 아래에 표시된대로 각각 다른 CIDR 블록과 별도의 가용 영역에 3 개의 서브넷이 생성되었는지 확인합니다.
외부로의 트래픽이 이전 단계에서 만든 인터넷 게이트웨이로 전송되도록 VPC의 라우팅 테이블을 업데이트합니다. VPC 대시 보드에서 라우팅 테이블을 선택합니다. Routes 탭으로 이동하면 기본적으로 VPC 내에서만 트래픽을 허용하는 하나의 경로 만 존재합니다.
편집을 클릭하십시오.
다른 경로 추가 :
새 경로의 대상은 "0.0.0.0/0"(인터넷)이고 대상에 대해 인터넷 게이트웨이를 선택합니다. 그런 다음 저장을 클릭합니다.
다음으로 3 개의 서브넷을 라우팅 테이블과 연결합니다. "서브넷 연결"탭을 클릭하고 편집 :
3 개의 서브넷 모두 옆에있는 확인란을 선택하고 저장합니다.
3 개의 서브넷이 기본 라우팅 테이블과 연결되어 있는지 확인합니다.
나중에 돌아와서 라우팅 테이블을 다시 한 번 업데이트하여 트래픽이 클러스터의 가상 IP와 통신 할 수 있도록 라우트를 정의 할 것입니다.하지만 이는 Linux 인스턴스 (VM)가 생성 된 후에 수행되어야합니다.
들어오는 SSH 및 VNC 트래픽을 허용하도록 보안 그룹 (가상 방화벽)을 수정합니다. 둘 다 나중에 Linux 인스턴스를 구성하고 클러스터 소프트웨어의 설치 / 구성을 구성하는 데 사용됩니다.
왼쪽 메뉴에서 "보안 그룹"을 선택한 다음 "인바운드 규칙"탭을 클릭합니다. 편집을 클릭하십시오.
SSH (포트 22) 및 VNC 모두에 대한 규칙을 추가합니다. VNC는 일반적으로 구성 방법에 따라 5900의 포트를 사용하므로이 가이드의 목적에 따라 5900-5910 포트 범위를 엽니 다. VNC 설정에 따라 구성하십시오.
이 가이드에서는 3 개의 인스턴스 (가상 머신)를 프로비저닝합니다. 처음 두 개의 VM ( "node1"및 "node2"라고 함)은 MySQL 데이터베이스 및 관련 리소스를 온라인 상태로 만드는 기능을 가진 클러스터 노드로 작동합니다. 세 번째 VM은 분할 브레인에 대한 추가 보호를 위해 클러스터의 증인 서버 역할을합니다.
최대한의 가용성을 보장하기 위해 VM 3 개 모두 단일 지역 내의 서로 다른 가용성 영역에 배포됩니다. 이는 각 인스턴스가 다른 서브넷에 있음을 의미합니다.
기본 AWS 대시 보드로 이동하여 EC2를 선택합니다.
"node1"만들기
첫 번째 인스턴스 ( "node1")를 만듭니다. 인스턴스 시작을 클릭합니다.
Linux 배포를 선택하십시오. 나중에 사용되는 클러스터 소프트웨어는 RHEL, SLES, CentOS, Oracle Linux를 지원합니다. 이 가이드에서는 RHEL 7.X를 사용합니다.
그에 따라 인스턴스 크기를 조정하십시오. 이 가이드의 목적과 비용을 최소화하기 위해 t2.micro 크기가 사용되었습니다. 무료 등급이 적용되기 때문입니다. 인스턴스 크기 및 가격에 대한 자세한 내용은 여기를 참조하세요.
다음으로 인스턴스 세부 정보를 구성합니다. 중요 :이 첫 번째 인스턴스 (VM)를 "Subnet1"로 시작하고 서브넷 (10.0.0.0/24)에 유효한 IP 주소를 정의해야합니다. 서브넷의 첫 번째 사용 가능한 IP이므로 10.0.0.4 미만이 선택되었습니다.
참고 : AWS의 특정 서브넷에있는 .1 / .2 / .3은 예약되어 사용할 수 없습니다.
다음으로 클러스터 노드에 추가 디스크를 추가합니다 ( "node1"및 "node2"모두에서 수행됨). 이 디스크는 MySQL 데이터베이스를 저장하고 나중에 노드간에 복제됩니다.
참고 : '증인'노드에 디스크를 추가 할 필요가 없습니다. "node1"및 "node2"만. 새 볼륨을 추가하고 원하는 크기를 입력합니다.
인스턴스 Node1에 대한 태그를 정의하십시오.
인스턴스를 기존 보안 그룹과 연결하여 이전에 생성 한 방화벽 규칙이 활성화되도록합니다.
시작을 클릭합니다.
중요 : AWS 환경의 첫 번째 인스턴스 인 경우 새 키 쌍을 만들어야합니다. 비공개 키 파일은 Linux 인스턴스에 SSH로 연결할 때 필요하므로 안전한 위치에 저장해야합니다.
"node2"만들기
위의 단계를 반복하여 두 번째 Linux 인스턴스 (node2)를 만듭니다. Node1과 똑같이 구성하십시오. 하지만 'Subnet2'(us-west-2b 가용성 영역)에 배포해야합니다. Subnet2의 IP 범위는 10.0.1.0/24이므로 여기에서는 IP 10.0.1.4가 사용됩니다.
두 번째 디스크도 Node2에 추가해야합니다. Node1에 추가 한 디스크와 정확히 같은 크기 여야합니다.
두 번째 인스턴스에 태그 지정…. “Node2”:
"증인"만들기
위의 단계를 반복하여 세 번째 Linux 인스턴스 (증인)를 만듭니다. 두 번째 디스크를 추가 할 필요가 없다는 점을 제외하면 Node1 & Node2와 똑같이 구성합니다.이 인스턴스는 클러스터에 대한 감시 역할 만하며 MySQL을 온라인 상태로 만들지 않기 때문입니다.
'Subnet3'(us-west-2c 가용성 영역)에 배포해야합니다. Subnet2의 IP 범위는 10.0.2.0/24이므로 여기에서는 IP 10.0.2.4가 사용됩니다.
참고 : 감시 노드에는 기본 디스크 구성이 좋습니다. 두 번째 디스크는 필요하지 않습니다.
감시 노드에 태그를 지정합니다.
3 개의 인스턴스를 프로비저닝하는 데 약간의 시간이 걸릴 수 있습니다. 완료되면 EC2 콘솔에서 실행중인 것으로 표시됩니다.
그런 다음 외부에서 인스턴스에 연결하는 데 사용할 공개 IP 주소 인 탄력적 IP를 만듭니다. 왼쪽 메뉴에서 탄력적 IP를 선택한 다음 "새 주소 할당"을 클릭합니다.
새로 생성 된 탄력적 IP를 선택하고 마우스 오른쪽 버튼을 클릭 한 다음 "Associate Address"를 선택합니다.
이 탄력적 IP를 Node1과 연결합니다.
인터넷 액세스를 원하거나 직접 SSH / VNC 할 수 있도록하려면 다른 두 인스턴스에 대해이 작업을 반복합니다.
이 시점에서 3 개의 인스턴스가 모두 생성되었으며 클러스터의 가상 IP가 작동하려면 라우팅 테이블을 한 번 더 업데이트해야합니다. 이 다중 서브넷 클러스터 구성에서 가상 IP는 VPC에 할당 된 CIDR 범위 밖에 있어야합니다.
트래픽을 클러스터의 가상 IP (10.1.0.10), 기본 클러스터 노드 (Node1)로 보내는 새 경로를 정의합니다.
VPC 대시 보드에서 라우팅 테이블을 선택하고 편집을 클릭합니다. 대상이 Node1 인 "10.1.0.10/32"에 대한 경로를 추가합니다.
다음으로 클러스터 노드의 ENI (Elastic Network Interface)에 대한 소스 / 대상 확인을 사용 중지합니다. 이는 인스턴스가 클러스터의 가상 IP 주소에 대한 네트워크 패킷을 수락하기 위해 필요합니다.
모든 ENI에 대해이 작업을 수행하십시오.
“Network Interfaces”를 선택하고 ENI를 마우스 오른쪽 버튼으로 클릭 한 다음“Change Source / Dest Check”를 선택합니다.
"Disabled"선택 :
가이드의 뒷부분에서 클러스터 소프트웨어는 AWS 명령 줄 인터페이스 (CLI)를 사용하여 클러스터의 가상 IP에 대한 라우팅 테이블 항목을 조작하여 트래픽을 활성 클러스터 노드로 리디렉션합니다. 이 기능이 작동하려면 AWS CLI가 올바르게 인증 할 수 있도록 액세스 키 ID와 보안 액세스 키를 얻어야합니다.
EC2 대시 보드의 오른쪽 상단에서 이름을 클릭하고 아래 드롭 다운에서 "보안 자격 증명"을 선택합니다.
표의 "액세스 키 (액세스 키 ID 및 보안 액세스 키)"섹션을 확장하고 "새 액세스 키 만들기"를 클릭합니다. 키 파일을 다운로드하여 안전한 위치에 저장하십시오.
새로 생성 된 Linux 인스턴스 (SSH를 통해)에 연결하려면 인스턴스를 마우스 오른쪽 버튼으로 클릭하고 "연결"을 선택합니다. 그러면 인스턴스에 연결하기위한 지침이 표시됩니다. 이전 단계에서 생성 / 다운로드 한 개인 키 파일이 필요합니다.
예:
여기에서 잠시 동안 EC2 대시 보드를 떠나 명령 줄에서 손을 더럽힐 것입니다. Linux 관리자로서 지금까지는 익숙해야합니다.
AWS의 Linux VM (또는 기본 "ec2-user"계정)에 대한 루트 암호가 제공되지 않으므로 연결 한 후 "sudo"명령을 사용하여 루트 권한을 얻습니다.
$ sudo su –
DNS 서버를 이미 설정하지 않은 경우 3 개의 서버 모두에 호스트 파일 항목을 생성하여 nameEdit / etc / hosts로 서로를 올바르게 해결할 수 있도록합니다.
/ etc / hosts 파일 끝에 다음 행을 추가하십시오.
10.0.0.4 노드 1
10.0.1.4 노드 2
10.0.2.4 증인
10.1.0.10 mysql-vip
/ etc / sysconfig / linux를 편집하고“SELINUX = disabled”를 설정합니다.
# vi / etc / sysconfig / selinux
#이 파일은 시스템에서 SELinux의 상태를 제어합니다. # SELINUX =는 다음 세 가지 값 중 하나를 취할 수 있습니다.
# 시행 – SELinux 보안 정책이 시행됩니다.
# permissive – SELinux는 강제하는 대신 경고를 출력합니다.
# disabled – SELinux 정책이로드되지 않았습니다.
SELINUX = 비활성화
# SELINUXTYPE =은 다음 두 값 중 하나를 사용할 수 있습니다.
# 타겟팅 – 타겟팅 된 프로세스가 보호됨, # mls – 다단계 보안 보호.
SELINUXTYPE = 타겟팅
기본적으로 이러한 Linux 인스턴스에는 "ip-10-0-0-4.us-west-2.compute.internal"과 같이 서버의 IP 주소를 기반으로하는 호스트 이름이 있습니다.
호스트 이름을 "정상적인"방법 (예 : / etc / sysconfig / network 편집 등)으로 수정하려고하면 재부팅 할 때마다 원래 이름으로 되돌아갑니다 !! 재부팅 후 호스트 이름을 실제로 정적으로 유지하는 방법을 설명하는 AWS 토론 포럼에서 훌륭한 스레드를 찾았습니다.
세부 정보 : https://forums.aws.amazon.com/message.jspa?messageID=560446
“/etc/cloud/cloud.cfg”파일에서 호스트 이름을 설정하는 모듈을 주석 처리합니다. 다음 모듈은 #을 사용하여 주석 처리 할 수 있습니다.
# – set_hostname
# – update_hostname
다음으로 / etc / hostname에서 호스트 이름도 변경하십시오.
SELinux가 비활성화되고 호스트 이름 변경 사항이 적용되도록 3 개의 인스턴스를 모두 재부팅합니다.
Linux 서버의 GUI에 액세스하고 나중에 클러스터를 설치 및 구성하려면 VNC 서버와 몇 가지 다른 필수 패키지를 설치하십시오 (클러스터 소프트웨어에는 redhat-lsb 및 패치 rpms 필요).
# yum groupinstall“X Window System”
# yum groupinstall 'GUI 포함 서버'
# yum install tigervnc-server xterm wget unzip patch redhat-lsb
# vncpasswd
다음 URL은 RHEL 7 / CentOS 7 : For RHEL 7.x / CentOS7.x에서 VNC 서버를 실행하는 데 유용한 가이드입니다.
참고 :이 예시 구성은 디스플레이 2 (: 2, 일명 포트 5902) 및 루트 (안전하지 않음)에서 VNC를 실행합니다. 그에 따라 조정하십시오!
# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:2.serv
# vi /etc/systemd/system/vncserver@:2.service
[Service]
유형 = 포킹
# /tmp/.X11-unix 환경에서 기존 파일 정리 ExecStartPre = / bin / sh -c‘/ usr / bin / vncserver -kill % i> / dev / null 2> & 1 || :’
ExecStart = / sbin / runuser -l root –c“/ usr / bin / vncserver % i –geometry 1024 × 768”PIDFile = / root / .vnc / % H % i.pid
ExecStop = / bin / sh -c‘/ usr / bin / vncserver -kill % i> / dev / null 2> & 1 || :’
# systemctl 데몬 새로 고침
# systemctl 사용 vncserver @ : 2.service
# vncserver : 2 -geometry 1024 × 768
RHEL / CentOS 6.x 시스템의 경우 :
# vi / etc / sysconfig / vncservers
VNCSERVERS =”2 : root”VNCSERVERARGS [2]=”-geometry 1024 × 768 ″
# 서비스 vncserver 시작
# chkconfig vncserver on
VNC 클라이언트를 열고 <ElasticIP : 2>에 연결합니다. 얻을 수 없다면 Linux 방화벽이 방해가 될 수 있습니다. 여기에서 사용중인 VNC 포트 (포트 5902)를 열거 나 지금은 방화벽을 비활성화합니다 (생산 환경에 권장되지 않음).
# systemctl 방화벽 중지
# systemctl 방화벽 사용 중지
Linux 인스턴스가 시작되고 보호 할 애플리케이션 데이터를 저장하기 위해 각 클러스터 노드에 추가 디스크가 추가되었을 때. 이 경우 MySQL 데이터베이스입니다.
두 번째 디스크는 / dev / xvdb로 나타나야합니다. "fdisk -l"명령을 실행하여 확인할 수 있습니다. 당신은 그것을 볼 수 있습니다
/ dev / xvda (OS)가 이미 사용되고 있습니다.
# fdisk -l
# 시작 끝 크기 유형 이름 디스크 / dev / xvda : 10.7GB, 10737418240 바이트, 20971520 섹터 단위 = 1 * 512 = 512 바이트 섹터
섹터 크기 (논리 / 물리) : 512 바이트 / 512 바이트 I / O 크기 (최소 / 최적) : 512 바이트 / 512 바이트 디스크 레이블 유형 : gpt
1 2048 4095 1M BIOS 부팅 부분
2 4096 20971486 10G Microsoft 기본
디스크 / dev / xvdb : 2147MB, 2147483648 바이트, 4194304 섹터 단위 = 1 * 512 = 512 바이트의 섹터
섹터 크기 (논리 / 물리) : 512 바이트 / 512 바이트 I / O 크기 (최소 / 최적) : 512 바이트 / 512 바이트
여기서는 파티션 (/ dev / xvdb1)을 만들고 포맷 한 다음 MySQL의 기본 위치에 마운트합니다.
/ var / lib / mysql. "node1"및 "node2"모두에서 다음 단계를 수행하십시오.
# fdisk / dev / xvdb
fdisk (util-linux 2.23.2)에 오신 것을 환영합니다.
변경 사항은 작성하기로 결정할 때까지 메모리에만 남아 있습니다. 쓰기 명령을 사용하기 전에주의하십시오.
장치에 인식 된 파티션 테이블이 없습니다.
디스크 식별자 0x8c16903a로 새 DOS 디스크 레이블을 작성합니다.
명령어 (m for help) : n
파티션 유형 :
p 기본 (기본 0 개, 확장 0 개, 무료 4 개) e 확장
선택 (기본값 p) : p
파티션 번호 (1-4, 기본값 1) : 1
첫 번째 섹터 (2048-4194303, 기본값 2048) : <enter>
기본값 2048 사용
마지막 섹터, + sectors 또는 + size {K, M, G} (2048-4194303, 기본값 4194303) : <enter>
기본값 4194303 사용
Linux 유형 및 크기 2GiB의 파티션 1이 설정 됨
Command (m for help) : w
파티션 테이블이 변경되었습니다!
ioctl ()을 호출하여 파티션 테이블을 다시 읽습니다. 디스크 동기화.
# mkfs.ext4 / dev / xvdb1
# mkdir / var / lib / mysql
node1에서 파일 시스템을 마운트합니다.
# 마운트 / dev / xvdb1 / var / lib / mysql
EC2 API 도구 (EC2 CLI)는 각 클러스터 노드에 설치해야 클러스터 소프트웨어가 나중에 라우팅 테이블을 조작하여 가상 IP에 연결할 수 있습니다.
다음 URL은이를 설정하는 훌륭한 가이드입니다.
http://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/set-up-ec2-cli-linux.html
주요 단계는 다음과 같습니다.
CLI 도구를 다운로드하고 압축을 풀고 표준 위치 (/ opt / aws)로 이동합니다.
# wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip
# ec2-api-tools.zip 압축을 풉니 다.
# mv ec2-api-tools-1.7.5.1 / / opt / aws /
# export EC2_HOME =”/ opt / aws”
Java가 아직 설치되어 있지 않은 경우 (확인하려면 "which java"실행) 설치합니다.
# yum install java-1.8.0-openjdk
# export JAVA_HOME =”/ usr / lib / jvm / java-1.8.0-openjdk-1.8.0.71-
예 (RHEL 7.2 시스템의 기본 구성 기준. 그에 따라 조정)
AWS 액세스 키와 AWS 보안 키가 필요합니다. 이러한 값은 나중에 클러스터 설정 중에도 필요하므로 편리하게 유지하십시오! 자세한 내용은 다음 URL을 참조하십시오.
https://console.aws.amazon.com/iam/home?#security_credential
# export AWS_ACCESS_KEY = your-aws-access-key-id
# export AWS_SECRET_KEY = your-aws-secret-key
CLI 유틸리티 기능 테스트 :
# / opt / aws / bin / ec2-describe-regions
지역 eu-west-1 ec2.eu-west-1.amazonaws.com
지역 ap-southeast-1 ec2.ap-southeast-1.amazonaws.com
지역 ap-southeast-2 ec2.ap-southeast-2.amazonaws.com
지역 eu-central-1 ec2.eu-central-1.amazonaws.com
지역 ap-northeast-2 ec2.ap-northeast-2.amazonaws.com
지역 ap-northeast-1 ec2.ap-northeast-1.amazonaws.com
지역 us-east-1 ec2.us-east-1.amazonaws.com
지역 sa-east-1 ec2.sa-east-1.amazonaws.com
지역 us-west-1 ec2.us-west-1.amazonaws.com
지역 us-west-2 ec2.us-west-2.amazonaws.com
다음으로 MySQL 패키지를 설치하고 샘플 데이터베이스를 초기화 한 다음 MySQL의 "루트"비밀번호를 설정합니다. RHEL7.X에서 MySQL 패키지는 MariaDB 패키지로 대체되었습니다.
# yum mariadb mariadb-server 설치
# 마운트 / dev / xvdb1 / var / lib / mysql
# / usr / bin / mysql_install_db –datadir =”/ var / lib / mysql /”–user = mysql
# mysqld_safe –user = root –socket = / var / lib / mysql / mysql.sock –port = 3306 –datadi
#
# # 참고 :이 다음 명령은 모든 호스트에서 원격 연결을 허용합니다. 좋은 # echo "update user set Host =’%’여기서 Host =’node1 ′; 플러시 권한 | mysql mys #
# #MySQL의 루트 비밀번호를‘SIOS’로 설정
# echo“update user set Password = PASSWORD (‘SIOS’) where User =’root’; 플러시
MySQL 구성 파일을 생성합니다. 데이터 디스크 (나중에 복제됩니다.
/var/lib/mysql/my.cnf). 예:
# vi /var/lib/mysql/my.cnf
[mysqld] datadir = / var / lib / mysql
소켓 = / var / lib / mysql / mysql.sock
pid-file = / var / run / mariadb / mariadb.pid user = root
port = 3306
# 다양한 보안 위험을 방지하기 위해 심볼릭 링크를 비활성화하는 것이 좋습니다. 심볼릭 링크 = 0
[mysqld_safe]
log-error = / var / log / mariadb / mariadb.log pid-file = / var / run / mariadb / mariadb.pid
[client] 사용자 = 루트 암호 = SIOS
원래 MySQL 구성 파일이있는 경우 옆으로 이동합니다.
# mv /etc/my.cnf /etc/my.cnf.orig
“node2”에서는 MariaDB / MySQL 패키지 만 설치하면됩니다. 다른 단계는 필요하지 않습니다. "node2"에서 :
[root@node2 ~]# yum mariadb mariadb-server 설치
이제 클러스터를 설치하고 구성 할 준비가되었습니다. Linux 용 SIOS Protection Suite (일명 SPS-Linux)는이 가이드에서 클러스터링 기술로 사용됩니다. 단일 통합 솔루션에서 고 가용성 장애 조치 클러스터링 기능 (LifeKeeper)과 실시간 블록 수준 데이터 복제 (DataKeeper)를 모두 제공합니다. SPS-Linux를 사용하면 "SANLess"클러스터 (일명 "비공유"클러스터)를 배포 할 수 있습니다. 즉, EC2 인스턴스의 경우처럼 클러스터 노드에는 공유 스토리지가 없습니다.
VM 3 개 (node1, node2, 감시) 모두에서 다음 단계를 수행합니다.
SPS-Linux 설치 이미지 파일 (sps.img)을 다운로드하고 평가판 라이센스를 얻거나 영구 라이센스를 구입하십시오. 자세한 내용은 SIOS에 문의하십시오.
루프백 마운트하고 루트 (또는 루트 쉘을 얻으려면 먼저 "sudo su-")로 내부에서 "setup"스크립트를 실행합니다. 예 :
# mkdir / tmp / install
# mount -o loop sps.img / tmp / install
# cd / tmp / install
# ./설정
설치 스크립트가 진행되는 동안 여러 질문에 답하라는 메시지가 표시됩니다. 거의 모든 화면에서 Enter 키를 눌러 기본값을 적용합니다. 다음 예외에 유의하십시오.
LifeKeeper 코어의 기존 장애 조치 프로세스와 결합 된 LifeKeeper 용 Quorum / Witness Server 지원 패키지 (steeleye-lkQWK)를 사용하면 전체 네트워크 장애가 일반적 일 수있는 상황에서보다 확실하게 시스템 장애 조치를 수행 할 수 있습니다. 즉, "분할 브레인"상황의 위험을 크게 줄이면서 장애 조치를 수행 할 수 있습니다.
3 개 노드 (node1, node2, witness) 모두에 Witness / Quorum rpm을 설치합니다.
# cd / tmp / install / quorum
# rpm -Uvh steeleye-lkQWK-9.0.2-6513.noarch.rpm
3 개 노드 (node1, node2, Witness) 모두에서 / etc / default / LifeKeeper를 수정하고 NOBCASTPING = 1로 설정합니다.
Witness 서버 ( 'witness')에서만 / etc / default / LifeKeeper를 수정하고 WITNESS_MODE = off / none을 설정합니다.
SPS-Linux는 리소스가 서로 다른 가용성 영역 및 지역의 노드간에 장애 조치를 취할 수 있도록하는 특정 기능을 제공합니다. 여기서 EC2 복구 키트 (즉, 클러스터 에이전트)는 가상 IP에 대한 연결이 활성 클러스터 노드로 라우팅되도록 라우팅 테이블을 조작하는 데 사용됩니다.
EC2 rpm (node1, node2)을 설치합니다.
# cd / tmp / install / amazon
# rpm -Uvh steeleye-lkECC-9.0.2-6513.noarch.rpm
3 개 노드 모두에서 "lkkeyins"명령을 사용하여 SIOS에서 얻은 라이센스 파일을 설치합니다.
# / opt / LifeKeeper / bin / lkkeyins <파일 경로> / <파일 이름> .lic
LifeKeeper 시작
3 개 노드 모두에서 "lkstart"명령을 사용하여 클러스터 소프트웨어를 시작합니다.
# / opt / LifeKeeper / bin / lkstart
LifeKeeper GUI에 대한 사용자 권한 설정
3 개의 노드 모두에서 새 Linux 사용자 계정 (예 :이 예에서는 "tony")을 만듭니다. / etc / group을 편집하고 "tony"사용자를 "lkadmin"그룹에 추가하여 LifeKeeper GUI에 대한 액세스 권한을 부여합니다. 기본적으로 "root"만 그룹의 구성원이며 여기에는 루트 암호가 없습니다.
# useradd tony
# 암호 토니
# vi / etc / group
lkadmin : x : 1001 : 루트, 토니
node1의 탄력적 IP (공용 IP) 주소에 VNC 연결을 설정합니다. 위의 VNC 구성에 따라 앞에서 지정한 VNC 암호를 사용하여 <Public_IP> : 2에 연결합니다. 로그인 한 후 터미널 창을 열고 다음 명령을 사용하여 LifeKeeper GUI를 실행하십시오.
# / opt / LifeKeeper / bin / lkGUIapp &
첫 번째 클러스터 노드 ( "node1")에 연결하라는 메시지가 표시됩니다. VM 생성 중에 지정된 Linux 사용자 ID 및 비밀번호를 입력하십시오.
다음으로, 다음 스크린 샷에 강조 표시된 "서버에 연결"버튼을 클릭하여 "node2"와 "witness"모두에 연결합니다.
이제 GUI에 3 개의 서버가 모두 온라인 상태이고 정상임을 나타내는 녹색 확인 표시 아이콘이 표시됩니다.
"node1"을 마우스 오른쪽 버튼으로 클릭하고 통신 경로 생성을 선택합니다.
"node2"와 "witness"를 모두 선택한 다음 마법사를 따릅니다. 그러면 다음 사이에 통신 경로가 생성됩니다.
node1 및 node2 node1 및 감시
node2와 감시 사이에 통신 경로를 생성해야합니다. "node2"를 마우스 오른쪽 단추로 클릭하고 통신 경로 작성을 선택하십시오. 마법사를 따라 원격 서버로 "witness"를 선택합니다.
이 시점에서 다음과 같은 통신 경로가 생성되었습니다.
node1 <—> node2 node1 <—> 감시 node2 <—> 감시
서버 앞의 아이콘이 녹색 "확인 표시"에서 노란색 "위험 표시"로 변경되었습니다. 이는 노드간에 통신 경로가 하나뿐이기 때문입니다.
VM에 여러 NIC가있는 경우 (여러 NIC로 Azure VM을 만드는 방법에 대한 정보는 여기에서 찾을 수 있지만이 문서에서는 다루지 않음) 각 서버간에 중복 통신 경로를 만듭니다.
경고 아이콘을 제거하려면보기 메뉴로 이동하여 "통신 경로 중복 경고"를 선택 취소하십시오.
결과:
클러스터 자원의 상태를 보려면 "lcdstatus"명령을 사용하십시오. 다음 명령을 실행하여 관련된 다른 두 서버에 대한 각 노드에서 통신 경로를 올바르게 작성했는지 확인하십시오.
# / opt / LifeKeeper / bin / lcdstatus -q -d node1
머신 네트워크 주소 / 장치 상태 PRIO node2 TCP 10.0.0.4/10.0.1.4
ALIVE 1 감시 TCP 10.0.0.4/10.0.2.4 ALIVE 1
# / opt / LifeKeeper / bin / lcdstatus -q -d node2
머신 네트워크 주소 / 장치 상태 PRIO node1 TCP 10.0.1.4/10.0.0.4
ALIVE 1 감시 TCP 10.0.1.4/10.0.2.4 ALIVE 1
# / opt / LifeKeeper / bin / lcdstatus -q -d 감시
머신 네트워크 주소 / 장치 상태 PRIO node1 TCP 10.0.2.4/10.0.0.4
ALIVE 1 node2 TCP 10.0.2.4/10.0.1.4 ALIVE 1
다음으로 데이터 복제 리소스를 생성하여 / var / lib / mysql 파티션을 node1 (소스)에서 node2 (대상)로 복제합니다. "녹색 더하기"아이콘을 클릭하여 새 리소스를 만듭니다.
다음 선택 사항으로 마법사를 따릅니다.
복구 키트를 선택하십시오 : 데이터 복제 스위치 백 유형 : 지능형
서버 : node1
계층 유형 : 기존 파일 시스템 복제
기존 마운트 포인트 : / var / lib / mysql
데이터 복제 리소스 태그 : datarep-mysql
파일 시스템 리소스 탭 : / var / lib / mysql
비트 맵 파일 : (기본값)
비동기 복제 활성화 : 아니요
리소스가 생성되면 "확장"(즉, 백업 서버 정의) 마법사가 나타납니다.
다음 선택을 사용하십시오.
대상 서버 : node2 스위치 백 유형 : 지능형 템플릿 우선 순위 : 1
대상 우선 순위 : 10 대상 디스크 : / dev / xvdb1
데이터 복제 리소스 태그 : datarep-mysql 비트 맵 파일 : (기본값)
복제 경로 : 10.0.0.4/10.0.1.4 마운트 지점 : / var / lib / mysql
루트 태그 : / var / lib / mysql
클러스터는 다음과 같습니다.
다음으로 가상 IP 클러스터 리소스를 만듭니다. "녹색 더하기"아이콘을 클릭하여 새 리소스를 만듭니다.
마법사를 따라 다음 선택 사항으로 IP 리소스를 만듭니다.
복구 키트 선택 : IP 스위치 백 유형 : 지능형 IP 리소스 : 10.1.0.10
넷 마스크 : 255.255.255.0
네트워크 인터페이스 : eth0
IP 리소스 태그 : ip-10.1.0.10
다음 선택 사항으로 IP 자원을 확장하십시오.
스위치 백 유형 : 지능형 템플릿 우선 순위 : 1
타겟 우선 순위 : 10
IP 리소스 : 10.1.0.10
넷 마스크 : 255.255.255.0
네트워크 인터페이스 : eth0
IP 리소스 태그 : ip-10.1.0.10
클러스터는 이제 미러 및 IP 리소스가 모두 생성 된 다음과 같이 표시됩니다.
기본적으로 SPS-Linux는 브로드 캐스트 핑을 수행하여 IP 리소스의 상태를 모니터링합니다. 많은 가상 및 클라우드 환경에서 브로드 캐스트 핑이 작동하지 않습니다. 이전 단계에서 "NOBCASTPING = 1"을
/ etc / default / LifeKeeper는 브로드 캐스트 핑 검사를 해제합니다. 대신 핑 목록을 정의합니다.
이 IP 리소스에 대한 IP 상태 확인 중에 핑할 IP 주소 목록입니다.
이 가이드에서는 감시 서버 (10.0.2.4)를 핑 목록에 추가합니다.
IP 리소스 (ip-10.1.0.10)를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다.
처음에는 10.1.0.0 서브넷에 대해 핑 목록이 구성되어 있지 않음을 알 수 있습니다. "Ping 목록 수정"을 클릭합니다.
"10.0.2.4"(감시 서버의 IP 주소)를 입력하고 "주소 추가"를 클릭 한 다음 마지막으로 "목록 저장"을 클릭합니다.
IP 속성 패널로 돌아가서 10.0.2.4가 핑 목록에 추가되었는지 확인할 수 있습니다. 확인을 클릭하여 창을 닫습니다.
다음으로 MySQL 클러스터 리소스를 생성합니다. MySQL 리소스는 MySQL 데이터베이스의 중지 / 시작 / 모니터링을 담당합니다.
MySQL 리소스를 만들기 전에 데이터베이스가 실행 중인지 확인하십시오. “ps -ef | grep sql”을 확인하십시오.
실행 중이라면 할 일이 없습니다. 그렇지 않은 경우 데이터베이스 백업을 시작하십시오.
# mysqld_safe –user = root –socket = / var / lib / mysql / mysql.sock –port = 3306 –datadi
마법사를 따라 다음 선택 항목으로 IP 리소스를 생성합니다. 생성하려면 "녹색 더하기"아이콘을 클릭하여 새 리소스를 생성합니다.
복구 키트 선택 : MySQL 데이터베이스 전환 유형 : 지능형 서버 : node1
my.cnf의 위치 : / var / lib / mysql
MySQL 실행 파일의 위치 : / usr / bin
데이터베이스 태그 : mysql
다음 선택 사항으로 IP 자원을 확장하십시오.
대상 서버 : node2 스위치 백 유형 : 지능형 템플릿 우선 순위 : 1
타겟 우선 순위 : 10
결과적으로 클러스터는 다음과 같이 보입니다. 데이터 복제 리소스는 항상 데이터베이스보다 먼저 온라인 상태가되도록 데이터베이스 아래로 자동으로 이동되었습니다 (종속성이 자동으로 생성됨).
SPS-Linux는 리소스가 서로 다른 가용성 영역 및 지역의 노드간에 장애 조치를 취할 수 있도록하는 특정 기능을 제공합니다. 여기서 EC2 복구 키트 (즉, 클러스터 에이전트)는 가상 IP에 대한 연결이 활성 클러스터 노드로 라우팅되도록 라우팅 테이블을 조작하는 데 사용됩니다.
만들려면 "녹색 더하기"아이콘을 클릭하여 새 리소스를 만듭니다.
마법사를 따라 다음 선택 사항으로 EC2 리소스를 생성합니다.
복구 키트 선택 : Amazon EC2 스위치 백 유형 : 지능형 서버 : node1
EC2 홈 : / opt / aws
EC2 URL : ec2.us-west-2.amazonaws.com
AWS 액세스 키 : (이전에 얻은 액세스 키 입력) AWS 보안 키 : (이전에 얻은 보안 키 입력) EC2 리소스 유형 : RouteTable (백엔드 클러스터)
IP 리소스 : ip-10.1.0.10
EC2 리소스 태그 : ec2-10.1.0.10
다음 선택 사항으로 IP 자원을 확장하십시오.
대상 서버 : node2 스위치 백 유형 : 지능형 템플릿 우선 순위 : 1
타겟 우선 순위 : 10
EC2 리소스 태그 : ec2-10.1.0.10
클러스터는 다음과 같습니다. EC2 리소스가 IP 리소스 아래에 어떻게 있는지 확인하십시오.
IP 리소스와 MySQL 데이터베이스 리소스 사이에 종속성을 만들어 그룹으로 함께 장애 조치합니다. "mysql"리소스를 마우스 오른쪽 버튼으로 클릭하고 "종속성 생성"을 선택합니다.
다음 화면에서 "ip-10.1.0.10"리소스를 종속성으로 선택합니다. 다음을 클릭하고 마법사를 계속합니다.
이 시점에서 SPS-Linux 클러스터 구성이 완료되었습니다. 리소스 계층 구조는 다음과 같습니다.
이제 모든 Amazon EC2 및 클러스터 구성이 완료되었습니다! 클러스터 리소스는 현재 node1에서 활성화되어 있습니다.
미러링 모니터 서버 (또는 다른 Linux 인스턴스가있는 경우)에서 클러스터에 대한 연결을 테스트하여 미러링 모니터 서버 "sudo su-"로 연결하여 루트 액세스 권한을 얻습니다. 필요한 경우 mysql 클라이언트를 설치합니다.
[root@witness ~]# yum -y mysql 설치
클러스터에 대한 MySQL 연결을 테스트합니다.
[root@witness ~]# mysql –host = 10.1.0.10 mysql -u root -p
다음 MySQL 쿼리를 실행하여 활성 클러스터 노드의 호스트 이름을 표시합니다.
MariaD[mysql]B> @@ hostname 선택;
++
| @@ hostname |
++
| node1 |
++
세트의 행 1 개 (0.00 초) MariaDB[mysql]>
LifeKeeper GUI를 사용하여 Node1에서 장애 조치-> Node2 ″. node2 아래의 mysql 리소스를 마우스 오른쪽 버튼으로 클릭하고 "In Service…"를 선택합니다.
장애 조치가 완료된 후 MySQL 쿼리를 다시 실행합니다. MySQL 클라이언트가 세션이 손실되었음을 감지하고 (장애 조치 중에) 자동으로 다시 연결됩니다.
다음 MySQL 쿼리를 실행하여 활성 클러스터 노드의 호스트 이름을 표시하고 이제 "node2"가 활성 상태인지 확인합니다.
MariaD[mysql]B> @@ hostname 선택;
오류 2006 (HY000) : MySQL 서버가 사라졌습니다. 연결이 없습니다. 다시 연결하는 중…
연결 ID : 12
현재 데이터베이스 : mysql
++
| @@ hostname |
++
| node2 |
++
세트의 행 1 개 (0.53 초) MariaDB[mysql]>
SIOS의 허가를 받아 복제