實驗用主機:
提供iscsi磁盤:172.16.103.1,提供iscsi磁盤
高可用主機:172.16.103.2,172.16.103.3
實驗拓撲:
實驗步驟:
一、配置172.16.103.1,輸出iscsi磁盤,創建的磁盤分區爲/dev/sda3,在實際的使用環境中的通常爲整個磁盤而非分區。
# yum install -y scsi-target-utils # service tgtd start # tgtadm --lld iscsi --mode target --op new --tid 1 --targetname iqn.2014-09.com.iscsi:t1 創建target # tgtadm --lld iscsi --mode target --op show #查看創建的target # tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 --backing-store /dev/sda3 # tgtadm --lld iscsi --mode target --op show #查看lun創建的結果 # tgtadm --lld iscsi --mode target --op bind --tid 1 --initiator-address 172.16.0.0/16 #基於IP地址做訪問控制,授權給172.16.0.0/16網段的主機訪問。
二、配置前端的高可用節點,發現並使用該磁盤設備:
# yum install -y iscsi-initiator-utils # iscsiadm -m discovery -t st -p 172.16.103.1 # iscsiadm -m node -T iqn.2014-09.com.iscsi:t1 -p 172.16.103.1 -l
此時在磁盤信息中可以查看到新的磁盤信息,顯示的新磁盤爲未創建分區的新磁盤:
[root@node1 ~]# fdisk -l /dev/sd[a-z] Disk /dev/sda: 128.8 GB, 128849018880 bytes 255 heads, 63 sectors/track, 15665 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000652c0 Device Boot Start End Blocks Id System /dev/sda1 * 1 26 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 26 7859 62914560 8e Linux LVM /dev/sda3 7859 7990 1059291 83 Linux /dev/sda4 7991 15665 61649437+ 5 Extended /dev/sda5 7991 8122 1060258+ 83 Linux Disk /dev/sdb: 2154 MB, 2154000384 bytes 67 heads, 62 sectors/track, 1012 cylinders Units = cylinders of 4154 * 512 = 2126848 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
將該磁盤分區創建爲/dev/sdb1,所有的容量都分配給該磁盤分區,執行格式化操作:
# mke2fs -t ext4 /dev/sdb1 # mkdir /mydata/data #作爲數據庫存儲數據的目錄 # groupadd -g 3306 mysql # useradd -u 3306 -g mysql -s /sbin/nologin -M mysql # chown -R mysql.mysql /mydata/data # mount /dev/sdb1 /mydata/data
三、使用二進制格式的MariaDB安裝mysql
# tar xf mariadb-5.5.39-linux-x86_64.tar.gz -C /usr/local # ln -sv mariadb-5.5.39-linux-x86_64/ mysql # cd mysql # chown -R root.mysql ./ # scripts/mysql_install_db --user=mysql --datadir=/mydata/data # mkdir /etc/mysql # cp support-files/my-large.cnf /etc/mysql/my.cnf # vim /etc/mysql/my.cnf datadir = /mydata/data # cp support-files/mysql.server /etc/rc.d/init.d/mysqld # chmod +x /etc/rc.d/init.d/mysqld # mount /dev/sdb1 /mydata/data # service mysqld start # /usr/local/mysql/bin/mysql #連接數據庫測試 > CREATE DATABASE tdb; #創建一個數據庫用於驗證其他節點掛載同一磁盤時是否可以使用相同的數據
另一個節點的數據庫安裝方式相同,就不在重複了。
四、使用ansible安裝corosync+pacemaker+crmsh:
在配置高可用集羣之前一定要先確定數據庫和iscsi磁盤未掛載!
使用crmsh配置時的具體步驟爲:
crm(live)configure# property stonith-enabled=false crm(live)configure# property no-quorum-policy=ignore crm(live)configure# primitive myip ocf:heartbeat:IPaddr params ip=172.16.103.25 crm(live)configure# primitive mystore ocf:heartbeat:Filesystem params device=/dev/sdb1 directory=/mydata/data fstype=ext4 op start timeout=60s op stop timeout=60s crm(live)configure# primitive mysql lsb:mysqld crm(live)configure# group myservice myip mystore mysql crm(live)configure# order myip_before_mystore_before_mysql mandatory: myip mystore mysql crm(live)configure# verify crm(live)configure# commit
配置完成後查看資源啓動的狀態:
crm(live)# status Last updated: Sun Sep 7 18:09:00 2014 Last change: Sun Sep 7 18:08:47 2014 via crm_attribute on node2.cluster.com Stack: classic openais (with plugin) Current DC: node1.cluster.com - partition with quorum Version: 1.1.10-14.el6-368c726 2 Nodes configured, 2 expected votes 3 Resources configured Node node2.cluster.com: standby Online: [ node1.cluster.com ] Resource Group: myservice myip(ocf::heartbeat:IPaddr):Started node1.cluster.com mystore(ocf::heartbeat:Filesystem):Started node1.cluster.com mysql(lsb:mysqld):Started node1.cluster.com
當前資源運行在node1上,使用ifconfig命令可以查看ip地址配置的結果以及測試連接MySQL測試數據庫是否可用。
[root@node1 ~]# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:e1:37:51 brd ff:ff:ff:ff:ff:ff inet 172.16.103.2/16 brd 172.16.255.255 scope global eth0 inet 172.16.103.25/16 brd 172.16.255.255 scope global secondary eth0 inet6 fe80::20c:29ff:fee1:3751/64 scope link valid_lft forever preferred_lft forever
[root@node1 ~]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.1.71 Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
可以看到IP地址172.16.103.25配置在eth0上,mysql數據庫連接也正常。如果切換node1爲standby模式,資源是否會轉移,測試結果爲:
crm(live)# status Last updated: Sun Sep 7 18:14:33 2014 Last change: Sun Sep 7 18:14:27 2014 via crm_attribute on node1.cluster.com Stack: classic openais (with plugin) Current DC: node1.cluster.com - partition with quorum Version: 1.1.10-14.el6-368c726 2 Nodes configured, 2 expected votes 3 Resources configured Node node1.cluster.com: standby Online: [ node2.cluster.com ] Resource Group: myservice myip(ocf::heartbeat:IPaddr):Started node2.cluster.com mystore(ocf::heartbeat:Filesystem):Started node2.cluster.com mysql(lsb:mysqld):Started node2.cluster.com
可以看到資源都運行在了node2上。