循序漸進:如何在沒有共享存儲的Amazon EC2中配置Linux故障轉移群集#amazon #aws #sanless #cluster
在本分步指南中,我將向您介紹在Amazon的彈性計算雲(Amazon EC2)中配置高可用性雙節點MySQL群集(以及見證服務器)所需的所有步驟。 該指南包括適當的屏幕截圖,shell命令和代碼片段。 我假設您對Amazon EC2有點熟悉並且已經擁有一個帳戶。 如果沒有,您今天就可以註冊。 我還將假設您具有基本的Linux系統管理技能,並了解基本的故障轉移群集概念,如虛擬IP等。
免責聲明:雲正在快速移動目標。因此,功能/屏幕/按鈕必然會隨著時間的推移而發生變化,因此您的體驗可能會與您在下面看到的略有不同。 雖然本指南將向您展示如何使MySQL數據庫具有高可用性,但您當然可以調整此信息和流程以保護其他應用程序或數據庫,如SAP,Oracle,PostgreSQL,NFS文件服務器等。以下是在Amazon EC2中創建高可用性MySQL數據庫的高級步驟:
- 創建虛擬私有云(VPC)
- 創建Internet網關
- 創建子網(可用區)
- 配置路由表
- 配置安全組
- 啟動實例
- 創建彈性IP
- 創建虛擬IP的路由條目
- 禁用ENI的源/目的地檢查
- 獲取訪問密鑰ID和秘密訪問密鑰
- Linux OS配置
- 安裝EC2 API工具
- 安裝和配置MySQL
- 安裝和配置群集
- 測試群集連接
概觀
本文將介紹如何在單個Amazon EC2區域中創建集群。 群集節點(node1,node2和見證服務器)將駐留在不同的可用區中,以實現最大可用性。 這也意味著節點將駐留在不同的子網中。配置如下所示:將使用以下IP地址:
- node1:10.0.0.4
- node2:10.0.1.4
- 見證人:10.0.2.4
- 虛擬/“浮動”IP:10.1.0.10
創建虛擬私有云(VPC)
首先,創建一個虛擬私有云(也稱為VPC)。VPC是亞馬遜雲中專用於您的隔離網絡。 您可以完全控制IP地址塊和子網,路由表,安全組(即防火牆)等內容。 您將在您的虛擬網絡中啟動Azure Iaas虛擬機(VM)。在AWS主儀表板中,選擇“您的VPC”下的“VPC”,確保您已在屏幕右上角選擇了適當的區域。 在本指南中,將使用“US West(Oregon)”區域,因為它是一個具有3個可用區的區域。 有關區域和可用區的更多信息,請單擊此處為VPC命名,並指定要使用的IP塊。 本指南將使用10.0.0.0/16:您現在應該在“您的VPC”屏幕上看到新創建的VPC:
創建Internet網關
接下來,創建一個Internet網關。 如果您希望實例(VM)能夠與Internet通信,則必須執行此操作。在左側菜單中,選擇“Internet網關”,然後單擊“創建Internet網關”按鈕。 為其命名,然後創建:接下來,將Internet網關連接到您的VPC:選擇您的VPC,然後單擊Attach:
創建子網(可用區)
接下來,創建3個子網。 每個子網都駐留在自己的可用區中。 3個實例(VM:node1,node2,見證)將啟動到單獨的子網(以及可用區)中,以便可用區的故障不會佔用群集的多個節點。美國西部(俄勒岡州)地區,又名us-west-2,有3個可用區域(us-west-2a,us-west-2b,us-west-2c)。 創建3個子網,每個3個可用區域中有一個子網。在VPC Dashboard下,導航到Subnets,然後導航Create Subnet:給第一個子網命名(“Subnet1)”,選擇us-west-2a的可用區,並定義網絡塊(10.0.0.0/24):Repeat to to創建第二個子網可用區us-west-2b:重複以在可用區us–west-2c中創建第三個子網:完成後,驗證是否已創建3個子網,每個子網具有不同的CIDR塊,並且在單獨的可用性中區域,如下所示:
配置路由表
更新VPC的路由表,以便將流向外部的流量發送到上一步中創建的Internet網關。 從VPC儀表板中,選擇“路由表”。 轉到“路由”選項卡,默認情況下,只存在一條允許僅在VPC內進行流量的路由。單擊編輯:添加其他路由:新路由的目標將為“0.0.0.0/0”(Internet),對於目標,請選擇您的Internet網關。 然後單擊“保存”:接下來,將3個子網與“路由表”關聯。 單擊“子網關聯”選項卡,然後單擊編輯:選中所有3個子網旁邊的框,然後單擊保存:驗證3個子網是否與主路由表關聯:稍後,我們將再次返回並更新路由表,定義允許流量與群集的虛擬IP通信的路由,但這需要在創建Linux實例(VM)之後完成。
配置安全組
編輯安全組(虛擬防火牆)以允許傳入的SSH和VNC流量。 兩者稍後將用於配置linux實例以及群集軟件的安裝/配置。在左側菜單中,選擇“安全組”,然後單擊“入站規則”選項卡。 單擊編輯:為SSH(端口22)和VNC添加規則。 VNC通常使用5900中的端口,具體取決於您的配置方式,因此為了本指南的目的,我們將打開5900-5910端口範圍。 根據您的VNC設置進行相應配置:
啟動實例
我們將在本指南中配置3個實例(虛擬機)。 前兩個VM(稱為“node1”和“node2”)將充當群集節點,能夠將MySQL數據庫及其相關資源聯機。 第三個VM將充當群集的見證服務器,以增強對裂腦的保護。為確保最大可用性,所有3個VM將部署到單個區域內的不同可用區中。 這意味著每個實例將駐留在不同的子網中。轉到AWS主儀表板,然後選擇EC2:
創建“節點1”
創建您的第一個實例(“node1”)。 單擊Launch Instance:選擇您的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”。添加新卷,並輸入所需大小:為實例定義標記,節點1:將實例與現有安全組關聯,以便之前創建的防火牆規則將處於活動狀態:單擊“啟動”:重要說明:如果這是第一個實例在您的AWS環境中,您需要創建一個新的密鑰對。 私鑰文件需要存儲在一個安全的位置,因為當您SSH到Linux實例時將需要它
創建“node2”
重複上述步驟以創建第二個Linux實例(node2)。 完全像Node1一樣配置它。 但是,請確保將其部署到“Subnet2”(us-west-2b可用區)。 Subnet2的IP範圍是10.0.1.0/24,因此這裡使用的IP為10.0.1.4:確保也將第二個磁盤添加到Node2。 它應該與您添加到Node1的磁盤大小相同:為第二個實例添加標籤…. “節點2”:
創造“見證”
重複上述步驟以創建第三個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,然後單擊“分配新地址”:選擇新創建的彈性IP,右鍵單擊,然後選擇“關聯地址”:將此彈性IP與節點1關聯:如果其他兩個實例重複此操作,請執行以下操作:您希望他們可以訪問互聯網,或者能夠直接通過SSH / VNC訪問它們。
創建虛擬IP的路由條目
此時,已創建所有3個實例,並且需要再次更新路由表,以便群集的虛擬IP能夠正常工作。 在此多子網群集配置中,虛擬IP需要超出分配給VPC的CIDR範圍。定義將流量引導至群集的虛擬IP(10.1.0.10)到主群集節點(Node1)的新路由從VPC儀表板中,選擇“路由表”,然後單擊“編輯”。 添加“10.1.0.10/32”的路由,目的地為Node1:
禁用ENI的源/目的地檢查
接下來,禁用群集節點的彈性網絡接口(ENI)的源/目標檢查。這是實例接受群集的虛擬IP地址的網絡數據包所必需的。為所有ENI執行此操作。選擇“網絡接口”,右鍵單擊ENI,然後選擇“更改源/目標檢查”。 選擇“已禁用”:
獲取訪問密鑰ID和秘密訪問密鑰
在本指南的後面部分,集群軟件將使用AWS命令行界面(CLI)來操作集群虛擬IP的路由表條目,以將流量重定向到活動集群節點。 為此,您需要獲取訪問密鑰ID和秘密訪問密鑰,以便AWS CLI可以正確進行身份驗證。在EC2儀表板的右上角,單擊您的名稱,然後從下拉列表中選擇“安全憑證”:展開表格中的“訪問密鑰(訪問密鑰ID和秘密訪問密鑰)”部分,然後單擊“創建新的訪問密鑰”。 下載密鑰文件並將文件存儲在安全的位置。
Linux OS配置
連接到linux實例:
要連接到新創建的Linux實例(通過SSH),請右鍵單擊實例並選擇“連接”。 這將顯示連接到實例的說明。 您將需要在上一步中創建/下載的私鑰文件:示例:這裡我們將離開EC2儀表板一段時間,並在命令行上弄髒,作為Linux管理員,您應該使用它到現在為止。您沒有為AWS中的Linux VM(或默認的“ec2-user”帳戶)提供root密碼,因此一旦連接,請使用“sudo”命令獲取root權限:
$ sudo su -
編輯/ etc / hosts
除非您已經設置了DNS服務器,否則您需要在所有3台服務器上創建主機文件條目,以便它們可以通過名稱正確地相互解析。將以下行添加到/ etc / hosts文件的末尾:
10.0.0.4 node1 10.0.1.4 node2 10.0.2.4證人 10.1.0.10 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 =針對性
設置主機名
默認情況下,這些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 rpms)。
#yum groupinstall“X Window System” #yum groupinstall“帶GUI的服務器” #yum install tigervnc-server xterm wget unzip patch redhat-lsb
#vncpasswd
對於RHEL 7.x / CentOS7.x:以下URL是在RHEL 7 / CentOS 7上運行VNC服務器的一個很好的指南:https://www.digitalocean.com/community/tutorials/how-to-install-and -configure-vnc-remote-access-for-the-gnome-desktop-on-centos-7注意:此示例配置在顯示器2(:2,也稱為端口5902)和root(不安全)上運行VNC。 相應調整!
#cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:2.service #vi /etc/systemd/system/vncserver@:2.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 1024x768” PIDFILE = /根/ .vnc /%H%i.pid ExecStop = / bin / sh -c'/ usr / bin / vncserver -kill%i> / dev / null 2>&1 || :“ #systemctl daemon-reload #systemctl enable vncserver @:2.service #vncserver:2 -geometry 1024x768
對於RHEL / CentOS 6.x系統:
#vi / etc / sysconfig / vncservers VNCSERVERS =“2:根” VNCSERVERARGS [2] =“ - 幾何1024x768” #service vncserver start #chkconfig vncserver on
打開VNC客戶端,然後連接到<ElasticIP:2>。 如果你無法得到它,那很可能是你的linux防火牆阻礙了它。 打開我們在這裡使用的VNC端口(端口5902),或者暫時禁用防火牆(不推薦用於生產環境):
#systemctl stop 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 #Start結束大小類型名稱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命令前要小心。 設備不包含已識別的分區表 構建一個新的DOS磁盤標籤,磁盤標識符為0x8c16903a。 命令(m求助):n 分區類型: p primary(0 primary,0 extended,4 free) 擴展 選擇(默認p):p 分區號(1-4,默認1):1 第一個扇區(2048-4194303,默認為2048):<enter> 使用默認值2048 最後一個扇區,扇區或大小{K,M,G}(2048-4194303,默認4194303):<enter> 使用默認值4194303 設置類型為Linux且大小為2 GiB的分區1 命令(m求助):w 分區表已被更改! 調用ioctl()重新讀取分區表。 同步磁盤。
#mkfs.ext4 / dev / xvdb1 #mkdir / var / lib / mysql在node1上,掛載文件系統:
#mount / dev / xvdb1 / var / lib / mysql
安裝EC2 API工具
必須在每個群集節點上安裝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 #unzip ec2-api-tools.zip #mv ec2-api-tools-1.7.5.1 / / opt / aws / #export EC2_HOME =“/ opt / aws”
如果尚未安裝java(運行“要檢查哪個java”),請安裝它:
#yum install java-1.8.0-openjdk
示例(基於RHEL 7.2系統的默認配置。 相應調整)
#export JAVA_HOME =“/ usr / lib / jvm / java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64 / jre /”
您需要AWS Access Key和AWS Secret Key。 保持這些值很方便,因為稍後在集群設置期間也需要它們!有關更多信息,請參閱以下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 REGION eu-west-1 ec2.eu-west-1.amazonaws.com REGION ap-southeast-1 ec2.ap-southeast-1.amazonaws.com REGION ap-southeast-2 ec2.ap-southeast-2.amazonaws.com REGION eu-central-1 ec2.eu-central-1.amazonaws.com REGION ap-northeast-2 ec2.ap-northeast-2.amazonaws.com REGION ap-northeast-1 ec2.ap-northeast-1.amazonaws.com REGION us-east-1 ec2.us-east-1.amazonaws.com REGION sa-east-1 ec2.sa-east-1.amazonaws.com REGION us-west-1 ec2.us-west-1.amazonaws.com REGION us-west-2 ec2.us-west-2.amazonaws.com
安裝和配置MySQL
接下來,安裝安裝MySQL包,初始化示例數據庫,並為MySQL設置“root”密碼。 在RHEL7.X中,MySQL包已經被MariaDB包替換。
在“node1”上:
#yum install mariadb mariadb-server #mount / 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 --datadir = / var / lib / mysql --log& # ##注意:下一個命令允許來自任何主機的遠程連接。生產不是一個好主意! #echo“update user set Host ='%'where host ='node1';刷新權限| mysql mysql # ##將MySQL的root密碼設置為'SIOS' #echo“update user set Password = PASSWORD('SIOS')其中User ='root'; flush特權”| 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文件= / var / run中/ MariaDB的/ mariadb.pid 用戶=根 端口= 3306 #建議禁用符號鏈接以防止出現各種安全風險 符號鏈接= 0 [mysqld_safe的] 對數誤差= /無功/日誌/ MariaDB的/ mariadb.log PID文件= / var / run中/ MariaDB的/ mariadb.pid [客戶] 用戶=根 密碼= SIOS
將原始MySQL配置文件移到一邊(如果存在):
#mv /etc/my.cnf /etc/my.cnf.orig
在“node2”上:
在“node2”上,您只需要安裝MariaDB / MySQL軟件包。 其他步驟不是必需的:
[root @ node2~] #yum install mariadb mariadb-server
安裝和配置群集
此時,我們已準備好安裝和配置我們的集群。 SIOS Protection Suite for Linux(又名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 / install #mount -o loop sps.img / tmp / install #cd / tmp / install # 。/建立
在安裝腳本期間,系統會提示您回答一些問題。 您將在幾乎每個屏幕上按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
安裝Witness / Quorum包
LifeKeeper(steeleye-lkQWK)的Quorum / Witness服務器支持包與LifeKeeper核心的現有故障轉移過程相結合,可以在總體網絡故障常見的情況下以更大的可信度進行系統故障轉移。這實際上意味著可以在大大降低“裂腦”情況的風險的同時進行故障轉移。在所有3個節點(node1,node2,見證)上安裝Witness / Quorum 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 <path_to_file> / <filename> .lic
啟動LifeKeeper
在所有3個節點上,使用“lkstart”命令啟動集群軟件:
#/ opt / LifeKeeper / bin / lkstart
設置LifeKeeper GUI的用戶權限
在所有3個節點上,創建一個新的linux用戶帳戶(在本例中為“tony”)。 編輯/ etc / group並將“tony”用戶添加到“lkadmin”組以授予對LifeKeeper GUI的訪問權限。 默認情況下,只有“root”是該組的成員,我們在此處沒有root密碼:
#useradd tony #passwd tony #vi / etc / group lkadmin:X:1001:根,貝
打開LifeKeeper GUI
與node1的彈性IP(公共IP)地址建立VNC連接。 根據上面的VNC配置,您將使用之前指定的VNC密碼連接到<Public_IP>:2。 登錄後,打開終端窗口並使用以下命令運行LifeKeeper GUI:
#/ opt / LifeKeeper / bin / lkGUIapp&
系統將提示您連接到第一個群集節點(“node1”)。 輸入在VM創建期間指定的linux用戶標識和密碼:接下來,通過單擊以下屏幕截圖中突出顯示的“連接到服務器”按鈕連接到“node2”和“witness”:您現在應該看到GUI中的所有3個服務器,一個綠色的複選標記圖標,表明他們在線和健康:
創建溝通路徑
右鍵單擊“node1”並選擇Create Comm Path選擇BOTH“node2”和“witness”,然後按照嚮導進行操作。 這將創建以下之間的通信路徑:
- node1和node2
- node1&witness
仍然需要在node2和witness之間創建comm路徑。 右鍵單擊“node2”並選擇Create Comm Path。 按照嚮導選擇“見證”作為遠程服務器:此時已創建以下通信路徑:
- node1 < – > node2
- node1 < – >見證
- node2 < – >見證
服務器前面的圖標已從綠色“複選標記”更改為黃色“危險標記”。 這是因為我們在節點之間只有一條通信路徑。如果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.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 MACHINE NETWORK ADDRESSES / DEVICE STATE 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 witness MACHINE NETWORK ADDRESSES / DEVICE STATE PRIO node1 TCP 10.0.2.4/10.0.0.4 ALIVE 1 node2 TCP 10.0.2.4/10.0.1.4活著1
創建數據複製群集資源(即 鏡子)
接下來,創建數據複製資源以將/ var / lib / mysql分區從node1(source)複製到node2(target)。 單擊“綠色加號”圖標以創建新資源:按照嚮導進行以下選擇:
請選擇恢復工具包:數據複製 轉換類型:智能 服務器: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資源:
選擇Recovery Kit: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資源的Ping列表
默認情況下,SPS-Linux通過執行廣播ping來監視IP資源的運行狀況。 在許多虛擬和雲環境中,廣播ping不起作用。 在上一步中,我們在/ etc / default / LifeKeeper中設置“NOBCASTPING = 1”以關閉廣播ping檢查。相反,我們將定義一個ping列表。 這是在此IP資源的IP運行狀況檢查期間要ping的IP地址列表。 在本指南中,我們將見證服務器(10.0.2.4)添加到我們的ping列表中。右鍵單擊IP資源(ip-10.1.0.10)並選擇Properties:您將看到最初沒有為我們的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 --datadir = / var / lib / mysql --log&
要創建,請單擊“綠色加號”圖標以創建新資源:按照嚮導使用以下選項創建IP資源:
選擇Recovery Kit:MySQL Database 轉換類型:智能 服務器:node1 my.cnf的位置:/ var / lib / mysql MySQL可執行文件的位置:/ usr / bin 數據庫標籤:mysql
使用以下選項擴展IP資源:
目標服務器:node2 轉換類型:智能 模板優先級:1 目標優先級:10
因此,您的群集將如下所示。 請注意,數據複製資源已自動移動到數據庫下(自動創建依賴關係),以確保它始終在數據庫之前聯機:
創建EC2資源以在故障轉移時管理路由表
測試群集連接