Date: 1월 5, 2023
태그: AWS
AWS에서 HA Oracle Database 서버 클러스터 생성
소개 고가용성(HA) Oracle 인스턴스가 필요한 비즈니스 크리티컬 애플리케이션용 POC를 생성해야 하는 개발자로서 AWS EC2에서 Oracle EC2 HA 클러스터를 설정해야 합니다.어디에서 시작합니까?당신이 우리 대부분과 같다면 다음 작업을 검색하고 기사, 설치 가이드, 문서 및 스택 오버플로에 대한 질문을 읽는 데 끝없는 시간을 보낼 것입니다. 거의 맞는 답을 많이 찾을 수 있지만 버전이나 환경에 완전히 맞지는 않습니다. 설상가상으로 당신은 토끼 굴로 내려가 작동하지 않는 환경을 구축하는 데 며칠을 낭비하게 됩니다.
다양한 기술을 사용하여 개념 증명을 개발하기 위해 HA 환경을 설정하는 데 중점을 둔 일련의 블로그를 구성할 예정입니다. SIOS HA 솔루션 예: DataKeeper, LifeKeeper 및 SIOS Protection Suite. 내가 아직 다루지 않은 즉각적인 요구 사항이 있는 경우 알려주시면 내 백로그에서 구성을 위로 이동하겠습니다.
읽어주셔서 감사합니다.나는 그것이 당신의 삶을 더 쉽게 만들어주기를 바랍니다. 이러한 작업을 수행하는 방법에 이미 익숙한 경우 실행할 수 있는 아래 작업 목록이 있습니다. 다음은 각 작업을 수행하기 위한 단계별 가이드입니다.
Linux용 AWS HA Oracle 데이터베이스 SIOS Protection Suite
- Linux에서 Oracle 인스턴스 2개 실행
- Xwindows 작동시키기
- 인스턴스에 연결하고 추가 디스크 마운트
- AWS CLI 키트 설치
- 보안/액세스 구성
- 가상 IP에 대한 경로 항목 만들기
- ENI의 소스/대상 확인 비활성화
- /etc/hosts 편집
- VIP 호스트 이름으로 리스너 구성
- SELinux 비활성화
- Linux용 SIOS Protection Suite 설치
- 라이프키퍼 시작하기
- 두 번째 서버에 연결
- 커뮤니케이션 경로 구축
- DataKeeper 리소스 생성
- 가상 IP 리소스로 계층 구조 만들기
- Oracle 수신기 리소스 만들기
- Oracle Database로 계층 구조 생성
- EC2로 계층 구조 생성
- 종료 동작 변경
- 테스트 장애 조치
1. Linux에서 Oracle 인스턴스 2개 시작
이 첫 번째 블로그에서는 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에서 지원되는지 확인하십시오.확인할 수 있는 것 여기 .
내 인스턴스에는 다음이 있습니다.
- 단일 VPC
- 단일 지역
- 서버마다 다른 가용 영역
- 데이터베이스 스토리지용 추가 드라이브
- 서로 다른 서브넷의 각 인스턴스에 대한 2개의 네트워크 인터페이스
- 탄력적 IP 주소 2개를 생성하고 각 서버에 하나씩 연결
데이터베이스용 인스턴스에 추가 디스크를 연결하고 중복 통신 경로를 위해 추가 NIC를 연결합니다.두 NIC가 서로 다른 서브넷에 있는지 확인하십시오.이는 또한 인스턴스에 연결하기 위해 탄력적 IP 주소를 수동으로 생성하고 할당해야 함을 의미합니다.
인스턴스에 연결하고 추가 디스크를 마운트합니다. 퍼티와 Xming을 사용하여 내 인스턴스에 연결하고 있습니다.Xming을 사용하는 경우 연결을 시도하기 전에 Xlaunch를 실행해야 합니다.
인스턴스를 시작한 후 새 디스크를 분할해야 합니다.로 찾는 것이 가장 쉽습니다.[ ls /dev/disk/by-path ] :
이제 다음을 사용하여 디스크를 분할해야 합니다. fdisk :
다음으로 새 파티션에 파일 시스템을 만듭니다. mkfs.xfs :
이제 다음을 사용하여 파일 시스템을 마운트합니다. 산 :
마지막으로 fstab에서 디스크를 자동으로 마운트하는 항목을 추가합니다.
Oracle용 설치를 실행할 필요가 없다는 점에 유의해야 합니다.AMI가 이를 수행하고 사용자를 위한 데이터베이스를 생성했습니다.이 AMI로 사전 구성된 데이터베이스를 삭제하고 DBCA를 사용하여 /data 디스크에 새 데이터베이스를 생성했습니다.데이터베이스를 시작하고 스키마를 생성하고 SQLPLUS를 사용하여 데이터를 추가했습니다.이를 위해서는 Xwindows가 작동해야 합니다.
2. 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로 돌아갑니다.
3. 인스턴스 연결 및 추가 디스크 마운트
퍼티와 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를 사용하여 데이터를 추가했습니다.
4. AWS CLI 키트 설치
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 설명 인스턴스
5. 보안/액세스 구성
먼저 Oracle 사용자를 root 및 wheel 그룹에 추가하여 의사 권한을 부여했습니다( Usermod -aG 휠 오라클) .이렇게 하면 Oracle 계정을 lkadmin 계정으로 만들어 편리하게 사용할 수 있습니다.두 서버에 sps.img 및 라이센스 파일을 다운로드했습니다.
소프트웨어를 설치하기 전에 수행해야 할 몇 가지 전제 조건 단계가 더 있습니다.먼저 TCP 포트 5900-59010을 열어 통신할 수 있도록 서버에 대한 보안 그룹을 구성합니다. TCP 포트 81 및 82도 엽니다. 또한 가상 IP에 대해 포트가 열려 있는지 확인하십시오.
6. 가상 IP에 대한 경로 항목 생성
클러스터의 가상 IP가 작동하려면 경로 테이블을 업데이트해야 합니다.이 다중 서브넷 클러스터 구성에서 가상 IP는 VPC에 할당된 CIDR 범위 밖에 있어야 합니다.트래픽을 클러스터의 가상 IP(172.30.0.101)에서 기본 클러스터 노드(Oracle1)로 보낼 새 경로를 정의합니다. VPC 대시보드에서 경로 테이블을 선택하고 편집을 클릭합니다.기본 서버에서 기본 ENI(탄력적 네트워크 인터페이스)의 대상이 있는 "172.30.0.101/32"에 대한 경로를 추가합니다.
7. ENI의 소스/대상 확인 비활성화
네트워크 인터페이스에서 한 번에 하나씩 각 인터페이스를 선택한 다음 작업에서 소스/대상 변경을 선택합니다.
인증 오류가 발생하지 않는 한 올바르게 설치되고 구성된 것입니다.
체크 해제 할 수 있게 하다 상자:
모든 인터페이스에 대해 반복합니다.
8. /etc/hosts 편집
이미 DNS 서버 설정이 없는 경우 이름으로 서로를 적절하게 확인할 수 있도록 두 서버 모두에 호스트 파일 항목을 만들고 싶을 것입니다.
9. VIP 호스트 이름으로 리스너 구성
oracle-vip을 가리키도록 $ORACLE_HOME/network/admin/listener.ora 파일을 편집하거나 생성합니다.
10. SELinux 비활성화
/etc/sysconfig/selinux 파일을 편집하고 "SELINUX=disabled"를 설정합니다.
서버를 재부팅합니다.이 시점에서 서버가 다시 작동하지 않으면 SELINUX 설정을 허용으로 두고 SELINUXTYPE을 비활성화로 설정하여 인스턴스를 차단할 수 있습니다.인스턴스에서 AWS의 볼륨을 연결 해제하고 mount -o rw, nouuid {장치} {마운트 디렉토리} 새로운 또는 기존 작업 인스턴스에 대한 명령./{마운트 디렉터리]/etc/sysconfig/selinux 파일을 편집하고 오류를 수정합니다.파일을 저장하고 이 인스턴스와 볼륨을 마운트 해제 및 연결 해제하고 이전 인스턴스에 다시 연결합니다.
11. Linux용 SIOS 보호 제품군 설치
다음으로 루트로 이미지 파일을 마운트하여 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를 누르면 설치가 시작됩니다.
12. 라이프키퍼 시작하기
다음을 사용하여 LifeKeeper GUI 시작 /opt/LifeKeeper/bin/lkGUIapp 실패하면 .Xauthority 파일에 로그인한 계정의 매직 넘버가 없기 때문일 수 있습니다.나는 oracle로 로그인 한 다음 sudo -i 뿌리를 내리기 위해.따라서 내 GUI가 로드되지 않으면 /home/oracle/.Xauthority 파일을 /root에 복사합니다.
여기서는 oracle로 로그인합니다.
13. 두 번째 서버에 연결
그런 다음 클러스터 연결 버튼을 클릭합니다.
오라클로 로그인:
14. 커뮤니케이션 경로 구축
통신 경로 만들기 버튼을 클릭합니다.
오류가 있는 경우 방화벽과 iptables가 비활성화되어 있는지 확인하십시오.다음을 누르십시오.
다음을 누르십시오.
첫 번째 IP 주소를 선택하고 다음을 누르십시오.
원격 IP를 선택합니다.
다음을 누르십시오.
만들기를 누르십시오.
다음을 누르십시오.
이제 완료를 누르십시오. 다음으로 보조 주소로 14단계를 반복하여 두 번째 통신 경로를 만들어야 합니다.
두 경로가 성공적으로 설정되면 서버가 녹색으로 전환되어야 합니다.
15. DataKeeper 리소스 생성
리소스 계층 만들기 버튼을 클릭합니다.
데이터 복제를 선택하고 다음을 누르십시오.
다음을 누르십시오(지능형이란 장애 조치 후 수동으로 장애 복구해야 함을 의미함).
다음을 누르십시오.
기본 서버를 선택하고 다음을 누르십시오.
기존 파일 시스템 복제를 선택하고 다음을 누르십시오.
기존 마운트 지점을 선택하고 다음을 누르십시오.
만들기 데이터 복제 리소스 태그를 지정하고 다음을 누르십시오.
파일 시스템 리소스 태그를 선택하고 다음을 누르십시오.[1]
최적의 성능을 위해 비트맵 파일은 임시 볼륨에 배치해야 합니다. 테스트 목적으로 위에 표시된 것처럼 비트맵을 OS 디스크에 배치할 수 있습니다. 비트맵 파일 위치를 선택하고 다음을 누르십시오.
비동기 복제 사용에 대해 아니오를 선택하고 다음을 누르십시오.
대상 서버를 선택하고 다음을 누르십시오.
스위치백 유형을 선택하고 다음을 누르십시오.
템플릿 우선 순위를 선택하고 다음을 누르십시오.
대상 우선 순위를 선택하고 다음을 누르십시오.
다음:
대상 디스크를 선택하고 다음을 누르십시오.
다음을 누르십시오.
다음을 누르십시오.
복제에 사용할 네트워크 끝점을 선택하고 다음을 누르십시오.
마운트 지점을 선택하고 다음을 누르십시오.
리소스 태그를 선택하고 다음을 누르십시오.
완료를 누르십시오:
히트 완료:
/u01을 클릭하면 볼륨 동기화가 표시됩니다.
16. 가상 IP 리소스로 계층 구조 생성
리소스 만들기 버튼을 클릭합니다.
IP를 선택하고 다음을 누르십시오.
스위치백 유형을 선택하고 다음을 누르십시오.
기본 서버를 선택하고 다음을 누르십시오.
6단계에서 가상 IP 주소를 입력하고 다음을 누르십시오.
VIP의 서브넷 마스크를 입력하고 다음을 누르십시오.
네트워크 인터페이스를 입력하고 다음을 누르십시오.
리소스 태그를 입력하고 다음을 누르십시오.
성공적인 생성 후 다음을 누르십시오.
대상 서버를 선택하고 다음을 누르십시오.
전환 유형을 선택하고 다음을 누르십시오.
우선 순위를 선택하고 다음을 누르십시오.
우선 순위를 선택하고 다음을 누르십시오.
완료되면 다음을 누르십시오.
다음을 누르십시오.
적절한 넷마스크를 선택하고 다음을 누르십시오.
인터페이스를 선택하고 다음을 누르십시오.
리소스 태그를 선택하고 확장을 누르십시오.
성공적으로 완료되면 마침을 누르십시오.
확인 후 완료를 누르십시오.
17. Oracle 수신기 리소스 만들기
LifeKeeper에서 이러한 리소스를 구성하기 전에 데이터베이스와 수신기가 실행 중인지 확인하십시오.리소스 만들기 버튼을 클릭합니다.
Oracle Database Listener를 선택하고 다음을 누르십시오.
기본 서버를 선택하고 다음을 누르십시오.
리스너 구성 파일 경로와 파일 이름을 입력하고 다음을 누르십시오.
다음을 누르십시오.
Listener Executables의 경로를 입력하고 다음을 누르십시오.
보호 수준을 선택하고 다음을 누르십시오.
복구 수준을 선택하고 다음을 누르십시오.
필요한 경우 수신기와 연결된 IP 주소를 선택하고 다음을 누릅니다.
리스너 태그 이름을 입력하고 만들기를 누르십시오.
다음을 누르십시오.
두 번째 서버에서 리소스를 빌드하려면 기본값 수락을 누르십시오.
완료를 클릭하십시오:
완료를 클릭하고 LSNR 및 /u01을 확장합니다.
18. 오라클 데이터베이스로 계층 구조 생성
리소스 계층 구조 만들기 버튼을 클릭합니다.
Oracle 데이터베이스를 선택하고 다음을 누르십시오.
스위치백 유형을 선택하고 다음을 누르십시오.
서버를 선택하고 다음을 누르십시오.
데이터베이스 이름을 선택하고 다음을 누르십시오(홈 디렉토리를 찾을 수 없다는 오류가 발생하면 데이터베이스가 실행 중인지 확인하십시오).
sysdba 사용자 이름을 입력하고 다음을 누르십시오.
계정의 비밀번호를 입력하고 다음을 누르십시오.
Oracle Listener를 선택하고 다음을 누르십시오.
만들기를 누르십시오.
성공적으로 생성되면 다음을 선택합니다.
기본값 수락을 선택합니다.
완료 선택:
완료 누르기: 트리를 확장하여 모든 리소스를 확인합니다.
19. EC2로 계층 구조 만들기
리소스 계층 만들기 버튼을 클릭합니다.
Amazon EC2를 선택하고 다음>을 누르십시오.
지능형을 선택하고 다음>을 누르십시오.
기본 서버를 선택하고 다음>을 누르십시오.
EC2 리소스 유형(이 예에서는 백엔드 클러스터 사용)을 선택하고 다음>을 누릅니다.
IP 리소스를 선택하고 다음>을 선택합니다.
EC2 리소스 태그 이름을 선택하고 생성을 누릅니다.
자원이 성공적으로 생성되면 몇 초 후 다음>을 누르면 사전 확장 마법사가 나타납니다.기본값 수락을 누르십시오.
확인이 성공적으로 완료되면 기본값 수락을 다시 누르십시오.
마침을 누르고 확인 후 완료를 누릅니다.
구성이 완료되었습니다.이제 장애 조치를 테스트할 수 있습니다.
20. 종료 동작 변경
기본적으로 LifeKeeper는 장애 조치 단순히 서버를 종료하거나 재부팅하면 리소스를 사용할 수 있습니다. 서버를 종료하기 전에 워크로드를 이동하려면 활성 노드를 종료하기 전에 대기 서버로 리소스를 수동으로 이동해야 합니다. 그러나 테스트를 용이하게 하기 위해 기본 동작을 변경할 수 있습니다. 이는 아래와 같이 종료 전략을 변경하여 제어합니다.
주 서버를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다.
일반 탭에서 종료 전략을 리소스 전환으로 변경한 다음 적용을 누릅니다.
그런 다음 서버 풀다운에서 보조 서버를 선택하고 설정 변경을 확인합니다. 확인을 누릅니다.
21. 테스트 장애 복구
보조 서버에서 lkGUIapp을 실행하고 있습니다.기본 서버에 있는 경우 LifeKeeper GUI를 종료하고 보조 서버에서 실행하십시오.
모든 리소스 계층 구조를 확장하고 기본 서버에 대한 SSH 세션을 엽니다.
또한 oracle-vip에 ping -i 5를 실행하고 있습니다.
기본 서버를 종료합니다.
제 경우에는 IP가 25초 미만 동안 응답을 멈춘 것을 볼 수 있습니다.5초 간격으로 4번의 핑 20-23을 놓쳤습니다.이제 모든 것이 백업 서버에서 활성화됩니다.주 서버가 여전히 다운되어 있기 때문에 계층 구조에 대한 경고가 표시됩니다.
스위치백을 지능형으로 놔둔 경우 주 서버를 불러온 후에는 수동으로 주 서버에서 서비스를 불러와야 합니다.서비스를 시작하기 전에 기본 서버가 InSync인지 확인하십시오.
cdb1의 StandBy 버튼을 마우스 오른쪽 버튼으로 클릭하고 In Service…를 선택합니다.
클릭 서비스
완료를 누르십시오.
디스크가 다시 동기화되는 데 몇 분 정도 걸리지만 결국 동기화됩니다.
모든 것을 복원하면 이제 개발 준비가 된 AWS의 HA Oracle 데이터베이스가 있습니다.
의 허가를 받아 복제됨 시오스