设为首页 收藏本站
查看: 1241|回复: 0

[经验分享] Linux下VS/DR+heartbeat实现高可用负载均衡服务

[复制链接]

尚未签到

发表于 2019-1-7 13:38:36 | 显示全部楼层 |阅读模式
  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,如果能成功启动因该回显:
  [root@ARCHITECT ~]# service heartbeat start
  Starting High-Availability services:
  [ OK ]
    2  LINUXHEARTBEAT停止
  在两个节点分别运行service heartbeat stop,如果能成功停止应回显:
  [root@ARCHITECT ~]# service heartbeat stop
  Stopping High-Availability services:
  [ OK ]
  拓扑图:

  HA-heartbeat-1:

  挂载光盘:
  [root@node1 ~]# mkdir /mnt/cdrom   
[root@node1 ~]# mount /dev/cdrom /mnt/cdrom
  安装ipvsadm:
  [root@node1 heartbeat-2.1.4]# yum install -y ipvsadm
  写条目:
  [root@node1 ~]# ipvsadm -A -t 192.168.10.100:80 -s rr   
[root@node1 ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.2 -g     
[root@node1 ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.3 –g
  保存
  [root@node1 ~]# service ipvsadm save
  [root@node1 ha.d]# service ipvsadm start   
Clearing the current IPVS table:                           [  OK  ]     
Applying IPVS configuration:                               [  OK  ]     
[root@node1 ha.d]# service ipvsadm stop     
Clearing the current IPVS table:                           [  OK  ]
  安装heartbeat:
  [root@localhost ~]# 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
  进入目录:
  [root@node1 ha.d]# cd /usr/share/doc/heartbeat-2.1.4/
  拷贝文件:
  [root@node1 heartbeat-2.1.4]# cp ha.cf /etc/ha.d/
  [root@node1 heartbeat-2.1.4]# cp haresources /etc/ha.d/   
[root@node1 heartbeat-2.1.4]# cp authkeys /etc/ha.d/
  [root@node1 heartbeat-2.1.4]# cp /etc/init.d/ipvsadm /etc/ha.d/resource.d/
  进入/etc/ha.d/目录:
  [root@node1 heartbeat-2.1.4]# cd /etc/ha.d/   
[root@node1 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 24  2009 harc     
-rw-r--r-- 1 root root  5905 Oct 10 16:12 haresources     
drwxr-xr-x 2 root root  4096 Oct 10 16:10 rc.d     
-rw-r--r-- 1 root root   692 Jul 24  2009 README.config     
drwxr-xr-x 2 root root  4096 Oct 10 16:16 resource.d     
-rw-r--r-- 1 root root  7862 Jul 24  2009 shellfuncs
  编辑修改ha.cf文件:
  [root@node1 ha.d]# vim ha.cf
  91 #bcast  eth0            # Linux   
92 #bcast  eth1 eth2       # Linux     
93 #bcast  le0             # Solaris     
94 bcast   eth1            # Solaris
  212 #node   ken3   
213 #node   kathy     
214 node    node1.a.com     
215 node    node2.a.com
  生成通过md5加密的随机数:
  [root@node1 ~]# 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     
[root@node1 ~]#
  编辑修改authkeys文件:
  [root@node1 ha.d]# vim authkeys
  23 #auth 1   
24 #1 crc     
25 #2 sha1 HI!     
26 #3 md5 Hello!     
27 auth 3     
28 3 md5 bbdf2b9865f7d1ed1a8a781369e0e7ba    //md5加密数
  [root@node1 ha.d]# chmod 600 authkeys
  编辑修改haresources文件:
  [root@node1 ha.d]# vim haresources
  45 node1.a.com 192.168.10.100/24/eth0/192.168.10.255  ipvsadm
  HA-heartbeat-2:

  挂载光盘:
  [root@node1 ~]# mkdir /mnt/cdrom   
[root@node1 ~]# mount /dev/cdrom /mnt/cdrom
  安装ipvsadm:
  [root@node1 heartbeat-2.1.4]# yum install -y ipvsadm
  写条目:
  [root@node1 ~]# ipvsadm -A -t 192.168.10.100:80 -s rr   
[root@node1 ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.2 -g     
[root@node1 ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.3 –g
  保存
  [root@node1 ~]# service ipvsadm save
  [root@node1 ha.d]# service ipvsadm start   
Clearing the current IPVS table:                           [  OK  ]     
Applying IPVS configuration:                               [  OK  ]     
[root@node1 ha.d]# service ipvsadm stop     
Clearing the current IPVS table:                           [  OK  ]
  安装heartbeat:
  [root@localhost ~]# 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
  进入目录:
  [root@node1 ha.d]# cd /usr/share/doc/heartbeat-2.1.4/
  拷贝文件:
  [root@node1 heartbeat-2.1.4]# cp ha.cf /etc/ha.d/
  [root@node1 heartbeat-2.1.4]# cp haresources /etc/ha.d/   
[root@node1 heartbeat-2.1.4]# cp authkeys /etc/ha.d/
  [root@node1 heartbeat-2.1.4]# cp /etc/init.d/ipvsadm /etc/ha.d/resource.d/
  进入/etc/ha.d/目录:
  [root@node1 heartbeat-2.1.4]# cd /etc/ha.d/   
[root@node1 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 24  2009 harc     
-rw-r--r-- 1 root root  5905 Oct 10 16:12 haresources     
drwxr-xr-x 2 root root  4096 Oct 10 16:10 rc.d     
-rw-r--r-- 1 root root   692 Jul 24  2009 README.config     
drwxr-xr-x 2 root root  4096 Oct 10 16:16 resource.d     
-rw-r--r-- 1 root root  7862 Jul 24  2009 shellfuncs
  编辑修改ha.cf文件:
  [root@node1 ha.d]# vim ha.cf
  91 #bcast  eth0            # Linux   
92 #bcast  eth1 eth2       # Linux     
93 #bcast  le0             # Solaris     
94 bcast   eth1            # Solaris
  212 #node   ken3   
213 #node   kathy     
214 node    node1.a.com     
215 node    node2.a.com
  生成通过md5加密的随机数:
  [root@node1 ~]# 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     
[root@node1 ~]#
  编辑修改authkeys文件:
  [root@node1 ha.d]# vim authkeys
  23 #auth 1   
24 #1 crc     
25 #2 sha1 HI!     
26 #3 md5 Hello!     
27 auth 3     
28 3 md5 bbdf2b9865f7d1ed1a8a781369e0e7ba    //md5加密数
  [root@node1 ha.d]# chmod 600 authkeys
  编辑修改haresources文件:
  [root@node1 ha.d]# vim haresources
  45 node1.a.com 192.168.10.100/24/eth0/192.168.10.255  ipvsadm
  web服务器上的配置:
  web1服务器上的配置:
  Ip信息:

  安装web:
  [root@localhost ~]# yum install httpd   //安装web服务器
  [root@localhost ~]# cd /var/www/html/
  [root@localhost html]# vim index.html
  其内容为:
  web1(192.168.10.2)
  [root@localhost html]# service httpd restart   //重启web服务
  添加下列条目到/etc/sysctl.conf
  [root@localhost ~]# echo "net.ipv4.conf.eth0.arp_announce = 2" >>/etc/sysctl.conf   
[root@localhost ~]# echo "net.ipv4.conf.eth0.arp_ignore = 1" >>/etc/sysctl.conf
  [root@localhost ~]# sysctl –p                       //使其生效
  [root@localhost ~]# route add -host 192.168.10.100 dev lo:0  //保证用vip还回
  web2服务器上的配置:
  Ip信息:

  安装web:
  [root@localhost ~]# yum install httpd   //安装web服务器
  [root@localhost ~]# cd /var/www/html/
  [root@localhost html]# vim index.html
  其内容为:
  web2(192.168.10.3)
  [root@localhost html]# service httpd restart   //重启web服务
  添加下列条目到/etc/sysctl.conf
  [root@localhost ~]# echo "net.ipv4.conf.eth0.arp_announce = 2" >>/etc/sysctl.conf   
[root@localhost ~]# echo "net.ipv4.conf.eth0.arp_ignore = 1" >>/etc/sysctl.conf
  [root@localhost ~]# sysctl –p                       //使其生效
  [root@localhost ~]# route add -host 192.168.10.100 dev lo:0  //保证用vip还回
  测试:
  用pc访问:

  刷新页面后:





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-660390-1-1.html 上篇帖子: 基于heartbeat v2 crm实现配置基于nfs的mysql HA集群 下篇帖子: heartbeat 配置两台web服务器高可用集群案例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表