红色多瑙河 发表于 2019-1-7 13:38:36

Linux下VS/DR+heartbeat实现高可用负载均衡服务

  HEARBEAT介绍
  Heartbeat 是可以从 Linux-HA 项目 Web 站点公开获得的软件包之一。它提供了所有 HA 系统所需要的基本功能,比如启动和停止资源、监测群集中系统的可用性、在群集中的节点间转移共享 IP 地址的所有者等。它通过串行线、以太网接口或者同时使用二者来监测特定服务(或多个服务)的健康状况。当前版本支持两节点配置,使用专门的 heartbeat“pings”来检查服务的状态和可用性。
  LINUX heartbeat使用一个心跳协议,心跳协议意味着消息规则的在两个或更多节点之间发送,如
  果消息没有在给定的节点间接收到,就会认为这个节点是失效的并且运行某种失败切换或恢复动
  作,LINUX heartbeat使用标准的以太网接口来发送心跳消息。
  当LINUX heartbeat被初始化设置好以后,需要选择一个节点作为主节点,当主节点的心跳启动以
  后,它将分配一个虚拟IP地址给主节点的网络接口,外部的进程和应用等将按照这个方式访问这
  个节点,如果主节失效,那么在集群中的另一个节点将为这个虚拟IP地址启动一个接口并且用地址转换保证所有访问这个IP的请求都绑定到本机,也就是IP自动漂移到本机,这种就是IP地址
  接管。
  每一个虚拟IP地址都可以被看作是一个资源,它被封装作为程序其工作方式类似于UNIX的INIT
  脚本,这意味着它能够启动和停止,并且它也能够被查询是否正在运行,用这种方式,LINUX
  heartbeat能够根据用heartbeat协议,根据节点间通信的状态启动或停止这些虚拟IP。
  LINUXHEARTBEAT的配置
  三个最关键的修改文件:
  
  
  1 配置/etc/ha.d/ha.cf(只在一个节点上配即可,配好后copy到其它节点)
  vi /etc/ha.d/ha.cf
  按如下内容进行修改(文件中#开头的行为注释行,更多的选项及选项的详细说明请参考文件中的注释及相关文档)
  debugfile /var/log/ha-debug #写debug信息到这个文件中
  logfile /var/log/ha-log          #写运行日志到这个文件中
  keepalive 2 #设置心跳时间为2秒
  deadtime 30 #设置离最近一次心跳多长时间没有心跳时表明节点失败
  warntime 10 #设置离最近的一次心跳多长时间没有心跳时发出警告
  initdead120      #机器重启动或是刚开机时,网络能正确开始工作的时间,最小设置为deadtime的两倍
  udpport 694 #bcast/ucast方式心跳通讯所用的UDP端口
  #baud 19200 #串口的波特率,使用串口作心跳时需设置
  #serial /dev/ttyS0 #串口设备名,使用串口作心跳时需设置
  bcast eth0 #使用哪一个设备(网卡)做心跳
  #bcast eth1 eth2 #使用多个设备(网卡)做心跳时的设置
  auto_failback on #当主节点从失败状态恢复时是否恢复其主节点的身份,即应用是否返回到其自身运行
  #on 返回
  #off 不返回,其它节点继续作为主节点运行
  #legacy 当所有节点都不支持自动返回时,将自身设为自动返回
  node gfs132#节点的主机名或域名,需在/etc/hosts文件或
  node gfs133 #所有节点都以node开始的行列出
  ping 172.20.16.2 #ping节点,不属于cluster内的节点,通常选一台路由器或交换机作为Ping节点,
  #ipfail模块通过此节点来验证网络的连通性,可指定多个Ping节点
  respawn hacluster /usr/lib64/heartbeat/ipfail #由heartbeat调用并监视ipfail模块
  2 配置/etc/ha.d/haresources (只在一个节点上配即可,配好后copy到其它节点)
  vi /etc/ha.d/haresources
  按如下内容进行修改(文件中#开头的行为注释行,更多的选项及选项的详细说明请参考文件中的注释及相关文档)
  gfs132 172.20.16.99 mysqld mon    #设置heartbeat管理的资源或服务
  #格式为:主节点主机名或域名 浮动IP 服务名
  #主节点主机名或域名为ha.cf中node行中指定的任一节点
  #浮动IP 为对外提供访问的IP,主节点失败后会自动漂移到其它节点,继续对外提供服务.
  #服务名为 heartbeat管理的服务
  #注意,此文件内容所有节点必须保持一致。
  3 配置/etc/ha.d/authkeys(只在一个节点上配即可,配好后copy到其它节点)
  vi /etc/ha.d/authkeys
  按如下内容进行修改(文件中#开头的行为注释行,更多的选项及选项的详细说明请参考文件中的注释及相关文档)
  auth 3 #设置认证方式
  #1 crc #格式为:auth
  3 md5 Hello! #
  [] 说明:
  #如果是用心跳是用交叉线直接对连两个节点,用crc方式即可,CPU占用最少
  #如果心跳位于不安全的网络,如通过共用交换机连接节点,则选用sha1或md5
  #sha1占用CPU资源更多,但是更安全,md5安全性及CPU占用率居中
  #sha1和md5都需要提供认证KEY,即用来加密的KEY
  #注意,此文件权限必须设置为600
  4 copy以上配置文件到其它节点
  scp /etc/ha.d/ha.cf /etc/ha.d/haresources /etc/ha.d/authkeys root@172.20.16.211:/etc/ha.d/
  5分别设置各节点/etc/ha.d/authkeys文件权限
  chmod 600 /etc/ha.d/authkeys (文件权限必须设置为600,否则heartbeat不能正常启动)
  #至此安装完毕
  LINUXHEARTBEAT启动和停止
  1 LINUXHEARTBEAT启动
  在两个节点分别运行service heartbeat start,如果能成功启动因该回显:
  # service heartbeat start
  Starting High-Availability services:
  [ OK ]
  2LINUXHEARTBEAT停止
  在两个节点分别运行service heartbeat stop,如果能成功停止应回显:
  # service heartbeat stop
  Stopping High-Availability services:
  [ OK ]
  拓扑图:
http://111222333.blog.运维网.com/attachment/201210/12/4628697_1350051466GgoI.png
  HA-heartbeat-1:
http://111222333.blog.运维网.com/attachment/201210/11/4628697_1349945736NOtx.png
  挂载光盘:
  # mkdir /mnt/cdrom   
# mount /dev/cdrom /mnt/cdrom
  安装ipvsadm:
  # yum install -y ipvsadm
  写条目:
  # ipvsadm -A -t 192.168.10.100:80 -s rr   
# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.2 -g   
# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.3 –g
  保存
  # service ipvsadm save
  # service ipvsadm start   
Clearing the current IPVS table:                              
Applying IPVS configuration:                                  
# service ipvsadm stop   
Clearing the current IPVS table:                           
  安装heartbeat:
  # yum localinstall heartbeat-2.1.4-9.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm –nogpgcheck
  进入目录:
  # cd /usr/share/doc/heartbeat-2.1.4/
  拷贝文件:
  # cp ha.cf /etc/ha.d/
  # cp haresources /etc/ha.d/   
# cp authkeys /etc/ha.d/
  # cp /etc/init.d/ipvsadm /etc/ha.d/resource.d/
  进入/etc/ha.d/目录:
  # cd /etc/ha.d/   
# ll   
total 80   
-rw-r--r-- 1 root root   645 Oct 10 16:12 authkeys   
-rw-r--r-- 1 root root 10539 Oct 10 16:11 ha.cf   
-rwxr-xr-x 1 root root   745 Jul 242009 harc   
-rw-r--r-- 1 root root5905 Oct 10 16:12 haresources   
drwxr-xr-x 2 root root4096 Oct 10 16:10 rc.d   
-rw-r--r-- 1 root root   692 Jul 242009 README.config   
drwxr-xr-x 2 root root4096 Oct 10 16:16 resource.d   
-rw-r--r-- 1 root root7862 Jul 242009 shellfuncs
  编辑修改ha.cf文件:
  # vim ha.cf
  91 #bcasteth0            # Linux   
92 #bcasteth1 eth2       # Linux   
93 #bcastle0             # Solaris   
94 bcast   eth1            # Solaris
  212 #node   ken3   
213 #node   kathy   
214 node    node1.a.com   
215 node    node2.a.com
  生成通过md5加密的随机数:
  # dd if=/dev/random bs=512 count=1 |openssl md5   
0+1 records in   
0+1 records out   
128 bytes (128 B) copied, 0.000127271 seconds, 1.0 MB/s   
bbdf2b9865f7d1ed1a8a781369e0e7ba   
#
  编辑修改authkeys文件:
  # vim authkeys
  23 #auth 1   
24 #1 crc   
25 #2 sha1 HI!   
26 #3 md5 Hello!   
27 auth 3   
28 3 md5 bbdf2b9865f7d1ed1a8a781369e0e7ba    //md5加密数
  # chmod 600 authkeys
  编辑修改haresources文件:
  # vim haresources
  45 node1.a.com 192.168.10.100/24/eth0/192.168.10.255ipvsadm
  HA-heartbeat-2:
http://111222333.blog.运维网.com/attachment/201210/11/4628697_1349945736NOtx.png
  挂载光盘:
  # mkdir /mnt/cdrom   
# mount /dev/cdrom /mnt/cdrom
  安装ipvsadm:
  # yum install -y ipvsadm
  写条目:
  # ipvsadm -A -t 192.168.10.100:80 -s rr   
# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.2 -g   
# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.3 –g
  保存
  # service ipvsadm save
  # service ipvsadm start   
Clearing the current IPVS table:                              
Applying IPVS configuration:                                  
# service ipvsadm stop   
Clearing the current IPVS table:                           
  安装heartbeat:
  # yum localinstall heartbeat-2.1.4-9.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm –nogpgcheck
  进入目录:
  # cd /usr/share/doc/heartbeat-2.1.4/
  拷贝文件:
  # cp ha.cf /etc/ha.d/
  # cp haresources /etc/ha.d/   
# cp authkeys /etc/ha.d/
  # cp /etc/init.d/ipvsadm /etc/ha.d/resource.d/
  进入/etc/ha.d/目录:
  # cd /etc/ha.d/   
# ll   
total 80   
-rw-r--r-- 1 root root   645 Oct 10 16:12 authkeys   
-rw-r--r-- 1 root root 10539 Oct 10 16:11 ha.cf   
-rwxr-xr-x 1 root root   745 Jul 242009 harc   
-rw-r--r-- 1 root root5905 Oct 10 16:12 haresources   
drwxr-xr-x 2 root root4096 Oct 10 16:10 rc.d   
-rw-r--r-- 1 root root   692 Jul 242009 README.config   
drwxr-xr-x 2 root root4096 Oct 10 16:16 resource.d   
-rw-r--r-- 1 root root7862 Jul 242009 shellfuncs
  编辑修改ha.cf文件:
  # vim ha.cf
  91 #bcasteth0            # Linux   
92 #bcasteth1 eth2       # Linux   
93 #bcastle0             # Solaris   
94 bcast   eth1            # Solaris
  212 #node   ken3   
213 #node   kathy   
214 node    node1.a.com   
215 node    node2.a.com
  生成通过md5加密的随机数:
  # dd if=/dev/random bs=512 count=1 |openssl md5   
0+1 records in   
0+1 records out   
128 bytes (128 B) copied, 0.000127271 seconds, 1.0 MB/s   
bbdf2b9865f7d1ed1a8a781369e0e7ba   
#
  编辑修改authkeys文件:
  # vim authkeys
  23 #auth 1   
24 #1 crc   
25 #2 sha1 HI!   
26 #3 md5 Hello!   
27 auth 3   
28 3 md5 bbdf2b9865f7d1ed1a8a781369e0e7ba    //md5加密数
  # chmod 600 authkeys
  编辑修改haresources文件:
  # vim haresources
  45 node1.a.com 192.168.10.100/24/eth0/192.168.10.255ipvsadm
  web服务器上的配置:
  web1服务器上的配置:
  Ip信息:
http://111222333.blog.运维网.com/attachment/201210/12/4628697_1350051470QQxV.jpg
  安装web:
  # yum install httpd   //安装web服务器
  # cd /var/www/html/
  # vim index.html
  其内容为:
  web1(192.168.10.2)
  # service httpd restart   //重启web服务
  添加下列条目到/etc/sysctl.conf
  # echo "net.ipv4.conf.eth0.arp_announce = 2" >>/etc/sysctl.conf   
# echo "net.ipv4.conf.eth0.arp_ignore = 1" >>/etc/sysctl.conf
  # sysctl –p                     //使其生效
  # route add -host 192.168.10.100 dev lo:0//保证用vip还回
  web2服务器上的配置:
  Ip信息:
http://111222333.blog.运维网.com/attachment/201210/12/4628697_1350051470NQ3Z.jpg
  安装web:
  # yum install httpd   //安装web服务器
  # cd /var/www/html/
  # vim index.html
  其内容为:
  web2(192.168.10.3)
  # service httpd restart   //重启web服务
  添加下列条目到/etc/sysctl.conf
  # echo "net.ipv4.conf.eth0.arp_announce = 2" >>/etc/sysctl.conf   
# echo "net.ipv4.conf.eth0.arp_ignore = 1" >>/etc/sysctl.conf
  # sysctl –p                     //使其生效
  # route add -host 192.168.10.100 dev lo:0//保证用vip还回
  测试:
  用pc访问:
http://111222333.blog.运维网.com/attachment/201210/11/4628697_1349945812divy.png
  刷新页面后:
http://111222333.blog.运维网.com/attachment/201210/12/4628697_1350051471Bbif.png



页: [1]
查看完整版本: Linux下VS/DR+heartbeat实现高可用负载均衡服务