2019独角兽企业重金招聘Python工程师标准>>>

LVS+Heartbeat+Ldirectord

集群技术主要分为三大类:

高可用性(High Available Cluster),例:Linux-HA

负载均衡(Load balancing Cluster),例:LVS、MOSIX

高性能计算(High Performance Computing),例:Beowulf

我们这里使用 RHEL6.5,LVS,Linux-HA,Ldirectord,构造一个高可用的负载均衡集群系统。

•Load Balancer(负载均衡器)

Load Balancer 是整个集群系统的前端,负责把客户请求转发到 Real Server 上。

Backup 是备份 Load Balancer,当 Load Balancer 不可用时接替它,成为实际的 Load Balancer。

Load Balancer 通过 Ldirectord 监测各 Real Server 的健康状况。在 Real Server 不可用时把它从集群中剔除,恢复时重新加入。

•Server Array(服务器群)

Server Array 是一组运行实际应用服务的机器,比如 WEB, Mail, FTP, DNS,Media 等等。

在实际应用中,Load Balancer 和 Backup 也可以兼任 Real Server 的角色。

•Shared Storage(共享存储)

Shared Storage 为所有 Real Server 提供共享存储空间和一致的数据内容。

系统环境: RHEL6.5x86_64 small install selinux and iptables disabled

Virtual IP             192.168.2.188

192.168.2.162    server62.exampl.com(主节点—调度器)

192.168.2.163    server63.example.com(备用节点)

192.168.2.52      desktop52.example.com(real server)

192.168.2.53      desktop53.example.com(real server)

编辑/etc/hoststs做以上解析

1.HeartBeat

HeartBeat 是 Linux-HA 的高可用性集群软件,它的主要作用是:

•    安装在 Load Balancer 和 Backup 上,运行于 active/standby 模式。

当 Load Balancer 失效时,Backup 自动激活,成为实际的 Load Balancer。

•    切换到 active 模式时,按顺序启动 Virtual IP、IPVS 和 Ldirectord。

切换到 standby 模式时,按顺序关闭 Ldirectord、IPVS 和 Virtual IP。

节点(server62,server63)操作:

1.软件安装:

下载heartbeat-3.0.4-2.el6.x86_64.rpm

heartbeat-libs-3.0.4-2.el6.x86_64.rpm

heartbeat-devel-3.0.4-2.el6.x86_64.rpm

ldirectord-3.9.2-1.2.x86_64.rpm

#yum localinstall *

2.配置文件的设置:

#cd /usr/share/doc/heartbeat-3.0.4/

#cp ha.cf haresources authkeys /etc/ha.d/

#cd /etc/ha.d/

#vim /etc/ha.d/ha.cf(主配置文件)

debugfile /var/log/ha-debug

调试日志文件文件,取默认值

logfile /var/log/ha-log

系统运行日志文件,取默认值

logfacility local0

日志等级,取默认值

keepalive 2

心跳频率,自己设定。1:表示 1 秒;200ms:表示 200 毫秒

deadtime 30

节点死亡时间阀值,就是从节点在过了 30 后还没有收到心跳就认为主节点死亡,自己设定

warntime 10

发出警告时间,自己设定

initdead 120

守护进程首次启动后应该等待 120 秒后再启动主服务器上的资源

udpport 694

心跳信息传递的 udp 端口,使用端口 694 进行 bcast 和 ucast 通信,取默认值(在试验过程中自己设定,以免与其他人造成冲突)

#baud 19200

串口波特率,与 serial 一起使用。

#serial /dev/ttyS0

采用串口来传递心跳信息。

bcast eth1

采用 udp 广播播来通知心跳

#ucast eth1 10.0.0.3

采用网卡 eth1 的 udp 单播来通知心跳,eth1 的 IP

#mcast eth0 225.0.0.1 694 1 0

采用 udp 多播播来通知心跳

auto_failback on

当主节点恢复后,是否自动切回

#stonith baytech /etc/ha.d/conf/stonith.baytech

stonith 用来保证共享存储环境中的数据完整性

watchdog /dev/watchdog

watchdog 能让系统在出现故障 1 分钟后重启该机器,这个功能可以帮助服务器在确实停止心跳后能够重新恢复心跳。

如果使用该特性,修改系统中/etc/modprob.d, 编辑softdog.conf添加如下行

options softdog

这样在系统启动的时候,在内核中装入"softdog"内核模块,用来生成实际的设备文件

/dev/watchdog

node server62.example.com

主节点名称,与 uname –n 保持一致。排在第一的默认为主节点,所以不要搞措顺序

node server63.example.com

副节点名称,与 uname –n 保持一致

ping 192.168.2.251(这是该局域网的网关)

respawn hacluster /usr/lib64/heartbeat/ipfail

apiauth ipfail gid=haclient uid=hacluster

默认 heartbeat 并不检测除本身之外的其他任何服务,也不检测网络状况。所以当网络中断时,并不会进行 Load Balancer 和 Backup 之间的切换。可以通过 ipfail 插件,设置'ping nodes'来解决这一问题,但不能使用一个集群节点作为ping 的节点。

#vim authkeys (认证文件,文件的权限必须是 600)

auth 1

1 crc

#2 sha1 HI!

#3 md5 Hello!

#chmod 600 authkeys

#modprobe softdog(自动生成/dev/watchdog)

#ll /dev/watchdog

#modinfo softdog

# cd /etc/ha.d/

# vim haresources (资源文件)

在最后加入

server62.example.com IPaddr::192.168.2.188/24/eth0:0 httpd

这个文件中定义了实现集群所需的各个软件的启动脚本,这些脚本必须放在/etc/init.d 或者/etc/ha.d/resource.d 目录里 IPaddr 的作用是启动 Virutal IP,它是 HeartBeart 自带的一个脚本;httpd 是 apache 服务的启动脚本。

#yum install httpd

#ll /etc/init.d/httpd

# service httpd start

#/etc/init.d/heartbeat start

#ifconfig

#tail /var/log/ha-log(查看日志文件)

#cd /var/www/html/

# echo `hostname` > index.html

分别查看日志,是否有报错,服务正常的话 server62 上多了个 eth0:0 接口,若没有出现,请等待一会,再使用 ifconfig 查看,若还是没有 eth0:0 接口出现,检查配置文件是否正确!若停止server62 上的 heartbeat 服务,则server63 会接管,并产生一个 eth0:0 接口!

3.测试:

web访问192.168.2.188

这时会显示server62的hostname,关闭server62的heartbeat服务,再刷新页面,server63的heartbeat服务就会自动接管,显示server63的hostname。

2.lvs(linux virtual server)

IPVS IPVS是LVS集群系统的核心软件,它的主要作用是: • 安装在Load Balancer上,把发往Virtual IP的请求转发到Real Server 上。

IPVS的负载均衡机制有三种:

• Virtual Server via NAT (VS/NAT)

• Virtual Server via IP Tunneling (VS/TUN)

• Virtual Server via Direct Routing (VS/DR)

IPVS的负载调度算法有十种:

• 轮叫(Round Robin )

• 加权轮叫(Weighted Round Robin )

• 最少链接(Least Connections )

• 加权最少链接(Weighted Least Connections )

• 基于局部性的最少链接(Locality-Based Least Connections )

• 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication )

• 目标地址散列(Destination Hashing  )

• 源地址散列(Source Hashing )

• 最短期望延迟(Shortest Expected Delay)

• 无须队列等待(Never Queue )

本次实现基于DR模式的LVS的安装配置

VS/DR利用大多数internet服务的非对称特点,负载均衡器只负责调度,而服务器直接将响应返回给客户,可以极大程度提高整个集群系统的吞吐量。

主节点(server62)

1.ipvsadm软件安装

#yum install ipvsadm

2.LVS配置

#ipvsadm -A -t 192.168.2.188:80 -s rr    ##使用ipvsadm安装LVS服务,并定义调度算法为rr

#ipvsadm -l(查看是否存在转发列表)

#ipvsadm -C    ##清空ipvs转发表

#ipvsadm -a -t 192.168.2.188:80 -r 192.168.2.52:80 -g    ##添加第一台realserver

#ipvsadm -a -t 192.168.2.188:80 -r 192.168.2.53:80 -g    ##添加第二台realserver

#service ipvsadm save

#vim /etc/sysctl.conf

net.ipv4.ip_forward = 1    ##打开内核转发功能

#sysctl -p

#service httpd stop(将访问交于realserver:desktop52,desktop53)

3.Apache服务搭建

在realserver(desktop52和desktop53)都进行如下操作

#yum install -y httpd

#cd /var/www/html/

#echo `hostname` >  index.html

#service httpd restart

4.真实服务器设置

在realserver(desktop52和desktop53)都进行如下操作

#yum install -y arptables_jf

#ifconfig eth0:0 192.168.2.188 netmask 255.255.255.255 up

#arptables -A IN -d 192.168.2.188 -j DROP

#arptables -A OUT -s 192.168.2.188 -j mangle --mangle-ip-s 192.168.2.52 (desktop53上是arptables -A OUT -s 192.168.2.188 -j mangle --mangle-ip-s 192.168.2.53)

#service arptables_jf save

这会导致真实服器忽略所有针对虚拟 IP 位址的 ARP 請求,并改变任何向外的 ARP 回应,把原先包含虚拟 IP 的 ARP回应改为真实服务器的 IP。唯一应该要回应任何 VIP 的 ARP 请求的节点,為目前正在启用中的 LVS节点。

做完以上配置在主服务器上查看是否添加成功(有以下显示就说明已添加成功)

#ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.2.188:http rr
  -> 192.168.2.52:http            Route   1      0          0         
  -> 192.168.2.53:http            Route   1      0          0

realserver端也有一个虚拟网卡

~~~

eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:BC:BB:E6  
              inet addr:192.168.2.188  Bcast:192.168.2.188  Mask:255.255.255.255
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

~~~

5.LVS测试:

通过web访问192.168.2.188就会实现轮转调度,刷新页面,显示是desktop52.example.com和desktop52.example.com

3.ldirectord    (lvs和heartbeat的整合)

Ldirectord的作用是:

• 监测Real Server,当Real Server失效时,把它从Load Balancer列表中删除,恢复时重新添加。

节点操作:

1.软件安装

下载安装包

ldirectord-3.9.2-1.2.x86_64.rpm

yum localinstall *

#cp /usr/share/doc/packages/ldirectord/ldirectord.cf /etc/ha.d

# cd /etc/ha.d

2.配置文件设置

#vim ldirectord.cf

# Sample for an http virtual service
virtual=192.168.2.188:80
        real=192.168.2.52:80 gate
        real=192.168.2.53:80 gate
        fallback=127.0.0.1:80 gate
        service=http
        scheduler=rr
        #persistent=600
        #netmask=255.255.255.255
        protocol=tcp
        checktype=negotiate
        checkport=80
        request="index.html"
#       receive="Test Page"            检测Test Page这个页面,假如该页面不存在就认为该主机是down的,就不再连接

#       virtualhost=www.x.y.z            虚拟主机

#ll ldirectord.cf

#ipvsadm -C

#ipvsadm -L

#vim haresources

server62.example.com IPaddr::192.168.2.188/24/eth0:0 httpd ldirectord

#ldirectord 的作用是启动 ldirectord 监控程序,它会使 ldirectord.cf 中定义的 lvs 生效,并监听其健康状态

3.服务配置:

#ifconfig

#ifconfig eth0:0 down

#yum install perl-IO-Socket-INET6

#/etc/init.d/ldirectord start

#service httpd stop

#/etc/init.d/heartbeat reload

4.真实服务器配置

#chkconfig httpd on

#chkconfig arptables_jf on

5.测试:

1).访问虚拟ip查看能否访问到两台realserver节点的httpd服务。刷新页面显示不同内容,说明实现了轮转循环。

2).停掉负载主节点的heartbeat服务,备用节点自动接管任务。当两个节点的heartbeat都停掉时,就会转到本地。

3).交替stop掉或者全部stop掉两台realserver的httpd服务,查看转发列表的变化。

测试方法主要还有以下几种:

1). 将主HA的heartbeat服务关闭,或者关闭主HA机器,在备HA节点查看IP地址,LVS列表是否正常。通过IE访问测试访址是否正常。

2). 由于设置的回切,当主HA节点恢复后,看是否正常回切。

3). 关闭其中一个real节点的应用(即hppd服务),查看LVS列表是否将其real节点清除。恢复real节点应用后,查看LVS列表,是否被添加进来

4.维护:

日志文件有/var/log/messages;/var/log/ha-log;/var/log/ldirectord.log,查看以上文件中的相关信息,做出相应的调整。

--leeypp@gmail.com

转载于:https://my.oschina.net/leeypp1/blog/294805

LVS+Heartbeat+Ldirectord相关推荐

  1. LVS+Heartbeat+Ipvsadm+Ldirectord安装(四)

    1      开始配置lvs 主调度服务器<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:offic ...

  2. LVS+Heartbeat+Ipvsadm+Ldirectord安装 (一)

    1      LVS介绍<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" / ...

  3. LVS的两种实现方法(heartbeat与KeepAlived)

    总拓扑图 两种实现方式: 实验一. LVS+heartbeat+ldirectord实现集群负载: 1.在主Director Server上和备用Director Server上分别安装heartbe ...

  4. 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群

    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...

  5. (heartbeat与KeepAlived)

    总拓扑图 两种实现方式: 实验一. LVS+heartbeat+ldirectord实现集群负载: 1.在主Director Server上和备用Director Server上分别安装heartbe ...

  6. haproxy,lvs keepalived || heartbeat,nginx对比

    VS的特点是:     1.抗负载能力强.是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;     2.配置性比较低,这是一个缺点也是一个优点,因为没 ...

  7. Linux 高可用(HA)集群之keepalived+lvs

    一:前言 Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP);Keepalived的目的是模拟路由器的 ...

  8. heartbeat原理介绍

    heartbeat原理介绍 HeartBeat运行于备用主机上的Heartbeat可以通过以太网连接检测主服务器的运行状态,一旦其无法检测到主服务器的"心跳"则自动接管主服务器的资 ...

  9. LVS高可用方案汇总

    High Availability (IT运维专家网|集群架构|性能调优) 欢迎转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明. 更新时间:2009-01-12 链接: [url]h ...

最新文章

  1. 手工接口测试考虑的点
  2. 解决postgresql数据库localhost可以连接,ip连接不了的问题
  3. android input 点击事件失效,在textinputedittext android上不会触发onclick事件
  4. 深入推荐引擎相关算法 - 聚类
  5. 妙笔生花:一个易用、高效的文本生成开源库
  6. 引发了未经处理的异常:读取访问权限冲突_从零开始学Python:23课-文件读写和异常处理
  7. 2017乌鲁木齐ICPC: I. A Possible Tree(带权并查集)
  8. 数据结构10——强连通
  9. 用Javascript读取CheckBox数组的值
  10. 中国电信物联网平台物理模型创建
  11. Contest3115 - 2021级新生个人训练赛第23场_10247 Problem C 爱好数学的国王
  12. 两种方法解决Undefined symbol SystemInit问题
  13. 游戏支付接口平台如何选择
  14. 国内CDN的排名情况
  15. 计算机文化基础试题每日一练15,【每日一练】2018教师[资格考编]笔试备考练习(9.6)...
  16. HTTP和MQTT协议实践
  17. 数据科学之 如何找到指标的最 佳分裂点的几个想法
  18. h5页面中android与ios返回上一级并强制刷新的方式
  19. HDUOJ 1069 Monkey and Banana
  20. 扫雷计算机教案,三年级上信息技术教案-扫雷大赛“鼠标的使用”清华版

热门文章

  1. scrum 11.28
  2. 【Linux】gcc + gdb 安装教程
  3. 如何进行手机web远程调试——chrome beta
  4. 原型模式(Prototype )
  5. 基于浏览器的开源“管理+开发”工具,Pivotal MySQL*Web正式上线!
  6. Matlab - 文件目录路径操作
  7. 【python】-- 类的继承(新式类/经典类)、多态
  8. 《Cisco防火墙》一8.7 通过NAT规则定义连接限制
  9. XmlDocument,XDocument相互转换
  10. bootstrap3 - 分页