Date: 1월 6, 2019
단계별 : 공유 저장 장치없이 Google Cloud Platform (Google Compute Engine)에서 Linux 장애 조치 클러스터를 구성하는 방법 #google #gce #sanless #cluster
이 단계별 가이드에서는 Google Cloud Platform (Google Compute Engine, 별칭 : GCE)에서 가용성이 높은 2 노드 MySQL 클러스터 (미러링 모니터 서버)를 구성하는 데 필요한 모든 단계를 안내합니다. 가이드에는 적절한 스크린 샷, 셸 명령 및 코드 스 니펫이 모두 포함되어 있습니다. 귀하는 Google Cloud Platform에 다소 익숙하며 이미 계정이 있다고 가정합니다. 그렇지 않은 경우 오늘 무료 평가판에 가입 할 수 있습니다. 기본적인 리눅스 시스템 관리 기술은 물론 가상 IP, 쿼럼 등과 같은 기본적인 장애 조치 클러스터링 개념을 이해하고 있다고 가정합니다.
면책 조항 : 클라우드는 빠르게 움직이는 목표입니다. 따라서 기능 / 화면 / 버튼은 시간이 지남에 따라 바뀌므로 아래에서 보는 것과 약간 다를 수 있습니다. 이 가이드에서는 MySQL 데이터베이스의 가용성을 높이는 방법을 설명하지만 SAP, PostgreSQL, Oracle, WebSphere MQ, NFS 파일 서버 등과 같은 다른 응용 프로그램이나 데이터베이스를 보호하기 위해이 정보와 프로세스를 확실히 적용 할 수 있습니다. 다음은 Google Compute Engine에서 고 가용성 MySQL 데이터베이스를 만드는 고급 단계입니다.
- 프로젝트 만들기
- 인스턴스 만들기 (가상 컴퓨터)
- 인스턴스 그룹 만들기
- VNC 액세스를 허용하는 방화벽 규칙 만들기
- Linux OS 구성
- MySQL 설치 및 구성
- 클러스터 설치 및 구성
- 내부로드 밸런서 만들기
- 내부로드 밸런서에 대한 방화벽 규칙 만들기
- 클러스터 연결 테스트
개요
이 기사에서는 단일 Google Cloud 지역 내에 클러스터를 만드는 방법에 대해 설명합니다. 클러스터 노드 (node1, node2 및 미러링 모니터 서버)는 모두 "us-central1"(10.128.0.0/20 네트워크) 영역에 있지만 해당 지역을 적절하게 선택할 수 있습니다. 구성은 다음과 같습니다. 다음 IP 주소가 사용됩니다.
- node1 : 10.128.0.2
- node2 : 10.128.0.3
- 목격자 : 10.128.0.4
- 내부로드 밸런서 IP : 10.128.0.99
- MySQL 포트 : 3306
프로젝트 만들기
처음 로그인하면 빈 홈 대시 보드가 표시되며 프로젝트를 생성하라는 메시지가 표시됩니다. Google에서 만드는 모든 Google Compute Engine 리소스는이 Google Cloud Platform 프로젝트에 속합니다. 여기서 우리는 새롭게 생성 된 Project "LinuxCluster"를 호출 할 것입니다 :
인스턴스 만들기 (가상 컴퓨터)
이 가이드에서는 3 개의 가상 시스템을 프로비저닝 할 것입니다. 처음 두 VM ( "node1"및 "node2"라고 부름)은 MySQL 데이터베이스와 관련 리소스를 온라인 상태로 가져 오는 클러스터 노드로 작동합니다. 세 번째 VM은 스플릿 브레인에 대한 추가 보호를 위해 클러스터의 감시 서버 역할을합니다. 최대한의 가용성을 보장하기 위해 3 개의 VM이 모두 지역 내의 다른 영역 (예 : us-central1-a, us-central1-b, us-central1-c)에 있습니다.
"node1"인스턴스 만들기
첫 번째 VM 인스턴스 ( "node1")를 만듭니다. 인스턴스를 처음 작성한 경우 화면은 아래 이미지와 유사합니다. 화면 가운데에있는 "Create Instance"버튼을 클릭하십시오 : 다른 인스턴스가 이미 GCE에서 실행 중이면 화면이 조금 다르게 보일 것입니다. 계속하려면 "create instance"를 클릭하십시오. 기본적으로 Debian Linux가 기본적으로 선택됩니다. 우리는이 안내서에서 CentOS 6.X를 사용하기 때문에 * 이것을 원하지 않습니다. 인스턴스에 이름 ( "node1")을 지정하고 지역 (us-central1) 내의 첫 번째 영역 (a)을 선택하고 "변경"을 클릭하여 적절한 부팅 이미지를 선택하십시오. 워크로드 요구 사항에 따라 인스턴스의 크기를 조정할 수 있지만이 가이드에서는 기본 크기를 사용하여 비용을 최소화합니다. VM은 매우 적습니다 (1 vCPU 및 3.75GB RAM 만 해당). 부팅 디스크 팝업 CentOS 6을 선택하면 하단에 SSD 부팅 디스크가 표시됩니다. 이 가이드의 목적에는 10GB가 충분합니다. 그에 따라 시스템의 크기를 정할 수 있습니다. "선택"을 클릭하면 인스턴스 작성 화면으로 돌아갑니다. 하단에 "관리, 디스크, 네트워킹, SSH 키"를 클릭하십시오. VM에 두 번째 디스크를 추가하기 때문입니다. 이 두 번째 디스크는 데이터베이스를 저장하는 데 사용되며 나중에 클러스터링 소프트웨어에 의해 복제 / 동기화됩니다. "디스크"탭을 선택하고 "항목 추가"를 클릭하여이 인스턴스에 두 번째 디스크를 추가하십시오 : "디스크 생성"을 클릭하십시오 : 새 디스크의 이름을 지정하고 원하는 유형을 선택한 다음 빈 디스크로 시작하십시오. 이 예제 구성에서는 여기에 10GB가 충분해야합니다. 참고 : 여기서 설정 한 값을 기억하십시오. 두 클러스터 노드 (node1과 node2)는 같은 크기 여야합니다. 마지막으로 "네트워킹"탭을 클릭하고 node1에게 고객 내부 IP를 제공하십시오. "Create"를 클릭하여 새 인스턴스를 시작하십시오 :
"노드 2"생성
위의 단계를 두 번 반복하여 두 번째 클러스터 노드 ( "node2")를 만듭니다. 두 번째 디스크 추가를 포함하여 node1처럼이 인스턴스를 만듭니다. 중요 : 다른 영역 (us-central1-b)에 있는지 확인하고 고유 한 IP (10.128.0.3)를 지정하십시오.
"감시 (witness)"VM 만들기
세 번째 VM ( "감시")을 만들고 처음 두 인스턴스와 다른 영역 (us-central1-c)에 있는지 확인하십시오. 참고 :이 인스턴스는 추가 된 디스크가 필요하지 않습니다. 3 개의 VM 인스턴스가 프로비저닝하는 데 약간의 시간이 걸릴 수 있습니다. 완료되면 Google Cloud Console의 VM 인스턴스 화면에 VM이 표시됩니다. 각 VM을 다른 영역에 제대로 시작했는지 확인하십시오.
인스턴스 그룹 만들기
이 가이드의 뒷부분에서 트래픽을 활성 클러스터 노드로 라우팅하기 위해 내부로드 밸런서를 생성 할 것입니다. Google Cloud Platform에서 사용 가능한 모든로드 밸런서 구성에는 인스턴스 그룹이로드 밸런서에서 전송 된 트래픽을 제공해야합니다. 두 개의 인스턴스 그룹이 생성되고 각각 하나의 클러스터 노드가 포함됩니다.
인스턴스 그룹 1 생성
첫 번째 인스턴스 그룹에 이름 ( "instance-group-1a")을 지정하고 "단일 영역"을 선택한 다음 첫 번째 VM 인스턴스가있는 영역을 올바르게 선택하십시오. 여기서는 us-central-1a를 선택합니다. 왜냐하면 그것이 "node1"이 배포 된 곳이기 때문입니다. 아래에서 "기존 인스턴스 선택"을 선택하고 VM 인스턴스 드롭 다운에서 "node1"을 선택하십시오.
인스턴스 그룹 2 생성
이전 단계를 한 번 더 반복하십시오. 이번에는 두 번째 노드가 상주하는 영역을 선택하십시오. us-central-1b 및 node2 :
VNC 액세스를 허용하는 방화벽 규칙 만들기
네트워킹 -> 방화벽 규칙 기본적으로 바깥 세상에서 VM으로 열리는 "Google 방화벽"의 포트는 ping, SSH (포트 22) 및 RDP (방화벽 만 해당)입니다. 포트 3389). 나중에이 가이드에서 VNC를 사용하여 "node1"의 데스크탑에 액세스하고 GUI를 사용하여 클러스터를 구성 할 것입니다. VNC 액세스를 허용하는 방화벽 규칙을 만듭니다. 이 가이드에서는 포트 5902가 사용됩니다. VNC 구성에 따라 조정하십시오.
Linux OS 구성
다음으로 인스턴스의 Linux OS를 구성하고 명령 줄에서 손을 더럽힐 필요가 있습니다. Linux 관리자는 지금까지 익숙해 져야합니다. Linux VM의 콘솔에 연결하는 데는 여러 가지 방법이 있습니다. GCE 웹 인터페이스에서 직접 SSH 연결을 시작하거나 랩톱 / 워크 스테이션에 Google Cloud SDK를 로컬로 설치할 수 있습니다. 브라우저를 사용하는 SSH를 사용하려면 Compute -> VM Instances로 이동하고 연결하려는 VM의 오른쪽에서 "Connect"아래의 "Open in browser window"를 선택하십시오. 노트북 / 워크 스테이션에 기본적으로 설치된 Google Cloud 명령 줄 도구를 사용하려면 https://cloud.google.com/sdk/docs/quickstarts 문서를 참조하십시오. 연결되면 "sudo"명령을 사용하여 루트 권한 얻기 :
$ sudo su -
/ etc / hosts 편집
DNS 서버를 이미 설치하지 않은 경우 세 서버 모두에서 호스트 파일 항목을 만들어 이름별로 서로 올바르게 해결할 수 있습니다. / etc / hosts 파일의 끝에 다음 행을 추가하십시오.
10.128.0.2 node1 10.128.0.3 node2 증인 10.128.0.4 10.128.0.99 mysql-vip
SELinux 사용 안 함
/ etc / sysconfig / linux를 편집하고 "SELINUX = disabled"로 설정하십시오.
# vi / etc / sysconfig / selinux #이 파일은 시스템상의 SELinux 상태를 제어합니다. # SELINUX =은 다음 세 가지 값 중 하나를 취할 수 있습니다. # enforcing - SELinux 보안 정책이 시행됩니다. # permissive - SELinux는 강제가 아닌 경고를 출력합니다. # disabled - SELinux 정책이로드되지 않습니다. SELINUX = 비활성화 됨 # SELINUXTYPE = 다음 두 값 중 하나를 취할 수 있습니다. # targeted - 타겟 프로세스가 보호되고, # mls - 다단계 보안 보호. SELINUXTYPE = 타겟팅 됨
다양한 RPM 패키지 설치
다음으로 클러스터링 소프트웨어의 필수 조건으로 나중에 필요할 rpm 패키지를 몇 개 설치하십시오.
# yum install redhat-lsb patch
VNC (및 관련 패키지) 설치 및 구성
Linux 서버의 GUI에 액세스하려면 클러스터를 나중에 구성하려면 클러스터 노드에 VNC 서버를 설치하십시오. 내 설치에서는 "node1"에서만이 작업을 수행했습니다.
# yum은 tigervnc-server xterm을 설치합니다. # vncpasswd # vi / etc / sysconfig / vncservers VNCSERVERS = "2 : root" VNCSERVERARGS [2] = "- 형상 1024x768" # service vncserver start # chkconfig vncserver on
랩톱 / 데스크톱에서 VNC 클라이언트를 열고 클러스터 노드의 공용 IP에 연결하여 연결을 테스트하십시오.
클러스터 노드 재부트
SELinux가 비활성화되도록 재부팅하십시오. 3 개의 시스템 (node1, node2, witness) 모두를 재부팅해야합니다.
"데이터"디스크 파티션 및 포맷
VM 인스턴스를 생성하는 동안 보호 할 응용 프로그램 데이터를 저장하기 위해 각 클러스터 노드에 추가 디스크가 추가되었습니다. 이 경우 MySQL 데이터베이스가됩니다. VM의 디스크 구성은 다음과 같습니다.
- / dev / sda – OS 디스크
- / dev / sdb – 데이터 디스크
인스턴스 생성 중 추가 된 두 번째 디스크 / dev / sdb. "fdisk -l"명령을 실행하여 확인할 수 있습니다. / dev / sda (OS)가 이미 디스크 파티션을 가지고 있고 사용 중임을 알 수 있습니다.
# fdisk -l 디스크 / dev / sda : 10.7GB, 10737418240 바이트 255 헤드, 63 섹터 / 트랙, 1305 실린더 단위 = 16065 * 512 = 8225280 바이트의 실린더 섹터 크기 (논리 / 실제) : 512 바이트 / 4096 바이트 I / O 크기 (최소 / 최적) : 4096 바이트 / 4096 바이트 디스크 식별자 : 0x00035e98 장치 부팅 시작 끝 블록 ID 시스템 / dev / sda1 * 1 1306 10484736 83 Linux 디스크 / dev / sdb : 10.7GB, 10737418240 바이트 64 헤드, 32 섹터 / 트랙, 10240 실린더 단위 = 2048 * 512 = 1048576 바이트의 실린더 섹터 크기 (논리 / 실제) : 512 바이트 / 4096 바이트 I / O 크기 (최소 / 최적) : 4096 바이트 / 4096 바이트 디스크 식별자 : 0x762b810b
여기서 파티션 (/ dev / sdb1)을 만들고, 포맷하고, MySQL의 기본 위치 인 / var / lib / mysql에 마운트합니다. "node1"및 "node2"모두에서 다음 단계를 수행하십시오.
# fdisk / dev / sdb 명령 (m 도움말) : n 명령 동작 확장 된 p 주 파티션 (1-4) 피 파티션 번호 (1-4) : 1 첫 번째 실린더 (1-1305, 기본값 1) : <enter> 기본값 1 사용 마지막 실린더, 실린더 또는 크기 {K, M, G} (1-1305, 기본값 1305) : <Enter> 기본값 1305 사용 명령 (m 도움말) : w 파티션 테이블이 변경되었습니다! 파티션 테이블을 다시 읽으려면 ioctl ()을 호출하십시오. 디스크 동기화 중. [root @ node1 ~] # # mkfs.ext4 / dev / sdb1 # mkdir / var / lib / mysql
node1에서 파일 시스템을 마운트하십시오.
# mount / dev / sdb1 / var / lib / mysql
MySQL 설치 및 구성
다음으로, MySQL 패키지를 설치하고, 샘플 데이터베이스를 초기화하고, MySQL의 "root"비밀번호를 설정하십시오.
"node1"에서 :
# yum -y mysql mysql-server를 설치한다. # / usr / bin / mysql_install_db --datadir = "/ var / lib / mysql /"--user = mysql # mysqld_safe --user = root --socket = / var / lib / mysql / mysql.sock --port = 3306 --datadir = / var / lib / mysql --log & # # # 참고 :이 다음 명령은 모든 호스트의 원격 연결을 허용합니다. 생산을위한 좋은 생각이 아닙니다! # echo "사용자 업데이트 설정 Host = '%'여기서 Host = 'node1'; flush privileges"| mysql mysql # # # MySQL의 루트 암호를 'SIOS'로 설정 # echo "update user set Password = PASSWORD ( 'SIOS') 여기서 User = 'root'; mysql mysql
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 / lib / mysql / mysqld.pid 사용자 = 루트 포트 = 3306 # 보안 위험을 방지하려면 심볼릭 링크를 비활성화하는 것이 좋습니다. 기호 링크 = 0 [mysqld_safe] log-error = / var / log / mysqld.log pid-file = / var / run / mysqld / mysqld.pid [고객] 사용자 = 루트 암호 = SIOS
/ etc에있는 원본 MySQL 구성 파일을 삭제합니다 (있는 경우).
# rm /etc/my.cnf
"노드 2"에서 :
"node2"에서는 MySQL 패키지 만 설치하면됩니다. 다른 단계는 필요하지 않습니다.
[root @ node2 ~] # yum -y mysql mysql-server를 설치합니다.
클러스터 설치 및 구성
이제 클러스터를 설치하고 구성 할 준비가되었습니다. 이 안내서에서는 Linux 용 SIOS Protection Suite (일명 SPS-Linux)가 클러스터링 기술로 사용됩니다. 고 가용성 페일 오버 클러스터링 기능 (LifeKeeper)과 블록 레벨 데이터 복제 (DataKeeper)를 단일 통합 솔루션으로 제공합니다. SPS-Linux를 사용하면 Azure VM의 경우처럼 클러스터 노드에 공유 저장소가 없다는 의미의 "공유되지 않음"클러스터 인 "SANLess"클러스터를 배포 할 수 있습니다.
Linux 용 SIOS Protection Suite 설치
모든 3 개의 VM (node1, node2, witness)에서 다음 단계를 수행하십시오. SPS-Linux 설치 이미지 파일 (sps.img)을 다운로드하고 평가판 라이센스를 얻거나 영구 라이센스를 구입하십시오. 자세한 내용은 SIOS에 문의하십시오. 당신은 그것을 루프백 (loopback) 마운트 할 것이고 루트 ( "root su"를 얻기 위해 "sudo su -"라고 쓰는 것) 안에 "setup"스크립트를 실행시킬 것이다. 예를 들면 :
# mkdir / tmp / install # mount -o loop sps.img / tmp / install # cd / tmp / install # ./설정
설치 스크립트 중에 여러 가지 질문에 대답하라는 메시지가 표시됩니다. 거의 모든 화면에서 Enter 키를 눌러 기본값을 적용합니다. 다음 예외에 유의하십시오.
- "High Availability NFS"라는 화면에서 고 가용성 NFS 서버를 만들지 않으므로 "n"을 선택할 수 있습니다
- 설치 스크립트가 끝날 때까지 평가판 라이센스 키를 지금 설치하거나 나중에 설치하도록 선택할 수 있습니다. 나중에 라이센스 키를 설치하므로이 시점에서 "n"을 안전하게 선택할 수 있습니다
- "설정"의 마지막 화면에서 화면에 표시된 목록에서 설치하려는 ARK (응용 프로그램 복구 키트, 즉 "클러스터 에이전트")를 선택하십시오.
- ARK는 "node1"과 "node2"에서만 필요합니다. "증인"에 설치할 필요가 없습니다.
- 위쪽 / 아래쪽 화살표를 사용하여 목록을 탐색하고 스페이스 바를 눌러 다음을 선택하십시오.
- lkDR – Linux 용 DataKeeper
- lkSQL – LifeKeeper MySQL RDBMS 복구 키트
- 그러면 "node1"및 "node2"에 다음과 같은 추가 RPM이 설치됩니다.
- steeleye-lkDR-9.0.2-6513.noarch.rpm
- steeleye-lkSQL-9.0.2-6513.noarch.rpm
Witness / Quorum 패키지 설치
LifeKeeper (steeleye-lkQWK)를위한 Quorum / Witness Server 지원 패키지는 LifeKeeper 코어의 기존 장애 조치 프로세스와 결합하여 전체 네트워크 장애가 공통적으로 발생할 수있는 상황에서보다 높은 수준의 신뢰성으로 시스템 장애 조치를 수행 할 수 있습니다. 이는 효과적으로 "스플릿 브레인"상황의 위험을 크게 줄이면서 장애 극복을 수행 할 수 있음을 의미합니다. 모든 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
라이센스 키 설치
3 개 노드 모두에서 "lkkeyins"명령을 사용하여 SIOS에서 얻은 라이센스 파일을 설치하십시오.
# / opt / LifeKeeper / bin / lkkeyins <경로 _ 파일> / <파일 이름> .lic
LifeKeeper 시작
3 개 노드 모두에서 "lkstart"명령을 사용하여 클러스터 소프트웨어를 시작하십시오.
# / opt / LifeKeeper / bin / lkstart
LifeKeeper GUI에 대한 사용자 권한 설정
3 개 노드 모두에서 / etc / group을 편집하고 "tony"사용자 (또는 로그인 한 사용자 이름)를 "lkadmin"그룹에 추가하여 LifeKeeper GUI에 대한 액세스 권한을 부여하십시오. 기본적으로 "root"만이 그룹의 구성원이며 root 암호가 없습니다 :
# vi / etc / group lkadmin : x : 502 : 루트, 토니
LifeKeeper GUI 열기
node1의 공용 IP 주소에 VNC 연결을 설정하십시오. 위에서 설명한 VNC 및 방화벽 규칙 구성에 따라 앞에서 지정한 VNC 암호를 사용하여 <Public_IP> : 2에 연결합니다. 로그인 한 후 터미널 창을 열고 다음 명령을 사용하여 LifeKeeper GUI를 실행하십시오.
# / opt / LifeKeeper / bin / lkGUIapp &
첫 번째 클러스터 노드 ( "node1")에 연결하라는 메시지가 나타납니다. VM 생성 중에 지정된 Linux 사용자 ID와 암호를 입력하십시오 : 다음, 다음 스크린 샷에서 강조 표시된 "서버에 연결"단추를 클릭하여 "node2"와 "witness"모두에 연결하십시오. 이제 GUI에서 3 개의 모든 서버를 볼 수 있습니다. 온라인 상태이고 건강하다는 것을 나타내는 녹색 체크 표시 아이콘 :
통신 경로 생성
"node1"을 마우스 오른쪽 버튼으로 클릭하고 Comm Path 생성을 선택하십시오. "node2"와 "witness"를 선택하고 마법사를 따르십시오. 그러면 다음 사이에 통신 경로가 만들어집니다.
- 노드 1 및 노드 2
- 노드 1 및 증인
노드 2와 감시 사이에 통신 경로를 생성해야합니다. "node2"를 마우스 오른쪽 단추로 클릭하고 통신 경로 작성을 선택하십시오. 마법사를 따라 원격 서버로 "witness"를 선택하십시오. 다음과 같은 통신 경로가 생성되었습니다 :
- node1 <-> node2
- 노드 1 <-> 목격자
- 노드 2 <-> 목격자
서버 앞의 아이콘이 녹색 "확인 표시"에서 노란색 "위험 신호"로 바뀌 었습니다. 이는 노드간에 단일 통신 경로 만 있기 때문입니다. VM에 여러 개의 NIC가있는 경우 (여러 NIC가있는 Azure VM을 만드는 방법에 대한 정보는 여기에서 찾을 수 있지만이 기사에서 다루지는 않음) 각 서버간에 중복 통신 경로를 만듭니다. 경고 아이콘을 제거하려면보기 메뉴로 이동하여 "Comm Path Redundancy Warning"을 선택 해제합니다. 결과 :
통신 경로 확인
"lcdstatus"명령을 사용하여 클러스터 자원의 상태를보십시오. # / opt / LifeKeeper / bin / lcdstatus -q -d node1 MACHINE NETWORK ADDRESSES / DEVICE STATE PRIO node2 TCP 10.128.0.2/ 다음 명령을 실행하여 각 노드에서 다른 두 서버에 대한 통신 경로를 올바르게 작성했는지 확인하십시오. 10.128.0.3 ALIVE 1 증인 TCP 10.128.0.2/10.128.0.4 ALIVE 1 # / opt / LifeKeeper / bin / lcdstatus -q -d node2 MACHINE 네트워크 주소 / 장치 상태 프리 노드 1 TCP 10.128.0.3/10.128.0.2 ALIVE 1 증인 TCP 10.128.0.3 / 10.128.0.4 ALIVE 1 # / opt / LifeKeeper / bin / lcdstatus -q -d 감시 기계 네트워크 주소 / 장치 상태 프리 노드 1 TCP 10.128.0.4/10.128.0.2 ALIVE 1 node2 TCP 10.128.0.4/10.128.0.3 살아있는 1
데이터 복제 클러스터 리소스 (예 : 거울)
그런 다음 / var / lib / mysql 파티션을 node1 (원본)에서 node2 (대상)로 복제 할 데이터 복제 자원을 만듭니다. "녹색 더하기"아이콘을 클릭하여 새 리소스를 만듭니다. 마법사의 지시에 따르십시오 :
복구 키트를 선택하십시오 : 데이터 복제 스위치 백 유형 : 지능형 서버 : node1 계층 구조 유형 : 기존 파일 시스템 복제 기존 마운트 지점 : / var / lib / mysql 데이터 복제 리소스 태그 : datarep-mysql 파일 시스템 리소스 탭 : / var / lib / mysql 비트 맵 파일 : (기본값) 비동기 복제 사용 : 아니요
리소스가 생성 된 후 "확장"(백업 서버 정의) 마법사가 나타납니다. 다음 선택 항목을 사용하십시오.
대상 서버 : node2 스위치 백 유형 : 지능형 템플릿 우선 순위 : 1 목표 우선 순위 : 10 대상 디스크 : / dev / sdb1 데이터 복제 리소스 태그 : datarep-mysql 비트 맵 파일 : (기본값) 복제 경로 : 10.128.0.2/10.128.0.3 마운트 포인트 : / var / lib / mysql 루트 태그 : / var / lib / mysql
MySQL 자원 계층 만들기
그런 다음 MySQL 클러스터 리소스를 만듭니다. MySQL 자원은 MySQL 데이터베이스의 중지 / 시작 / 모니터링을 담당합니다. 생성하려면 "녹색 더하기"아이콘을 클릭하여 새 리소스를 만듭니다. 마법사를 따라 다음을 선택하여 IP 리소스를 만듭니다.
복구 키트 선택 : MySQL 데이터베이스 스위치 백 유형 : 지능형 서버 : node1 my.cnf의 위치 : / var / lib / mysql MySQL 실행 파일의 위치 : / usr / bin 데이터베이스 태그 : mysql
다음 선택 사항으로 IP 자원을 확장하십시오.
대상 서버 : node2 스위치 백 유형 : 지능형 템플릿 우선 순위 : 1 목표 우선 순위 : 10
결과적으로 클러스터는 다음과 같습니다. 데이터 복제 리소스가 자동으로 데이터베이스 아래로 이동 (종속성이 자동으로 생성 됨)되어 데이터베이스 전에 항상 온라인 상태로 유지되는지 확인합니다.
내부로드 밸런서 만들기
이것이 실제 서버 또는 가상 서버를 사용하는 일반적인 온 – 프레미스 클러스터 인 경우이 시점에서 완료됩니다. 클라이언트와 응용 프로그램은 활성 노드에 도달하기 위해 클러스터의 가상 IP (10.128.0.99)에 연결합니다. Google Cloud에서는 일부 추가 구성 없이는 작동하지 않습니다. 클러스터에 연결하기 위해 Google은 내부로드 밸런서 (ILB)를 설정할 수있는 기능을 제공합니다. 본질적으로 ILB의 IP 주소 (10.128.0.99로 설정)에 연결하면 현재 활성 클러스터 노드로 라우팅됩니다. TCP 부하 분산 장치 만들기 : 내부 부하 분산 장치이므로 "내 VM 간 전용"을 선택하십시오. 다음으로 부하 분산 장치의 이름 ( "internal-lb")을 지정한 다음 백 엔드 구성을 클릭하십시오. 지역 ( "us-central1")을 선택하고 백엔드를 구성하십시오. "백엔드 추가"를 클릭하고 인스턴스 그룹 (instance-group-1a 및 instance-group-1b)을 모두 추가합니다.로드 밸런서는 상태 확인을 기반으로 트래픽을 라우팅 할 노드를 결정합니다. 이 예에서는 MySQL이 실행 중인지 (기본 포트 3306 확인) 상태 확인을 구성합니다. "상태 확인 만들기"를 선택하십시오 : 새 상태 검사에 이름 ( "mysql-health-check")을 지정하고 TCP 포트 3306에 맞게 구성하십시오 : 다음으로로드 밸런서의 프론트 엔드를 구성하십시오. "프론트 엔드 구성"을 선택하고 IP 주소 아래에 사용자 정의 정적 내부 IP를 10.128.0.99로 정의하십시오. 포트는 MySQL의 기본 포트 인 3306이어야합니다. 마지막으로로드 밸런서 생성을 검토하고 완료하십시오. "만들기"를 클릭하십시오 : 결과. 로드 밸런서가 온라인 상태이지만 인스턴스 그룹이 정상적으로 표시되지 않습니다. (0/0으로 표시). 우리는 다음 절에서 그것을 고칠 것입니다 :
내부로드 밸런서에 대한 방화벽 규칙 만들기
Google 설명서 ( "내부로드 균형 조정을 허용하도록 방화벽 규칙 구성"섹션 참조)에서 두 가지 방화벽 규칙을 만들어야합니다. 첫 번째 매개 변수는로드 균형 조정기와로드 밸런서에서 인스턴스로의 트래픽을 허용합니다. 두 번째 방법은 상태 검사기에서 상태 검사 프로브를 허용합니다. 새 방화벽 규칙 만들기 : 새 규칙에 이름 (allow-internal-lb)을 지정하고 "10.128.0.0/20"을 원본 IP 범위로 지정하십시오. 허용 된 프로토콜과 포트는 "tcp : 3306"이어야합니다 : "만들기"를 클릭하면 방화벽 규칙 페이지로 돌아가고 목록에서 새로 생성 된 규칙을 볼 수 있습니다. "방화벽 규칙 만들기"를 다시 클릭하여 두 번째 필수 규칙을 만들 수 있습니다. 두 번째 규칙에 이름을 지정하십시오 ( "허용 – 상태 – 검사"). 두 가지 소스 IP 범위를 정의해야합니다.
- 130.211.0.0/22
- 35.191.0.0/16
참고 : Google 클라우드 문서를 다시 확인하여 이러한 IP 범위가 유효한지 항상 확인하는 것이 좋습니다. 새로 생성 된 방화벽 규칙이 모두 목록에 표시됩니다.
클러스터 연결 테스트
이제 모든 Google 클라우드 및 클러스터 구성이 완료되었습니다. 클러스터 리소스는 node1에서 현재 활성화되어 있습니다. 내부로드 밸런서가 instance-group-1a의 구성원 인 node1이 "정상"이며 따라서 가상 IP (10.128.0.99)로 들어오는 트래픽을 라우팅하는 것으로 나타납니다. )를 node1에 추가합니다. SSH를 미러링 모니터 서버에 연결하고 "sudo su -"를 사용하여 루트 액세스를 얻습니다. 필요한 경우 mysql 클라이언트를 설치하십시오.
[root @ witness ~] # yum -y mysql을 설치합니다.
클러스터에 MySQL 연결을 테스트하십시오.
[root @ witness ~] # mysql --host = 10.128.0.99 mysql -u root -p
다음 MySQL 쿼리를 실행하여 활성 클러스터 노드의 호스트 이름을 표시합니다.
mysql> select @@ hostname; ------------ | @@ 호스트 이름 | ------------ | node1 | ------------ 1 행 세트 (0.00 초) mysql>
LifeKeeper GUI 사용, 노드 1 -> 노드 2에서의 장애 복구 "를 참조하십시오. 노드 2 아래의 mysql 리소스를 마우스 오른쪽 단추로 클릭하고 "서비스 중 ..."을 선택합니다. 장애 조치 후 노드 2에서 리소스가 온라인 상태가됩니다 : 내부로드 밸런서가 node2가 포함 된 인스턴스 그룹 -b1이 정상적으로 표시됨을 확인할 수 있습니다 . 이제 트래픽이 node2로 라우팅됩니다. 장애 조치가 완료된 후 MySQL 쿼리를 다시 실행하십시오. 다음과 같은 MySQL 쿼리를 실행하여 활성 클러스터 노드의 호스트 이름을 표시하고 "node2"가 활성 상태인지 확인합니다.
mysql> select @@ hostname; 오류 2006 (HY000) : MySQL 서버가 사라졌습니다. 연결되지 않았습니다. 다시 연결하려고합니다 ... 연결 ID : 48 현재 데이터베이스 : mysql ------------ | @@ 호스트 이름 | ------------ | 노드 2 | ------------ 1 행 세트 (0.56 초) mysql>