lvs+heartbeat-ldirectord实现高可用负载均衡

拓扑:

IPVS规则与heartbeat

ipvs规则不再使用ipvsadm配置,而是依靠heartbeat的包工具ldirectord去生成规则

并且ldirectord有检测后端RS健康状况的机制(利用权重,非常正常剔除(w=0),正常后添加)。

删除之前 heartbeat v2 crm lamp配置的约束和资源

节点分别停止heartbeat:/etc/init.d/heartbeat stop

规划

ipvs-ld节点: 192.168.0.190  node1

ipvs-ld点: 192.168.0.201 node2

RS: 192.168.0.193 node3 ,192.168.0.202 node4

lvs vip 192.168.0.199

ldirectord依赖于自己的配置文件生成ipvs规则,因此,定义集群服务,添加RS都在配置文件中指定,而无需手动执行ipvsadm命令;

ldirectord能对各RS的健康状态做检测,并能实现按需添加或者删除各RS。

1,两个节点安装 heartbeat-ldirectord-2.1.4-12.el6.x86_64.rpm 

[root@node2 heartbeat2]# rpm -ivh heartbeat-ldirectord-2.1.4-12.el6.x86_64.rpm 
error: Failed dependencies:
ipvsadm is needed by heartbeat-ldirectord-2.1.4-12.el6.x86_64
perl(LWP::Debug) is needed by heartbeat-ldirectord-2.1.4-12.el6.x86_64
perl(LWP::UserAgent) is needed by heartbeat-ldirectord-2.1.4-12.el6.x86_64
perl(Mail::Send) is needed by heartbeat-ldirectord-2.1.4-12.el6.x86_64

[root@node2 heartbeat2]#yum install heartbeat-ldirectord-2.1.4-12.el6.x86_64.rpm -y

依赖包如下:

2,LVS,DR模式配置

配置RS

node3 ,node4主机分别同样配置主机:

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

ifconfig eth0:0 192.168.0.199 broadcast 192.168.0.199 netmask 255.255.255.255

sysctl -p

route add -host 192.168.0.199 dev eth0:0

/etc/init.d/httpd start

curl 192.168.0.194

配置DR主机ipvs

ifconfig eth0:0 192.168.0.199 broadcast 192.168.0.199 netmask 255.255.255.255

route add -host 192.168.0.199 dev eth0:0

[root@node1 ~]# ipvsadm -A -t 192.168.0.199:80 -s rr
[root@node1 ~]# ipvsadm -a -t 192.168.0.199:80 -r 192.168.0.202 -g -w 1
[root@node1 ~]# ipvsadm -a -t 192.168.0.199:80 -r 192.168.0.194 -g -w 1

访问测试成功:

3,测试出成功后,删除ipvs规则;

[root@node1 ~]# ipvsadm -C
[root@node1 ~]# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[root@node1 ~]# route del -host 192.168.0.199

[root@node1 ~]# ifconfig eth0:0 down

4,使用ldirectord文件配置规则

cd /usr/share/doc/heartbeat-ldirectord-2.1.4/

cp ldirectord.cf /etc/ha.d/

配置文件说明:

# Global Directives
checktimeout=3  #超时时间间隔
checkinterval=1 #向后端检查的时间,即每1秒检查一次,3秒超时。
#fallback=127.0.0.1:80 #sorry page
autoreload=yes  #自己不用做reload,文件改变后自动装载。
logfile="/var/log/ldirectord.log"       #自己的日志
#logfile="local0"
#emailalert="admin@x.y.z"
#emailalertfreq=3600
#emailalertstatus=all
quiescent=yes

...

以ftp为列说明:

#virtual=192.168.6.240:21    #vip
#       real=192.168.16.3:21 masq    #rs
#       real=192.168.16.5:21 masq    #rs
#       fallback=127.0.0.1:21            #sorry page
#       service=ftp                            #表示用ftp协议检查
#       checkport=21                        #表示检查21号端口,在tcp层
#       scheduler=wlc                        #调度算法
#       scheduler=rr                            #调度算法
#       #persistent=600                #持久连接时间为600秒。注视表示没开启持久连接
#       #netmask=255.255.255.255
#       protocol=tcp                            #集群服务协议类型
#       checktype=negotiate                #协商类型检查,表示下面的登录和密码
#       login="anonymous"                #用anonymous登录
#       passwd="ldirectord@localhost"    #密码
#       request="welcome.msg"            #请求获取到welcome.msg文件
#       receive="test"                            #回答test字符串

以http说明:

virtual=192.168.6.240:80
        real=192.168.6.2:80 gate
        real=192.168.6.3:80 gate
        real=192.168.6.6:80 gate
        fallback=127.0.0.1:80 gate
        service=http
        request="index.html"   #请求哪个页面
        receive="Test Page"        #必须返回哪个字符串,RS才算是正常的
        virtualhost=some.domain.com.au    #对虚拟主机单独检测
        scheduler=rr
        #persistent=600
        #netmask=255.255.255.255
        protocol=tcp
        checktype=negotiate
        checkport=80
        request="index.html"
        receive="Test Page"
        virtualhost=www.x.y.z

常用的检测类型:

checktype = connect|external|negotiate|off|on|ping|checktimeoutN

ip层:connect: syn ,ack就行了

网络层:ping

应用层:negotiate

配置文件修改:

# Sample for an http virtual service

virtual=192.168.0.199:80

real=192.168.0.194:80 gate

real=192.168.0.202:80 gate

fallback=127.0.0.1:80 gate

protocol=tcp

checkport=80

checktype=negotiate

service=http

request=".health.html"

receive="OK"

scheduler=rr

#persistent=600

#netmask=255.255.255.255

将配置文件复制到node2节点

[root@node1 ha.d]# scp ldirectord.cf node2:/etc/ha.d/

两台DR添加sorry page:

vim /var/www/html/index.html

node1 sorry server

两台RS 添加.health.html

vim /var/www/html/.health.html

测试网页都能访问。

5,配置hb_gui crm

定义组ipvs

定义集群ip clusterip

定义 ipvs规则 ipsrules  (使用ldirectord定义)

启动组

6,测试

注意:两个HA-DR应该开机自动启动httpd,sorry page页面展示

sorry server页面,两台RS,httpd都stop,HA-LVS权重Weight 为1

通过设置权重为0来剔除RS。

转载于:https://blog.51cto.com/disheng/1706848

L8.1 lvs+heartbeat-ldirectord实现高可用负载均衡相关推荐

  1. LVS(DR)+keepalived实现高可用负载均衡

    一.lvs+keepalived 1.lvs LVS集群采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将 ...

  2. 利用LVS+Keepalived 实现高性能高可用负载均衡服务器

    作者:NetSeek [url]http://www.linuxtone.org[/url](IT运维专家网|集群架构|性能调优) 欢迎转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明 ...

  3. 使用LVS和Keepalived搭建高可用负载均衡服务器集群

    目录 1.什么是LVS和Keepalived 2.负载均衡服务器集群示例环境搭建及安装配置 2.1.环境网络拓扑结构 2.2.安装ipvsadm软件 2.3.安装keepalived 2.4.配置网络 ...

  4. DNS部署(四)之lvs+keepalived+bind架构高可用负载均衡DNS系统

    1.网络拓扑 2.环境描述 系统描述 IP地址 作用 LB-master 192.168.1.105 主备负载均衡器(同时做web和DNS调度) LB-backup 192.168.1.106 DNS ...

  5. CentOS7下LVS+Keepalived实现高性能高可用负载均衡

    一.规划 1 2 3 4 5 6 7 8  对外VIP:10.10.10.10    对内VIP:192.168.10.10 LVS_MASTER:10.10.10.28(eth0)          ...

  6. ubuntu lvs keepalived mysql_ubuntu下LVS + Keepalived 实现mysql高可用负载均衡实现

    $ sudo vim /etc/keepalived/keepalived.conf global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { ...

  7. LVS+Keepalived实现高可用负载均衡

    本文来说下如何使用LVS+Keepalived 实现高可用负载均衡 文章目录 概述 LVS与Keepalived 相关术语 本文小结 概述 在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的.此时 ...

  8. IPVS-DR+keepalived实现高可用负载均衡集群

    IPVS-DR+keepalived高可用负载均衡集群方案前端的负载调度器采用双机热备方式,Keepalived主要用来监测RealServer的健康状态以及主负载均衡器和备份负载均衡器之间的故障转移 ...

  9. Linux下部署lvs+keepalived实现高可用负载均衡

    lvs+keepalived是什么? keepalived工作原理 keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障. keepalive ...

最新文章

  1. Android 添加菜单项
  2. 1.2 初窥输入输出、控制语句
  3. Linux学习之crontab定时任务
  4. 学习vim 从常用按键开始
  5. SpringBoot配置文件敏感信息加密,springboot配置文件数据库密码加密jasypt
  6. Python基础100题
  7. Pandas 排序之后索引问题
  8. oozie 调度pyspark
  9. Asp.Net异步加载
  10. 鲇鱼效应”也有副作用
  11. Windows socket程序演示
  12. Mac/Win Photoshop CC 2018(V19.0)安装破解激活图文教程(附破解补丁)
  13. 【Vue组件库】最常用的vue组件库
  14. 高性能服务器天梯,2019服务器CPU天梯图 多路CPU性能排名
  15. 国外服务器和网站,国外服务器网站好吗?国外服务器网站和国内有什么区别?...
  16. 睡前做什么有助于睡眠,不妨试试这几个帮助睡眠小妙招
  17. php字符串处理函数大全--有时候我们只需要知道名字。
  18. 小米路由器安装mysql_小米路由器安装和设置方法(图文教程)
  19. hashmap中的key是有序的么_Java中的HashMap,为什么输出竟然是有序的
  20. 双十一大促季,客服资源该如何合理配置

热门文章

  1. python 斐波那契数列
  2. 河南测绘职业学院招生计算机,河南测绘职业学院代码
  3. 学习Kotlin(四)对象与泛型
  4. python的全局变量能暂存数据吗_Python 中的全局变量 局部变量
  5. python组合数据类型有哪些_Python学习之组合数据类型
  6. python tensorflow pytorch 深度学习 车牌识别
  7. mysql为什么采用b树_为什么MongoDB采用B树索引,而Mysql用B+树做索引
  8. php多态的实际运用,7.9.1 PHP多态的应用实例
  9. netty框架_Netty实战:设计一个IM框架
  10. html编辑器自定义脚本,CKeditor富文本编辑器使用技巧之添加自定义插件的方法