循序漸進:如何在Amazon EC2中配置SANless MySQL Linux故障轉移群集
在本逐步指南中,我將帶您完成在Amazon Elastic Compute Cloud(Amazon EC2)中配置高可用性,兩節點MySQL群集(加上見證服務器)所需的所有步驟。該指南包括屏幕截圖,shell命令和相應的代碼段。我假設您對Amazon EC2有點熟悉,並且已經擁有一個帳戶。如果沒有,您可以今天註冊。我還將假設您對Linux系統管理和虛擬IP等故障轉移群集概念有基本的了解。
故障轉移群集已經存在了很多年。在典型配置中,兩個或多個節點配置有共享存儲,以確保在主節點上進行故障轉移時,輔助或目標節點將訪問最新數據。使用共享存儲不僅可以實現接近零的恢復點目標,而且是大多數群集軟件的強制性要求。但是,共享存儲提出了一些挑戰。首先,這是單點故障風險。如果共享存儲(通常是SAN)發生故障,則群集中的所有節點都將發生故障。其次,SAN的價格昂貴,購買,設置和管理也很複雜。第三,對於想要保持高可用性(正常運行時間99.99%),接近零的恢復時間和恢復點目標以及災難恢復保護的公司而言,包括Amazon EC2在內的公共雲中的共享存儲是不可能的,或者不可行。
以下內容演示了在雲中創建SANless集群以消除這些挑戰同時滿足嚴格的HA / DR SLA是多麼容易。以下步驟將MySQL數據庫與Amazon EC2結合使用,但是可以對相同的步驟進行調整,以在AWS中創建2節點群集,以保護SQL,SAP,Oracle或任何其他應用程序。
注意:您對功能,屏幕和按鈕的看法可能與下面顯示的屏幕截圖略有不同
1。創建虛擬私有云(VPC)
2。創建一個互聯網網關
3。創建子網(可用區)
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地址:
- 節點1:10.0.0.4
- 節點2:10.0.1.4
- 見證人:10.0.2.4
- 虛擬/“浮動” IP:10.1.0.10
步驟1:創建虛擬私有云(VPC)
首先,創建一個虛擬私有云(aka VPC)。VPC是專用於您的Amazon雲中的隔離網絡。您可以完全控制IP地址塊和子網,路由表,安全組(即防火牆)等內容。您將在虛擬網絡中啟動Azure Iaas虛擬機(VM)。
在AWS主控制台中,選擇“ VPC”
確保在“您的VPC”下,在屏幕右上方選擇了正確的區域。在本指南中,將使用“美國西部(俄勒岡州)”區域,因為該區域具有3個可用區。有關區域和可用區的更多信息,請單擊此處。
給VPC命名,並指定要使用的IP塊。10.0.0.0/16將在本指南中使用:
現在,您應該在“您的VPC”屏幕上看到新創建的VPC:
步驟2:建立網際網路閘道
接下來,創建一個Internet網關。如果您希望實例(VM)能夠與Internet通信,則這是必需的。
在左側菜單上,選擇“ Internet網關”,然後單擊“創建Internet網關”按鈕。給它起一個名字,並創建:
接下來,將Internet網關連接到您的VPC:
選擇您的VPC,然後單擊附加:
步驟3:創建子網(可用區)
接下來,創建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中創建第三個子網:
完成後,請驗證是否已創建3個子網,每個子網具有不同的CIDR塊,並位於單獨的可用區中,如下所示:
步驟4:配置路由表
更新VPC的路由表,以便將外界流量發送到上一步中創建的Internet網關。從VPC儀表板中,選擇“路由表”。轉到“路由”選項卡,默認情況下僅存在一條路由,該路由僅允許VPC內的流量通過。
點擊修改:
添加另一條路線:
新路由的目的地將為“ 0.0.0.0/0”(Internet),對於Target,請選擇Internet網關。然後點擊保存:
接下來,將3個子網與路由表相關聯。單擊“子網關聯”選項卡,然後編輯:
選中所有3個子網旁邊的框,然後保存:
驗證3個子網是否與主路由表關聯:
稍後,我們將再次更新路由表,定義一條路由,該路由將允許流量與群集的虛擬IP通信,但這需要在創建Linux實例(VM)之後完成。
步驟5:配置安全組
編輯``安全組''(虛擬防火牆)以允許傳入的SSH和VNC通信。兩者都將在以後用於配置linux實例以及集群軟件的安裝/配置。
在左側菜單上,選擇“安全組”,然後單擊“入站規則”選項卡。點擊修改:
為SSH(端口22)和VNC添加規則。VNC通常使用5900中的端口,具體取決於您的配置方式,因此,出於本指南的目的,我們將打開5900-5910的端口範圍。根據您的VNC設置進行相應配置:
步驟6:啟動實例
我們將在本指南中預配置3個實例(虛擬機)。前兩個VM(稱為“ node1”和“ node2”)將充當群集節點,並具有使MySQL數據庫及其相關資源聯機的功能。第三台虛擬機將充當群集的見證服務器,以增強對裂腦的保護。
為了確保最大可用性,所有3個VM都將部署在單個區域內的不同可用區中。這意味著每個實例將駐留在不同的子網中。
轉到主要的AWS儀表板,然後選擇EC2:
創建“ node1”
創建您的第一個實例(“ node1”)。單擊啟動實例:
選擇您的Linux發行版。稍後使用的集群軟件支持RHEL,SLES,CentOS和Oracle Linux。在本指南中,我們將使用RHEL 7.X:
相應地調整實例的大小。為了達到本指南的目的並最大程度地降低成本,我們使用了t2.micro尺寸,因為它是免費套餐。有關實例大小和定價的更多信息,請參見此處。
接下來,配置實例詳細信息。重要信息:確保將第一個實例(VM)啟動到“ Subnet1”,並定義對子網有效的IP地址(10.0.0.0/24)–選擇低於10.0.0.4,因為它是子網中的第一個空閒IP。
注意:AWS中任何給定子網中的.1 / .2 / .3均已保留且無法使用。
接下來,向群集節點添加一個額外的磁盤(這將在“ node1”和“ node2”上都完成)。該磁盤將存儲我們的MySQL數據庫,以後將在節點之間複製。
注意:您不需要向“見證”節點添加額外的磁盤。僅“ node1”和“ node2”。添加新卷,然後輸入所需的大小:
為實例Node1定義一個標籤:
將實例與現有的安全組相關聯,因此先前創建的防火牆規則將處於活動狀態:
點擊啟動:
重要信息:如果這是您AWS環境中的第一個實例,則需要創建一個新的密鑰對。私鑰文件將需要存儲在一個安全的位置,因為在您SSH進入linux實例時將需要它。
創建“ node2”
重複上述步驟以創建第二個Linux實例(node2)。完全像Node1一樣配置它。但是,請確保將其部署到“Subnet2''(us-west-2b可用區)中。子網2的IP範圍是10.0.1.0/24,因此此處使用的IP是10.0.1.4:
確保也將第二個磁盤添加到Node2。它的大小應與您添加到Node1的磁盤的大小完全相同:
給第二個實例一個標籤…。“ Node2”:
創造“見證”
重複上述步驟以創建第三個Linux實例(見證)。完全像Node1和Node2一樣進行配置,除了不需要添加第二個磁盤外,因為該實例僅充當集群的見證者,並且永遠不會使MySQL聯機。
確保將其部署到“ Subnet3”(us-west-2c可用區)中。子網2的IP範圍是10.0.2.0/24,因此此處使用的IP是10.0.2.4:
注意:默認磁盤配置適用於見證節點。不需要第二張磁盤:
標記見證節點:
您的3個實例可能要花一些時間。完成後,您將在EC2控制台中看到正在運行的列表:
步驟7:創建彈性IP
接下來,創建一個“彈性IP'',這是一個公共IP地址,將用於從外界連接到您的實例。在左側菜單中選擇彈性IP,然後單擊“分配新地址”:
選擇新創建的彈性IP,單擊鼠標右鍵,然後選擇“關聯地址”:
將此彈性IP與Node1關聯:
如果您希望其他兩個實例具有Internet訪問權限或能夠直接通過SSH / VNC進入它們,請對其他兩個實例重複此操作。
步驟8:為虛擬IP創建路由條目
至此,所有3個實例均已創建,並且路由表將需要再更新一次以使群集的虛擬IP正常工作。在這種多子網群集配置中,虛擬IP必須位於分配給您的VPC的CIDR範圍之外。
定義一條新路由,該路由會將流量定向到群集的虛擬IP(10.1.0.10)定向到主群集節點(Node1)
從VPC儀表板中,選擇“路由表”,然後單擊“編輯”。為目的地為Node1的“ 10.1.0.10/32”添加路由:
步驟9:禁用ENI的源/目標檢查
接下來,禁用群集節點的彈性網絡接口(ENI)的源/目標檢查。為了使實例能夠接受網絡數據包以獲取群集的虛擬IP地址,這是必需的。
對所有ENI執行此操作。
選擇“網絡接口”,右鍵單擊ENI,然後選擇“更改源/目標檢查”。
選擇“已禁用”:
步驟10:獲取訪問密鑰ID和秘密訪問密鑰
在指南的後面,集群軟件將使用AWS命令行界面(CLI)來操縱集群虛擬IP的路由表條目,以將流量重定向到活動集群節點。為了使其正常工作,您將需要獲取訪問密鑰ID和秘密訪問密鑰,以便AWS CLI可以正確進行身份驗證。
在EC2儀表板的右上角,單擊您的名稱,然後從下拉菜單中選擇“安全憑據”:
展開表格的“訪問密鑰(訪問密鑰ID和秘密訪問密鑰)”部分,然後單擊“創建新的訪問密鑰”。下載密鑰文件並將文件存儲在安全的位置。
步驟11:配置Linux操作系統
連接到linux實例:
要連接到新創建的Linux實例(通過SSH),請右鍵單擊該實例,然後選擇“連接”。這將顯示有關連接到實例的說明。您將需要在上一步中創建/下載的私鑰文件:
例:
在這裡,我們將離開EC2儀表板一段時間,然後在命令行上動手操作,作為Linux管理員,您現在應該已經習慣了。
沒有為您在AWS中的Linux VM(或默認的“ ec2-user”帳戶)提供root密碼,因此一旦連接,請使用“ sudo”命令獲取root特權:
$ sudo su –
除非已經設置DNS服務器,否則,您將要在所有3台服務器上創建主機文件條目,以便它們可以通過名稱正確地相互解析編輯/ etc / hosts
將以下行添加到/ etc / hosts文件的末尾:
10.0.0.4節點1
10.0.1.4節點2
10.0.2.4見證人
10.1.0.10 mysql-vip
禁用SELinux
編輯/ etc / sysconfig / linux並設置“ SELINUX = disabled”:
#vi / etc / sysconfig / selinux
#此文件控制系統上SELinux的狀態。#SELINUX =可以採用以下三個值之一:
#強制-強制執行SELinux安全策略。
#允許-SELinux打印警告而不是強制執行。
#已禁用–未加載SELinux策略。
SELINUX =禁用
#SELINUXTYPE =可以採用以下兩個值之一:
#目標-保護目標進程,#mls-多級安全保護。
SELINUXTYPE =目標
設置主機名
默認情況下,這些Linux實例的主機名將基於服務器的IP地址,例如“ ip-10-0-0-4.us-west-2.compute.internal”
您可能會注意到,如果嘗試以“常規”方式修改主機名(即編輯/ etc / sysconfig / network等),則在每次重新啟動後,它將恢復為原始主機名!我在AWS討論論壇上找到了一個不錯的話題,該話題描述瞭如何使主機名在重啟後實際保持靜態。
此處的詳細信息:https://forums.aws.amazon.com/message.jspa?messageID=560446
註釋掉在“ /etc/cloud/cloud.cfg”文件中設置主機名的模塊。可以使用#將以下模塊註釋掉。
#– set_hostname
#– update_hostname
接下來,還要在/ etc / hostname中更改您的主機名。
重新啟動群集節點
重新啟動所有3個實例,以禁用SELinux,並且更改主機名生效。
安裝和配置VNC(和相關程序包)
為了訪問Linux服務器的GUI,並在以後安裝和配置我們的集群,請安裝VNC服務器以及其他一些必需的軟件包(集群軟件需要redhat-lsb和patch rpm)。
#yum groupinstall“ X窗口系統”
#yum groupinstall“帶有GUI的服務器”
#yum install tigervnc-server xterm wget解壓縮補丁redhat-lsb
#vncpasswd
以下URL是使VNC服務器在RHEL 7 / CentOS 7上運行的好指南:對於RHEL 7.x / CentOS7.x:
注意:此示例配置在顯示器2(:2,又名端口5902)上並以root用戶身份(不安全)運行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-幾何1024×768
對於RHEL / CentOS 6.x系統:
#vi / etc / sysconfig / vncservers
VNCSERVERS =” 2:root” VNCSERVERARG[2]S =”-geometry 1024×768”
#服務vncserver啟動
#chkconfig vncserver在
打開一個VNC客戶端,然後連接到<ElasticIP:2>。如果您無法獲得它,則可能是您的Linux防火牆在擋路。打開我們在此處使用的VNC端口(端口5902),或者暫時禁用防火牆(不推薦用於生產環境):
#systemctl停止firewalld
#systemctl禁用firewalld
分區並格式化“數據”磁盤
當啟動Linux實例時,在每個群集節點上都添加了額外的磁盤來存儲我們將要保護的應用程序數據。在這種情況下,它恰好是MySQL數據庫。
第二個磁盤應顯示為/ dev / xvdb。您可以運行“ fdisk -l”命令進行驗證。您會看到
/ dev / xvda(OS)已被使用。
#fdisk -l
#開始結束大小類型名稱磁盤/ dev / xvda:10.7 GB,10737418240字節,20971520扇區單位= 1 * 512的扇區= 512字節
扇區大小(邏輯/物理):512字節/ 512字節I / O大小(最小/最佳):512字節/ 512字節磁盤標籤類型:gpt
1 2048 4095 1M BIOS引導parti
2 4096 20971486 10G Microsoft基本
磁盤/ dev / xvdb:2147 MB,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)。
更改將僅保留在內存中,直到您決定將其寫入。使用write命令之前,請小心。
設備不包含可識別的分區表
使用磁盤標識符0x8c16903a構建一個新的DOS disklabel。
命令(m尋求幫助):
分區類型:
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且大小為2 GiB的分區1
命令(m尋求幫助):w
分區表已更改!
調用ioctl()以重新讀取分區表。同步磁盤。
#mkfs.ext4 / dev / xvdb1
#mkdir / var / lib / mysql
在node1上,掛載文件系統:
#掛載/ dev / xvdb1 / var / lib / mysql
必須在每個群集節點上安裝EC2 API工具(EC2 CLI),以便群集軟件以後可以操縱路由表,從而實現與虛擬IP的連接。
步驟12:安裝EC2 API工具
以下網址是設置此網址的絕佳指南:
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(運行“檢查哪個Java”),請安裝它:
#yum安裝java-1.8.0-openjdk
#export JAVA_HOME =” / usr / lib / jvm / java-1.8.0-openjdk-1.8.0.71-
示例(基於RHEL 7.2系統的默認配置。相應調整)
您將需要您的AWS Access Key和AWS Secret Key。請將這些值放在手邊,因為稍後在群集設置期間也將需要它們!有關更多信息,請參考以下URL:
https://console.aws.amazon.com/iam/home?#security_credential
#export AWS_ACCESS_KEY =您的aws-access-key-id
#export AWS_SECRET_KEY =您的aws-秘密密鑰
測試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
步驟13:安裝和配置MySQL
接下來,安裝MySQL軟件包,初始化示例數據庫,並為MySQL設置“ root”密碼。在RHEL7.X中,MySQL軟件包已替換為MariaDB軟件包。
在“ node1”上:
#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“更新用戶集Host ='%',其中Host ='node1';同花順特權| mysql mys#
##將MySQL的根密碼設置為“ SIOS”
#回顯“更新用戶設置密碼=密碼(SIOS),其中用戶=” root”;齊平
創建一個MySQL配置文件。我們將其放置在數據磁盤上(以後將復制它–
/var/lib/mysql/my.cnf)。例:
#vi /var/lib/mysql/my.cnf
[mysqld] datadir = / var / lib / mysql
套接字= / var / lib / mysql / mysql.sock
pid文件= / var / run / mariadb / mariadb.pid用戶= root
端口= 3306
#建議禁用符號鏈接以防止各種安全風險symbolic-link = 0
[mysqld_safe]
日誌錯誤= / var / log / mariadb / mariadb.log pid文件= / 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
步驟14:安裝和配置集群
至此,我們準備安裝和配置集群。本指南中將使用用於Linux的SIOS保護套件(又名SPS-Linux)作為群集技術。它在單個集成解決方案中既提供了高可用性故障轉移群集功能(LifeKeeper),又提供了實時的塊級數據複製(DataKeeper)。使用SPS-Linux,您可以部署“ SANLess”集群(也稱為“無共享”集群),這意味著集群節點沒有任何共享存儲,就像EC2實例一樣。
安裝適用於Linux的SIOS Protection Suite
在所有3個VM(node1,node2,見證)上執行以下步驟:
下載SPS-Linux安裝映像文件(sps.img),並獲得試用許可證或購買永久許可證。有關更多信息,請聯繫SIOS。
您將環回安裝它並以root身份在其中運行“ setup”腳本(或第一個“ sudo su-”以獲得根shell),例如:
#mkdir / tmp /安裝
#mount -o loop sps.img / tmp / install
#cd / tmp /安裝
# 。/建立
在安裝腳本期間,系統會提示您回答許多問題。您幾乎在每個屏幕上都將按Enter鍵以接受默認值。請注意以下例外:
- 在標題為“ High Availability NFS”的屏幕上,您可以選擇“ n”,因為我們將不會創建高可用性的NFS服務器
- 在安裝腳本即將結束時,您可以選擇現在或以後安裝試用許可證密鑰。我們稍後將安裝許可證密鑰,因此您現在可以安全地選擇“ n”
- 在“設置”的最後一個屏幕中,從屏幕上顯示的列表中選擇要安裝的ARK(應用程序恢復工具包,即“集群代理”)。
- 僅在“ node1”和“ node2”上需要ARK。您不需要安裝在“見證人”上,使用向上/向下箭頭瀏覽列表,然後按空格鍵選擇以下內容:
-
- 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
-
- 僅在“ node1”和“ node2”上需要ARK。您不需要安裝在“見證人”上,使用向上/向下箭頭瀏覽列表,然後按空格鍵選擇以下內容:
安裝見證/仲裁包
LifeKeeper的Quorum / Witness服務器支持程序包(steeleye-lkQWK)與LifeKeeper核心的現有故障轉移過程相結合,使系統故障轉移能夠在整個網絡可能普遍發生的情況下更加自信地發生。這有效地意味著可以進行故障轉移,同時大大降低“裂腦”情況的風險。
在所有3個節點(node1,node2,見證)上安裝見證/仲裁rpm:
#cd / tmp / install / quorum
#rpm -Uvh steeleye-lkQWK-9.0.2-6513.noarch.rpm
在所有3個節點(node1,node2,見證)上,編輯/ etc / default / LifeKeeper,設置NOBCASTPING = 1
在僅見證服務器(“見證'')上,編輯/ etc / default / LifeKeeper,設置WITNESS_MODE = off / none
安裝EC2恢復工具包
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
在所有三個節點上,使用“ lkstart”命令啟動集群軟件:
#/ opt / LifeKeeper / bin / lkstart
設置LifeKeeper GUI的用戶權限
在所有3個節點上,創建一個新的Linux用戶帳戶(在此示例中為“ tony”)。編輯/ etc / group並將“ tony”用戶添加到“ lkadmin”組,以授予對LifeKeeper GUI的訪問權限。默認情況下,只有“ root”是該組的成員,並且這裡沒有root密碼:
#用戶添加托尼
#passwd托尼
#vi / etc / group
lkadmin:x:1001:root,tony
打開LifeKeeper GUI
與節點1的彈性IP(公共IP)地址建立VNC連接。根據上面的VNC配置,您將使用先前指定的VNC密碼連接到<Public_IP>:2。登錄後,打開終端窗口並使用以下命令運行LifeKeeper GUI:
#/ opt / LifeKeeper / bin / lkGUIapp和
系統將提示您連接到第一個群集節點(“ node1”)。輸入在虛擬機創建過程中指定的linux用戶名和密碼:
接下來,通過單擊以下屏幕快照中突出顯示的“連接到服務器”按鈕,連接到“ node2”和“見證”:
現在,您應該在GUI中看到所有3台服務器,並帶有綠色的選中標記圖標,指示它們處於聯機狀態且運行狀況良好:
創建交流路徑
右鍵單擊“ node1”,然後選擇“創建通信路徑”
選擇“ node2”和“ witness”,然後按照嚮導進行操作。這將在以下之間創建通訊路徑:
節點1和節點2節點1和見證
仍然需要在node2和見證服務器之間創建一個通訊路徑。右鍵單擊“ node2”,然後選擇“創建通信路徑”。按照嚮導並選擇“見證”作為遠程服務器:
此時,已創建以下通信路徑:
node1 <—> node2 node1 <—>見證者node2 <—>見證者
服務器前面的圖標已從綠色的“複選標記”更改為黃色的“危險標誌”。這是因為節點之間只有一條通信路徑。
如果這些虛擬機具有多個NIC(可以在此處找到有關創建具有多個NIC的Azure VM的信息,但本文將不介紹),則您將在每台服務器之間創建冗餘的通信路徑。
要刪除警告圖標,請轉到“查看”菜單,然後取消選擇“通信路徑冗餘警告”:
結果:
驗證通訊路徑
使用“ lcdstatus”命令查看群集資源的狀態。運行以下命令,以驗證您已在每個節點上正確創建了到涉及的其他兩台服務器的通信路徑:
#/ opt / LifeKeeper / bin / lcdstatus -q -d node1
機器網絡地址/設備狀態PRIO node2 TCP 10.0.0.4/10.0.1.4
實時1見證TCP 10.0.0.4/10.0.2.4實時1
#/ opt / LifeKeeper / bin / lcdstatus -q -d node2
機器網絡地址/設備狀態PRIO node1 TCP 10.0.1.4/10.0.0.4
實時1見證TCP 10.0.1.4/10.0.2.4實時1
#/ opt / LifeKeeper / bin / lcdstatus -q -d見證
機器網絡地址/設備狀態PRIO node1 TCP 10.0.2.4/10.0.0.4
ALIVE 1節點2 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回切類型:智能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資源:
為IP資源配置Ping列表
默認情況下,SPS-Linux通過執行廣播ping來監視IP資源的運行狀況。在許多虛擬和雲環境中,廣播ping不起作用。在上一步中,我們將“ NOBCASTPING = 1”設置為
/ etc / default / LifeKeeper關閉廣播ping檢查。相反,我們將定義一個ping列表。
這是此IP資源的IP運行狀況檢查期間要ping通的IP地址的列表。
在本指南中,我們將見證服務器(10.0.2.4)添加到我們的ping列表中。
右鍵單擊IP資源(ip-10.1.0.10),然後選擇“屬性”:
您將看到,最初,沒有為我們的10.1.0.0子網配置ping列表。點擊“修改Ping列表”:
輸入“ 10.0.2.4”(見證服務器的IP地址),單擊“添加地址”,最後單擊“保存列表”:
您將返回到IP屬性面板,並可以確認10.0.2.4已添加到ping列表中。單擊“確定”關閉窗口:
創建MySQL資源層次結構
接下來,創建一個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
結果,您的集群將如下所示。請注意,數據複製資源會自動移動到數據庫下方(自動創建依賴關係),以確保始終使該資源在數據庫之前聯機:
創建EC2資源以在故障轉移時管理路由表
SPS-Linux提供了特定的功能,這些功能允許資源在不同可用性區域和區域中的節點之間進行故障轉移。在這裡,EC2恢復工具包(即群集代理)用於操作路由表,以便將與虛擬IP的連接路由到活動群集節點。
要創建,請單擊“綠色加號”圖標以創建新資源:
按照嚮導創建具有以下選擇的EC2資源:
選擇恢復工具包:Amazon EC2 Switchback類型:智能服務器:node1
EC2主頁:/ opt / aws
EC2網址: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數據庫資源之間創建依賴關係
在IP資源和MySQL數據庫資源之間創建依賴關係,以使它們作為一個組一起進行故障轉移。右鍵單擊“ mysql”資源,然後選擇“創建依賴關係”:
在以下屏幕上,選擇“ ip-10.1.0.10”資源作為依賴項。單擊下一步,然後繼續執行嚮導:
至此,SPS-Linux群集配置完成。資源層次結構如下所示:
步驟15:測試集群連接
至此,我們所有的Amazon EC2和群集配置均已完成!群集資源當前在節點1上處於活動狀態:
測試從見證服務器(或如果有的話,另一個Linux實例)到見證服務器的SSH連接到見證服務器“ sudo su-”以獲得根訪問權限。如果需要,請安裝mysql客戶端:
[root@witness ~]#yum -y安裝mysql
測試MySQL與集群的連接性:
[root@witness ~]#mysql –host = 10.1.0.10 mysql -u root -p
執行以下MySQL查詢以顯示活動集群節點的主機名:
Mari[mysql]aDB>選擇@@主機名;
++
| @@主機名|
++
| node1 |
++
設置1行(0.00秒)MariaDB[mysql]>
使用LifeKeeper GUI,從Node1-> Node2”進行故障轉移。右鍵單擊node2下的mysql資源,然後選擇“ In Service…”:
故障轉移完成後,重新運行MySQL查詢。您會注意到,MySQL客戶端已檢測到會話丟失(在故障轉移期間),並自動重新連接:
執行以下MySQL查詢以顯示活動集群節點的主機名,並確認“ node2”現在處於活動狀態:
Mari[mysql]aDB>選擇@@主機名;
錯誤2006(HY000):MySQL服務器已消失無連接。正在嘗試重新連接…
連接ID:12
當前數據庫:mysql
++
| @@主機名|
++
| node2 |
++
設置1行(0.53秒)MariaDB[mysql]>
經SIOS許可轉載