在上一节高可用集群技术之heartbeat应用详解(一),我们分析了heartbeat原理及heartbeat简单的应用,下面我们以实战生产案例应用heartbeat高可用技术:
生产环境应用实例(一):基于heartbeat+nfs实现mysql高可用
(1)nfs共享存储服务配置如下:
--建立分区 # fdisk /dev/sda # kpartx -l /dev/sda # kpartx -af /dev/sda # partx -a /dev/sda --创建LVM逻辑卷管理 # pvcreate /dev/sda3 # vgcreate myvg /dev/sda3 # lvcreate -L 10G -n mydata myvg --格式化LVM逻辑卷并创建mysql用户及目录 # mke2fs -j /dev/myvg/mydata # groupadd -g 3306 mysql # useradd -u 3306 -g mysql -s /sbin/nologin -M mysql # mkdir /mydata # vim /etc/fstab 追加此行: /dev/myvg/mydata /mydata ext4 defaults 0 0 # mount -a # mkdir /mydata/{data,binlogs} # chown -R mysql.mysql /mydata/{data,binlogs} # ll /mydata/ total 24 drwxr-xr-x 2 mysql mysql 4096 Jul 25 12:11 binlogs drwxr-xr-x 2 mysql mysql 4096 Jul 25 12:11 data --输出nfs文件共享 # vim /etc/exports /mydata 172.16.0.0/16(rw,no_root_squash) # exportfs -arv exporting 172.16.0.0/16:/mydata
(2)配置集群节点node1的mysql数据库服务:
--配置前先检查NFS共享存储是否配置成功 # groupadd -g 3306 mysql # useradd -g 3306 -u 3306 -s /sbin/nologin -M mysql # mkdir /mydata # mount 172.16.100.9:/mydata /mydata/ # cd /mydata/;ls binlogs data lost+found --安装mysql数据库服务 # tar xf mariadb-10.0.10-linux-x86_64.tar.gz -C /usr/local/ # cd /usr/local/ # ln -sv mariadb-10.0.10-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 配置以下选项: thread_concurrency = 4 datadir = /mydata/data innodb_file_per_table = ON log-bin=/mydata/binlogs/master-bin # cp support-files/mysql.server /etc/rc.d/init.d/mysqld # chkconfig --add mysqld # chkconfig mysqld off --启动mysql服务 # service mysqld start # /usr/local/mysql/bin/mysql --创建samleedb数据库测试 MariaDB [(none)]> CREATE DATABASE samleedb; MariaDB [(none)]> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | samleedb | | test | +--------------------+ 建立远程mysql远程用户测试: MariaDB [(none)]>GRANT ALL ON *.* to 'root'@'%' IDENTIFIED BY 'redhat'; MariaDB [(none)]> FLUSH PRIVILEGES; --停止mysql服务及卸载NFS目录 # service mysqld stop # umount /mydata/
(3)配置集群节点node2的mysql数据库服务:
--配置前先检查NFS共享存储是否配置成功 # groupadd -r -g 3306 mysql # useradd -g 3306 -u 3306 -s /sbin/nologin -M mysql # mkdir /mydata # mount 172.16.100.9:/mydata /mydata # ll /mydata/ total 24 drwxr-xr-x. 2 nobody nobody 4096 Jul 25 13:18 binlogs drwxr-xr-x. 6 nobody nobody 4096 Jul 25 13:18 data drwx------. 2 root root 16384 Jul 25 12:06 lost+found # usermod -s /bin/bash mysql # su - mysql su: warning: cannot change directory to /home/mysql: No such file or directory -bash-4.1$ cd /mydata/data/ -bash-4.1$ touch a -bash-4.1$ rm a -bash-4.1$ exit logout --安装mysql数据库服务 # tar xf mariadb-10.0.10-linux-x86_64.tar.gz -C /usr/local/ # cd /usr/local/ # ln -sv mariadb-10.0.10-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 配置以下选项: thread_concurrency = 4 datadir = /mydata/data innodb_file_per_table = ON log-bin=/mydata/binlogs/master-bin # cp support-files/mysql.server /etc/rc.d/init.d/mysqld # chmod +x /etc/rc.d/init.d/mysqld # chkconfig --add mysqld # chkconfig mysqld off --启动mysql服务 # service mysqld start # /usr/local/mysql/bin/mysql --查询数据库及日志文件测试 MariaDB [(none)]> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | samleedb | | test | +--------------------+ MariaDB [(none)]> SHOW BINARY LOGS; +-------------------+-----------+ | Log_name | File_size | +-------------------+-----------+ | master-bin.000001 | 461 | | master-bin.000002 | 327 | +-------------------+-----------+ --停止mysql服务及卸载NFS目录 # service mysqld stop # umount /mydata/
(4)使用gui图形化配置heartbeat实现mysql高可用配置
(1)添加mysqlservice组并配置资源VIP:myqlip 如下图所示:
(2)添加NFS共享存储资源mysqlstore资源,共享数据库文件。配置如下图:
(3)配置资源mysqlserver 如下图所示:
mysql高可用测试如下所示:
生产环境应用实例(二):基于heartbeat+ipvs实现LVS高可用(简单应用)
1.服务器架构如下:
node1.samlee.com 172.16.100.6 为:Director1 node2.samlee.com 172.16.100.7 为:Director2 node3.samlee.com 172.16.100.11 为:RealServer1 node4.samlee.com 172.16.100.12 为:RealServer2 VIP:172.16.100.99 此时要把前四个地址和主机名同步到各主机,并且按照分配配置主机名
2.配置RealServer服务器:
--配置RealServer1服务器 # echo "<h1>Web from Node3_RS1</h1>" > /var/www/html/index.html # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce # echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce # echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore # echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore # ifconfig lo:0 172.16.100.99 netmask 255.255.255.255 broadcast 172.16.100.99 up # route add -host 172.16.100.99 dev lo:0 # service httpd start # curl http://172.16.100.99 <h1>Web from Node3_RS1</h1> # curl http://172.16.100.11 <h1>Web from Node3_RS1</h1> --配置RealServer2服务器 # echo "<h1>Web from Node4_RS2</h1>" > /var/www/html/index.html # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce # echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce # echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore # echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore # ifconfig lo:0 172.16.100.99 netmask 255.255.255.255 broadcast 172.16.100.99 up # route add -host 172.16.100.99 dev lo:0 # service httpd start # curl http://172.16.100.99 <h1>Web from Node4_RS2</h1> # curl http://172.16.100.12 <h1>Web from Node4_RS2</h1>
2.配置Director服务:
--配置Director1集群节点(删除所有集群节点资源,并停止heartbeat服务) # service heartbeat stop # ssh node2 'service heartbeat stop' --安装ipvsadm # yum -y install ipvsadm # chkconfig ipvsadm off # ifconfig eth0:0 172.16.100.99/16 up # route add -host 172.16.100.99 dev eth0:0 # ipvsadm -A -t 172.16.100.99:80 -s rr # ipvsadm -a -t 172.16.100.99:80 -r 172.16.100.11 -g # ipvsadm -a -t 172.16.100.99:80 -r 172.16.100.12 -g # service ipvsadm save # service ipvsadm stop # ifconfig eth0:0 down ------------------------------------------------------------ ------------------------------------------------------------ --配置Director2集群节点 # yum -y install ipvsadm # chkconfig ipvsadm off # scp node1:/etc/sysconfig/ipvsadm /etc/sysconfig/ # ifconfig eth0:0 172.16.100.99/16 up # route add -host 172.16.100.99 dev eth0:0 # ipvsadm -R < /etc/sysconfig/ipvsadm # ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.16.100.99:80 rr -> 172.16.100.11:80 Route 1 0 0 -> 172.16.100.12:80 Route 1 0 0 # service ipvsadm stop # ifconfig eth0:0 down --启动heartbeat服务 # service heartbeat start # ssh node1 'service heartbeat start' ---使用gui图形化配置LVS高可用--- 配置资源如下: 组:director ----资源:vip --------资源类型:ip:172.16.100.99 ----------------:nic:eth0 ----------------:ifabel:0 ----------------:cidr_netmask:32 ----------------:broadcast:172.16.100.99 ----------------:lvs_support:true ----资源:ipvsadm --------资源类型:ipvsadm
#使用heartbeat-gui图形化配置过程如下:
##测试heartbeat+LVS高可用:
生产环境应用实例(二):基于heartbeat+ipvs实现LVS高可用(实现健康状态检测)
1.服务器架构如下:
node1.samlee.com 172.16.100.6 为:Director1 node2.samlee.com 172.16.100.7 为:Director2 node3.samlee.com 172.16.100.11 为:RealServer1 node4.samlee.com 172.16.100.12 为:RealServer2 VIP:172.16.100.99 此时要把前四个地址和主机名同步到各主机,并且按照分配配置主机名
2.配置RealServer服务器:
--配置RealServer1服务器 # echo "<h1>Web from Node3_RS1</h1>" > /var/www/html/index.html # echo "OK" > /var/www/html/.health.html # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce # echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce # echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore # echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore # ifconfig lo:0 172.16.100.99 netmask 255.255.255.255 broadcast 172.16.100.99 up # route add -host 172.16.100.99 dev lo:0 # service httpd start # curl http://172.16.100.99 <h1>Web from Node3_RS1</h1> # curl http://172.16.100.11 <h1>Web from Node3_RS1</h1> --配置RealServer2服务器 # echo "<h1>Web from Node4_RS2</h1>" > /var/www/html/index.html # echo "OK" > /var/www/html/.health.html # echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce # echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce # echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore # echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore # ifconfig lo:0 172.16.100.99 netmask 255.255.255.255 broadcast 172.16.100.99 up # route add -host 172.16.100.99 dev lo:0 # service httpd start # curl http://172.16.100.99 <h1>Web from Node4_RS2</h1> # curl http://172.16.100.12 <h1>Web from Node4_RS2</h1>
2.配置Director服务:
--配置Director1集群节点(删除所有集群节点资源,并停止heartbeat服务) # service heartbeat stop # ssh node2 'service heartbeat stop' --安装ipvsadm # yum -y install ipvsadm # chkconfig ipvsadm off --安装配置ldirectord # rm -rf /etc/sysconfig/ipvsadm --删除ipvs规则 # yum -y install heartbeat-ldirectord-2.1.4-12.el6.x86_64.rpm # chkconfig ldirectord off # cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/ # vim /etc/ha.d/ldirectord.cf checktimeout=3 checkinterval=1 autoreload=yes logfile="/var/log/ldirectord.log" quiescent=yes # Sample for an http virtual service virtual=172.16.100.99:80 real=172.16.100.11:80 gate real=172.16.100.12:80 gate fallback=127.0.0.1:80 gate service=http request=".health.html" receive="OK" scheduler=rr --启动http服务 # echo "<h1>Maintanance Time</h1>" > /var/www/html/index.html # service httpd start ------------------------------------------------------------ ------------------------------------------------------------ --配置Director2集群节点 # rm -rf /etc/sysconfig/ipvsadm --删除ipvs规则 # yum -y install heartbeat-ldirectord-2.1.4-12.el6.x86_64.rpm # chkconfig ldirectord off # cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/ # vim /etc/ha.d/ldirectord.cf checktimeout=3 checkinterval=1 autoreload=yes logfile="/var/log/ldirectord.log" quiescent=yes # Sample for an http virtual service virtual=172.16.100.99:80 real=172.16.100.11:80 gate real=172.16.100.12:80 gate fallback=127.0.0.1:80 gate service=http request=".health.html" receive="OK" scheduler=rr --启动http服务 # echo "<h1>Maintanance Time</h1>" > /var/www/html/index.html # service httpd start --启动heartbeat服务 # service heartbeat start # ssh node1 'service heartbeat start' ---使用gui图形化配置LVS高可用--- 配置资源如下: 组:director ----资源:vip --------资源类型:ip:172.16.100.99 ----------------:nic:eth0 ----------------:ifabel:0 ----------------:cidr_netmask:32 ----------------:broadcast:172.16.100.99 ----------------:lvs_support:true ----资源:ldirectord --------资源类型:configfile:/etc/ha.d/ldirectord.cf
#使用heartbeat-gui图形化配置过程如下:
##在node2节点上查询ipvs规则
# ipvsadm -L -n IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.16.100.99:80 rr -> 172.16.100.11:80 Route 1 0 0 -> 172.16.100.12:80 Route 1 0 0
##停止Rs1和Rs2测试如下:
以上关于heartbeat所有应用内容。
转载于:https://blog.51cto.com/gzsamlee/1830286