In the previous article described the MySQL HA on azured design idea, this article will describe the specific deployment, installation and configuration of each component.
The overall design structure is as follows:
The following will be the installation configuration process for all components, all of which are CentOS 6.5 operating systems. The new virtual machines on Azure, the configuration of the vnet, etc. are no longer covered in this article. If necessary, please refer to the blog of Zhang Lei's classmates:
Http://www.cnblogs.com/threestone
- Configure Azure Internal Load balance and add hard drives
This article uses the Xplate CLI to deploy the internal Load balancer, whose address is static 10.1.1.200,distribution mode with SOURCEIP.
- First create an ILB:
Azure Service Internal-load-balancer add-a 10.1.1.200-t Subnet-2 mysql-ha mysql-ha-ilb
Info:service internal-load-balancer Add Command OK
- Creating Endpoint and Loadbalanceset
Azure VM Endpoint Create-n Mysql-o tcp-t 3306-r tcp-b mysql-ha-lbs-i mysql-ha-ilb-a sourceIP mysql-ha1 3306 3306
INFO:VM Endpoint Create command OK
Azure VM Endpoint Create-n Mysql-o tcp-t 3306-r tcp-b mysql-ha-lbs-i mysql-ha-ilb-a sourceIP mysql-ha2 3306 3306
INFO:VM Endpoint Create command OK
- View ILB
- Fixed dip addresses for two VMS
Azure VM Static-ip Set MYSQL-HA1 10.1.1.6
Azure VM Static-ip Set MYSQL-HA2 10.1.1.7
- Add 20G of hard disk to each VM
Azure VM Disk Attach-new MYSQL-HA1 https://portalvhds68sv75c8hs05m.blob.core.chinacloudapi.cn/hwmysqltest/ Mysqlha1sdc.vhd
Azure VM Disk Attach-new MYSQL-HA2 https://portalvhds68sv75c8hs05m.blob.core.chinacloudapi.cn/hwmysqltest/ Mysqlha2sdc.vhd
?
- Installing the deployment DRBD on the server
?
- Install dependent packages
Yum-y install gcc rpm-build kernel-devel kernel-headers Flex Ncurses-devel
- Download the DRBD installation package and install
wget http://elrepo.org/linux/elrepo/el5/x86_64/RPMS/drbd84-utils-8.4.3-1.el5.elrepo.x86_64.rpm
wget http://elrepo.org/linux/elrepo/el6/x86_64/RPMS/kmod-drbd84-8.4.3-1.el6_4.elrepo.x86_64.rpm
Yum-y Install drbd84-utils-8.4.3-1.el5.elrepo.x86_64.rpm
Yum Install-y kmod-drbd84-8.4.3-1.el6_4.elrepo.x86_64.rpm
- Turn off SELinux
Setenforce 0
or modify the configuration file/etc/sysconfig/selinux
Selinux=disabled
- Modifying a configuration file
Vim/etc/drbd.d/mysql.res
Resource MySQL {
Protocol C;
device/dev/drbd0;
DISK/DEV/SDC1;
Meta-disk internal;
On MYSQL-HA1 {
Address 10.1.1.6:7789;
}
On MYSQL-HA2 {
Address 10.1.1.7:7789;
}
}
- Modify the Hosts file
To ensure that DRBD works properly, modify the Hosts file to add the DRBD cluster machine to the Hosts file
Vim/etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
:: 1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.1.1.6 MYSQL-HA1
10.1.1.7 MYSQL-HA2
- to/DEV/SDC partition
Note that you are not formatting at this time. The specific method is no longer described.
- Create a work disk for DRBD
Run Drbdadm CREATE-MD MySQL on two VMs and create a work disk for DRBD, respectively
Run on MYSQL-HA1: Drbdadm----Overwrite-data-of-peer primary MySQL, making this VM a primary for the DRBD group. When you view the status of DRBD by Drbd-overview, you can see that two disks are synchronizing at this time:
0:mysql/0 syncsource primary/secondary uptodate/inconsistent C r-----
???? [A]. ..... ......... Sync ' ed:0.6% (20372/20476) M
The format is now on the master node: mkfs.ext4/dev/drbd0
?
At this point, the DRBD installation configuration is complete. At this point, you can only mount this DRBD disk on primary VMS, only see this disk on secondary VMS, but you cannot manipulate it.
?
- Installing Deployment Corosync, pacemaker, and CRM on the server
As mentioned earlier, corosync the entire cluster message layer,pacemaker is the brain of the cluster, and the CRM software is the editor of the cluster. The installation deployment process for the cluster is as follows:
- Add a Epel yum source
In the domestic visits abroad Epel source because is affected by the GFW, cannot visit. So choose the domestic Yahoo yum source. Here's how:
Vim/etc/yum.repos.d/epel.repo
[Epel]
Name=epel
baseurl=http://mirrors.sohu.com/fedora-epel/6/$basearch
Enabled=1
Gpgcheck=0
?
- Install in the following order
Yum install-y Corosync pacemaker-y
Yum Install Cluster-glue-y
wget http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6/src/crmsh-2.1-1.6.src.rpm
wget http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6/src/pssh-2.3.1-4.2.src.rpm
Yum install python-devel python-setuptools gcc make gcc-c++ rpm-build python-lxml cluster-glue-libs-devel Pacemaker-libs-devel AsciiDoc autoconf Automake redhat-rpm-config-y
Rpmbuild--rebuild crmsh-2.1-1.6.src.rpm
Rpmbuild--rebuild pssh-2.3.1-4.2.src.rpm
cd/root/rpmbuild/rpms/x86_64/
Yum Install *-y
- Configuring the Corosync configuration file
The member configuration and TRANSPORT:UDPU are specified with the UDP unicast (unicast) configuration.
Make full mesh node configuration on all nodes:
Vim/etc/corosync/corosync.conf
Compatibility:whitetank
Totem {
Version:2
Secauth:off
threads:0
interface {
member{
memberaddr:10.1.1.6
}
member{
memberaddr:10.1.1.7
}
ringnumber:0
bindnetaddr:10.1.1.0
mcastport:5405
Ttl:1
}
Transport:udpu
}
Logging {
Fileline:off
To_stderr:no
To_logfile:yes
LogFile:/var/log/cluster/corosync.log
To_syslog:yes
Debug:off
Timestamp:on
Logger_subsys {
Subsys:amf
Debug:off
}
}
AMF {
Mode:disabled
}
Service {
Ver:1
Name:pacemaker
Use_mgmtd:no
Use_logd:no
}
aisexec {
User:root
Group:root
}
?
- Generate a Corosync key file
Mv/dev/random/dev/random.bak
Ln-s/dev/urandom/dev/random
Corosync-keygen
Scp/etc/corosync/authkey Mysql-ha2:/etc/corosync
- Start Corosync and Pacemaker services
Service Corosync Start
SSH mysql-ha2 ' service corosync start '
Service Pacemaker Start
SSH mysql-ha2 ' service pacemaker start '
- Install azure components, create a MDFILB service
To install the Azure CLI:
Yum Install Nodejs–y
Yum Install Npm–y
NPM Install Azure-cli–g
Create a file in/etc/init.d mdfilb
#!/bin/sh
Start ()
{
Echo-n $ "Starting Azure ILB Modify:"
/root/mdfilb.sh
Echo
}
Stop ()
{
Echo-n $ "Shutting down Azure ILB Modify:"
Echo
}
mdfilb= "/root/mdfilb.sh"
[-F $MDFILB] | | Exit 1
# See how we were called.
Case "$" in
Start
Start
;;
Stop
Stop
;;
Restart
Stop
Sleep 3
Start
;;
*)
echo $ "Usage: $ {Start|stop|restart}"
Exit 1
Esac
Exit 0
vim/root/mdfilb.sh
Azure VM Endpoint Delete mysql-ha2 MySQL
Azure VM Endpoint create-i mysql-ha-ilb-o tcp-t 3306-k 3306-b mysql-ha-lbs-r tcp-a sourceIP mysql-ha1 3306 3306
?
However, the VM is not stable to the ILB for the modified result.
- Orchestration of pacemaker through CRM
?
- The CRM configure enters the editing interface and adjusts the two global parameters:
Property Stonith-enabled=false
Property No-quorum-policy=ignore
- Choreography
Before the orchestration of the business, two VMS need to be restarted.
- DRBD Services
CRM Configure
Primitive MYSQLDRBD OCF:LINBIT:DRBD params drbd_resource= "MySQL" Op start timeout=240 op stop timeout=240
Ms MYDRBD MYSQLDRBD Meta master-max= "1" master-node-max= "1" clone-max= "2" clone-node-max= "1" notify= "true"
Verify
Commit
- File Mount Service
Primitive Mystore ocf:heartbeat:Filesystem params device=/dev/drbd0 directory=/mydata fstype=ext4 op start timeout=60 op Stop timeout=60
Verify
Commit
Guaranteed file mount and DRBD on a single machine with guaranteed boot sequence
colocation MYSTORE_WITH_MYSQLDRBD Inf:mystore Mydrbd:master
Order MYSTORE_AFTER_MS_MYDRBD Mandatory:mydrbd:promote Mystore:start
Verify
Commit
- Change the service of an ILB
Primitive Mdfilb LSB:MDFILB
Ensure that the file is mounted on a server with a boot sequence
colocation mdfilb_with_mystore inf:mdfilb Mystore
Order Mdfilb_after_mystore Mandatory:mystore Mdfilb
Verify
Commit
- MySQL Service
Primitive Mysqld Lsb:mysqld
Ensure that the file is mounted on a server with a boot sequence
colocation mysqld_with_mystore inf:mysqld Mystore
Order Mysqld_after_mdfilb Mandatory:mdfilb Mysqld
Verify
Commit
?
At this point, all configurations are configured to complete. In the test, the VM controls the portion of the ILB that is not stable and can be deployed as appropriate.
You can view the status:
?
On the MYSQL-HA1:
[[email protected]/]# CRM status
Last Updated:sun Dec 6 03:33:21 2015
Last Change:sun Dec 6 02:57:11 2015
Stack:classic Openais (with plugin)
Current dc:mysql-ha2-partition with Quorum
Version:1.1.11-97629de
2 Nodes configured, 2 expected votes
5 Resources configured
?
?
Online: [Mysql-ha1 MYSQL-HA2]
?
Master/slave SET:MYDRBD [MYSQLDRBD]
Masters: [MYSQL-HA2]
Slaves: [MYSQL-HA1]
Mystore???? (Ocf::heartbeat:filesystem):???? Started MYSQL-HA2
MDFILB???? (LSB:MDFILB):???? Started MYSQL-HA2
MYSQLD???? (LSB:MYSQLD):???? Started MYSQL-HA2
?
?
[Email protected]/]# Drbd-overview
0:mysql/0 Connected secondary/primary uptodate/uptodate C r-----
?
[Email protected]/]# df-h
Filesystem Size used Avail use% mounted on
/DEV/SDA1 29G 3.3G 24G 13%/
Tmpfs 1.7G 30M 1.7G 2%/DEV/SHM
/DEV/SDB1 50G 180M 47G 1%/mnt/resource
?
[[Email protected]/]# service mysqld status
Mysqld is stopped
?
On the MYSQL-HA2:
[[email protected] ~]# CRM status
Last Updated:sun Dec 6 03:36:30 2015
Last Change:sun Dec 6 02:57:11 2015
Stack:classic Openais (with plugin)
Current dc:mysql-ha2-partition with Quorum
Version:1.1.11-97629de
2 Nodes configured, 2 expected votes
5 Resources configured
?
?
Online: [Mysql-ha1 MYSQL-HA2]
?
Master/slave SET:MYDRBD [MYSQLDRBD]
Masters: [MYSQL-HA2]
Slaves: [MYSQL-HA1]
Mystore???? (Ocf::heartbeat:filesystem):???? Started MYSQL-HA2
MDFILB???? (LSB:MDFILB):???? Started MYSQL-HA2
MYSQLD???? (LSB:MYSQLD):???? Started MYSQL-HA2
?
[Email protected] ~]# Drbd-overview
0:mysql/0 Connected primary/secondary uptodate/uptodate C r-----/mydata ext4 20G 193M 19G 2%
?
[Email protected] ~]# df-h
Filesystem Size used Avail use% mounted on
/DEV/SDA1 29G 3.2G 24G 12%/
Tmpfs 1.7G 45M 1.7G 3%/DEV/SHM
/DEV/SDB1 50G 180M 47G 1%/mnt/resource
/dev/drbd0 20G 193M 19G 2%/mydata
?
[[Email protected] ~]# service mysqld status
MYSQLD (PID 2367) is running ...
?
[Email protected] ~]# cd/mydata/
[[email protected] mydata]# ls
Hengwei ibdata1 ib_logfile0 ib_logfile1 lost+found mysql test
?
?
At this time, the front end through the MySQL client access to the 10.1.1.200 3306 port, the two machines at random shut down the situation, can quickly restore the connection, maintain business continuity!
MySQL on Azure High Availability Design Drbd-corosync-pacemaker-crm (ii)