LXY3800 发表于 2019-1-7 13:13:31

高可用集群技术之heartbeat应用案例详解(二)

  在上一节高可用集群技术之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 mysql4096 Jul 25 12:11 binlogs
drwxr-xr-x 2 mysql mysql4096 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
binlogsdatalost+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 nobody4096 Jul 25 13:18 binlogs
drwxr-xr-x. 6 nobody nobody4096 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 如下图所示:
  http://s2.运维网.com/wyfs02/M01/84/AA/wKiom1eVzV7iZOtqAAnw9LS6sXM069.gif
  (2)添加NFS共享存储资源mysqlstore资源,共享数据库文件。配置如下图:
  http://s4.运维网.com/wyfs02/M01/84/C2/wKiom1eVzjfiyRZOAAgiWTwaLr8339.gif

  (3)配置资源mysqlserver 如下图所示:
  http://s3.运维网.com/wyfs02/M00/84/D2/wKiom1eVz1SQzCXNAAV1L2Yi0oI882.gif
  mysql高可用测试如下所示:
  http://s2.运维网.com/wyfs02/M01/84/D2/wKioL1eV0GixhEyxAAPe0cZIbIc091.gif
  
  生产环境应用实例(二):基于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 "Web from Node3_RS1" > /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
Web from Node3_RS1
# curl http://172.16.100.11
Web from Node3_RS1
--配置RealServer2服务器
# echo "Web from Node4_RS2" > /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
Web from Node4_RS2
# curl http://172.16.100.12
Web from Node4_RS2  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
TCP172.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图形化配置过程如下:
  http://s4.运维网.com/wyfs02/M02/84/E5/wKiom1eW3dOgXNoJABGFBZy3ccY666.gif
  ##测试heartbeat+LVS高可用:
  http://s5.运维网.com/wyfs02/M02/84/E5/wKiom1eW35WgqGITAAYTVXdMkng543.gif
  
  
  生产环境应用实例(二):基于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 "Web from Node3_RS1" > /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
Web from Node3_RS1
# curl http://172.16.100.11
Web from Node3_RS1
--配置RealServer2服务器
# echo "Web from Node4_RS2" > /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
Web from Node4_RS2
# curl http://172.16.100.12
Web from Node4_RS2  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 installheartbeat-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 "Maintanance Time" > /var/www/html/index.html
# service httpd start
------------------------------------------------------------
------------------------------------------------------------
--配置Director2集群节点
# rm -rf /etc/sysconfig/ipvsadm    --删除ipvs规则
# yum -y installheartbeat-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 "Maintanance Time" > /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图形化配置过程如下:
  http://s4.运维网.com/wyfs02/M02/84/EB/wKioL1eXMAPRHSmeABHqx3Djv2c796.gif
  ##在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
TCP172.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测试如下:
http://s2.运维网.com/wyfs02/M01/84/EB/wKiom1eXMhqh2IxGAAi6tm6AqWg680.gif
  以上关于heartbeat所有应用内容。




页: [1]
查看完整版本: 高可用集群技术之heartbeat应用案例详解(二)