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

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

[复制链接]

尚未签到

发表于 2019-1-4 12:29:28 | 显示全部楼层 |阅读模式
  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不能正常启动)
  #至此安装完毕
  拓扑图

  至于web的配置这里就不多做介绍。上一篇博客里有详细的配置
  这里直接说heartbeat的配置
1.节点的名字必须跟uname -n 的名字相同,而且两个主机必须能通过主机名来访问。尽量不通过DNS 来访问。时钟时间保持一样。
2.双方的通信要必须通过SSL 的无障碍通信机制
3.双节点之间可以通过某个IP 来提供连接,但是这只是通信Ip,我们需要VIP 来对外提供服务。
4.我采用虚拟机的方式实现配置,操作系统使用rhel5.4,x86 平台
5.两个节点主机IP 分别为192.168.145.10(node1.a.com),以及
192.168.145.20(node2.a.com)
6.集群服务为lvs 的ipvsadm 服务
7.提供Web 服务的地址(VIP)为192.168.145.101
  1.准备工作
[root@localhost ~]# vim /etc/sysconfig/network
HOSTNAME=node1.a.com
[root@localhost ~]# hostname node1.a.com
重新登录
[root@localhost ~]# vim /etc/sysconfig/network
HOSTNAME=node2.a.com
[root@localhost ~]# hostname node2.a.com
我们首先要保证两节点之间时间相差不应该超过1 秒
[root@node1 ~]# hwclock -s
[root@node2 ~]# hwclock -s
分别在两个节点上设置
# vim /etc/hosts
192.168.145.10 node1.a.com node1
192.168.145.20 node2.a.com node2
生成密钥,确保通信正常
node1 节点
[root@node1 ~]# ssh-keygen -t rsa
[root@node1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub node2
node2 节点
[root@node2 ~]# ssh-keygen -t rsa
[root@node2 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub node1
由于需要用到软件的依赖,这里配置yum,在node1 上
# vim /etc/yum.repos.d/rhel-debuginfo.repo
1 [rhel-server]
2 name=Red Hat Enterprise Linux server
3 baseurl=file:///mnt/cdrom/Server
4 enabled=1
5 gpgcheck=1
6 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
7 [rhel-cluster]
8 name=Red Hat Enterprise Linux cluster
9 baseurl=file:///mnt/cdrom/Cluster
10 enabled=1
11 gpgcheck=1
12 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
13 [rhel-vt]
14 name=Red Hat Enterprise Linux vt
15 baseurl=file:///mnt/cdrom/VT
16 enabled=1
17 gpgcheck=1
18 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
- 3 -
19 [rhel-clusterstorage]
20 name=Red Hat Enterprise Linux clusterstorage
21 baseurl=file:///mnt/cdrom/ClusterStorage
22 enabled=1
23 gpgcheck=1
24 gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release
[root@node2 ~]# scp node1:/etc/yum.repos.d/rhel-debuginfo.repo /etc/yum.repos.d/
node1.a.com
挂载光盘:
  [root@node1 ~]# mkdir /mnt/cdrom
[root@node1 ~]# mount /dev/cdrom /mnt/cdrom
  [root@node1 ~]# yum install -y ipvsadm     //安装ipvsadm
添加规则
  访问192.168.145.101的80端口时采用rr调度算法,并且发送给Web服务器群集节点
  [root@node1 ~]# ipvsadm -A -t 192.168.145.101:80 -s rr
[root@node1 ~]# ipvsadm -a -t 192.168.145.101:80 -r 192.168.145.100 -g
[root@node1 ~]# ipvsadm -a -t 192.168.145.101:80 -r 192.168.145.200 -g
  [root@node1 ~]# service ipvsadm save //保存规则
安装heartbeat
  [root@node1 ~]# ll
总计 2736
-rw------- 1 root root    1287 08-11 23:13 anaconda-ks.cfg
drwxr-xr-x 2 root root    4096 08-11 15:20 Desktop
-rw-r--r-- 1 root root 1637238 10-25 18:34 heartbeat-2.1.4-9.el5.i386.rpm
--rw-r--r-- 1 root root  111742 10-25 18:34 heartbeat-ldirectord-2.1.4-9.el5.i386.rpm
-rw-r--r-- 1 root root   92070 10-25 18:34 heartbeat-pils-2.1.4-10.el5.i386.rpm
-rw-r--r-- 1 root root  179199 10-25 18:34 heartbeat-stonith-2.1.4-10.el5.i386.rpm

-rw-r--r-- 1 root root   35369 08-11 23:13 install.log
-rw-r--r-- 1 root root    3995 08-11 23:11 install.log.syslog
-rw-r--r-- 1 root root   56817 10-25 18:34 libnet-1.1.4-3.el5.i386.rpm
-rw-r--r-- 1 root root   92071 10-25 18:34 perl-MailTools-1.77-1.el5.noarch.rpm

  [root@node1 ~]# yum localinstall –y heartbeat-2.1.4-9.el5.i386.rpm heartbeat-ldirectord-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.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 –-nogpgcheck       //不进行签名检测安装
  拷贝相关文件
  [root@node1 ~]# 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 ha.d]# cp /etc/init.d/ipvsadm /etc/ha.d/resource.d/
  [root@node1 ha.d]# vim ha.cf
  91 #bcast  eth0            # Linux
92 #bcast  eth1 eth2       # Linux
93 #bcast  le0             # Solaris
94 #bcast  le1 le2         # Solaris  
95 bcast eth1               //广播接口
  212 #node   ken3
213 #node   kathy
214 node    node1.a.com
215 node    node2.a.com         //指明结点

生成通过md5加密的随机数:
  [root@node1 ha.d]# dd if=/dev/random bs=512 count=1 |openssl md5
0+1 records in
0+1 records out
128 bytes (128 B) copied, 0.000335324 seconds, 382 kB/s
af42fae97f8db1512bfc7eac86da60ea
  编辑修改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 af42fae97f8db1512bfc7eac86da60ea      //md5加密数
  [root@node1 ha.d]# chmod 600 authkeys
  编辑修改haresources文件:
  [root@node1 ha.d]# vim haresources
  45 node1.a.com 192.168.145.101/24/eth0/192.168.145.255 ipvsadm
node2.a.com上
  [root@node2 ~]# mkdir /mnt/cdrom
  [root@node2 ~]# mount /dev/cdrom /mnt/cdrom
  [root@node2 ~]# yum install -y ipvsadm //安装ipvsadm
  [root@node2 ~]# scp node1:/root/*.rpm ./
heartbeat-2.1.4-9.el5.i386.rpm                                     100% 1599KB   1.6MB/s   00:00   
heartbeat-ldirectord-2.1.4-9.el5.i386.rpm                          100%  109KB 109.1KB/s   00:00   
heartbeat-pils-2.1.4-10.el5.i386.rpm                               100%   90KB  89.9KB/s   00:01   
heartbeat-stonith-2.1.4-10.el5.i386.rpm                            100%  175KB 175.0KB/s   00:00   
libnet-1.1.4-3.el5.i386.rpm                                        100%   55KB  55.5KB/s   00:00   
perl-MailTools-1.77-1.el5.noarch.rpm                               100%   90KB  89.9KB/s   00:00
  [root@node2 ~]# yum localinstall -y *.rpm --nogpgcheck
  [root@node2 ~]# scp node1:/etc/ha.d/ha.cf /etc/ha.d/
ha.cf                                                              100%   10KB  10.3KB/s   00:00   
[root@node2 ~]# scp node1:/etc/ha.d/haresources /etc/ha.d/
haresources                                                        100% 5963     5.8KB/s   00:00   
[root@node2 ~]# scp node1:/etc/ha.d/authkeys /etc/ha.d/
authkeys                                                           100%  691     0.7KB/s   00:00   
[root@node2 ~]# scp node1:/etc/init.d/ipvsadm /etc/ha.d/resource.d/
ipvsadm                                                            100% 2618     2.6KB/s   00:00
  [root@node2 ~]# scp node1:/etc/sysconfig/ipvsadm /etc/sysconfig/ipvsadm
ipvsadm                                                            100%  141     0.1KB/s   00:00   

启动heartbeat
  [root@node1 ha.d]# service heartbeat start
Starting High-Availability services:
2012/10/25_19:41:45 INFO:  Resource is stopped
                                                           [确定]
  [root@node2 ~]# service heartbeat start
Starting High-Availability services:
2012/10/25_19:42:37 INFO:  Resource is stopped
                                                           [确定]
  可以看到ip资源在node1.a.com上
  [root@node1 ha.d]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:C2:B2:80  
          inet addr:192.168.145.10  Bcast:192.168.145.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fec2:b280/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8750 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5788 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:6124592 (5.8 MiB)  TX bytes:2939570 (2.8 MiB)
          Interrupt:67 Base address:0x2000
  eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:C2:B2:80  
          inet addr:192.168.145.101  Bcast:192.168.145.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:67 Base address:0x2000

  eth1      Link encap:Ethernet  HWaddr 00:0C:29:C2:B2:8A  
          inet addr:192.168.10.1  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fec2:b28a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:97 errors:0 dropped:0 overruns:0 frame:0
          TX packets:186 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:25706 (25.1 KiB)  TX bytes:45553 (44.4 KiB)
          Interrupt:67 Base address:0x2080
  lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:99 errors:0 dropped:0 overruns:0 frame:0
          TX packets:99 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:9065 (8.8 KiB)  TX bytes:9065 (8.8 KiB)
  测试

  刷新网页

  当node1节点停止服务时
  [root@node1 ha.d]# cd /usr/lib/heartbeat/
  [root@node1 heartbeat]# ./hb_standby
2012/10/25_19:53:46 Going standby [all].
  可以看到node2节点上的IP资源
  [root@node2 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:F1:76:1E  
          inet addr:192.168.145.20  Bcast:192.168.145.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fef1:761e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4290 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2402 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2602734 (2.4 MiB)  TX bytes:311906 (304.5 KiB)
          Interrupt:67 Base address:0x2000
  eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:F1:76:1E  
          inet addr:192.168.145.101  Bcast:192.168.145.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:67 Base address:0x2000
  eth1      Link encap:Ethernet  HWaddr 00:0C:29:F1:76:28  
          inet addr:192.168.10.2  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fef1:7628/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:906 errors:0 dropped:0 overruns:0 frame:0
          TX packets:885 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:226068 (220.7 KiB)  TX bytes:217983 (212.8 KiB)
          Interrupt:67 Base address:0x2080
  lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:135 errors:0 dropped:0 overruns:0 frame:0
          TX packets:135 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:11459 (11.1 KiB)  TX bytes:11459 (11.1 KiB)
  [root@node2 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.145.101:80 rr
  -> 192.168.145.100:80           Route   1      0          0         
  -> 192.168.145.200:80           Route   1      0          0
  从上述实验可以看到通过heartbeat实现director的高可用性。即使其中一个停止服务。也可以访问网站。




运维网声明 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-659320-1-1.html 上篇帖子: Heartbeat+Ldirectord+LVS+FreeNas实现HA和LB群集 下篇帖子: heartbeat+ldirectory实现LVS
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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