ipvs+ldirectord实现高可用ipvs
一、heartbeat准备
1、接上文
2、 安装heartbeat-ldirectord组件包
[root@node1 heartbeat]# yum localinstall heartbeat-ldirectord-2.1.-.el6.x86_64.rpm
3、ldirectord组件简介
ldirectord依赖于自己的配置文件来生成ipvs的规则,因此,定义LVS集群、添加RS都是在ldirectord的配置文件中指定,而无需手动执行ipvsadm命令。ldirectord对LVS集群的director高可用,并对LVS进群的RS提供健康状态监测,若某节点出现故障,则会把它从集群系统中剔除,并在其回复正常后,将它重新加入集群系统。ldirectord还可以调用ipvsadm命令创建LVS路由表信息,只需要在/etc/ha.d/ldirectord.cf配置文件中指明即可。
4、基本信息

二、配置
RS:
、准备RS脚本
#!/bin/bash vip=192.168.0.17
interface="lo:0" case $ in
start)
echo > /proc/sys/net/ipv4/conf/all/arp_ignore
echo > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo > /proc/sys/net/ipv4/conf/all/arp_announce
echo > /proc/sys/net/ipv4/conf/eth0/arp_announce
ifconfig $interface $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev $interface
;;
stop)
echo > /proc/sys/net/ipv4/conf/all/arp_ignore
echo > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo > /proc/sys/net/ipv4/conf/all/arp_announce
echo > /proc/sys/net/ipv4/conf/eth0/arp_announce
ifconfig $interface down
;;
status)
if ifconfig lo: | grep $vip &> /dev/null; then
echo "ipvs is running."
else
echo "ipvs is stopped."
fi
;;
*)
echo "please input : `basename $0` {start|stop|status}"
exit
esac [root@node3 ~]# chmod +x rs.sh 、准备httpd
[root@node3 ~]# yum install httpd
[root@node3 ~]# echo "This is RS" > /var/www/html/index.html
[root@node3 ~]# service httpd start
[root@node3 ~]# curl 192.168.0.20
This is RS
[root@node3 ~]# ./rs.sh start
主备Director测试
[root@node1 ~]# ifconfig eth0: 192.168.0.17 broadcast 192.168.0.17 netmask 255.255.255.255 up
[root@node1 ~]# route add -host 192.168.0.17 dev eth0:
[root@node1 ~]# ipvsadm -A -t 192.168.0.17: -s rr
[root@node1 ~]# ipvsadm -a -t 192.168.0.17: -r 192.168.0.20 -g #del test
[root@node1 ~]# ipvsadm -C
[root@node1 ~]# route del -host 192.168.0.17
[root@node1 ~]# ifconfig eth0: down
主Director:node1配置
、cp样例配置文件
[root@node1 ~]# cd /usr/share/doc/heartbeat-ldirectord-2.1./
[root@node1 heartbeat-ldirectord-2.1.]# cp ldirectord.cf /etc/ha.d
[root@node1 heartbeat-ldirectord-2.1.]# cd /etc/ha.d 、配置文件
##全局配置
# Global Directives
##健康状态检测超时时间间隔
checktimeout=
##每一秒检查一次
checkinterval=
#fallback=127.0.0.1:
##自动装载配置文件
autoreload=yes
##日志文件
logfile="/var/log/ldirectord.log"
##日志文件级别
#logfile="local0"
##邮件通知警告信息
#emailalert="admin@x.y.z"
##邮件通知间隔1小时
#emailalertfreq=
##邮件通知所有的状态信息
#emailalertstatus=all
##是否工作于静默模式
quiescent=yes ##虚拟服务配置
# Sample for an http virtual service
##VIP
virtual=192.168.0.17:
##RS gate为dr类型
real=192.168.0.20: gate
#real=192.168.6.3: gate
#real=192.168.6.6: gate
##backserver
fallback=127.0.0.1: gate
##健康状态检查基于http协议
service=http
##请求的页面
request=".health.html"
##检查request=“”页面中的字符串是否一致
receive=""
##对多个虚拟主机进行检查
virtualhost=some.domain.com.au
##调度类型为rr
scheduler=rr
##持久连接时长
#persistent=
##掩码
#netmask=255.255.255.255
##基于tcp的检查,集群服务类型
protocol=tcp
##检查类型为交互式检查
##checktype:connect是传输层检查,ping是网络层检查,negotlate是应用层检查
##当checktype=negotlate时,ldirectord将基于指定的协议与各RS建立连接,完成应用层检查
checktype=negotia
##检查端口为80
checkport=
##请求的页面
request="index.html"
##请求的字符串检查
#receive="Test Page"
##对虚拟主机检查
#virtualhost= 、准备web服务,node1作为back server提供sorry server服务
[root@node1 ha.d]# vim /var/www/html/index.html
This is sorry server(node1)
[root@node1 ha.d]# service httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.0.15 for ServerName
[ OK ]
[root@node1 ha.d]# curl 192.168.0.15
This is sorry server(node1) 、将配置文件cp给node2
[root@node1 ha.d]# scp ldirectord.cf node2:/etc/ha.d/
备Director:node2配置
[root@node2 ~]# vim /var/www/html/index.html
This is sorry server(node2)
[root@node2 ~]# service httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.0.16 for ServerName
[ OK ]
[root@node2 ~]# curl 192.168.0.16
This is sorry server(node2)
RS准备测试页
[root@node3 ~]# echo "ok" > /var/www/html/.health.html
启动服务
[root@node1 ~]# service heartbeat start; ssh node2 'service heartbeat start'
gui界面配置资源
1、定义资源组ipvs,定义集群ip资源(vip)

2、定义ipvs规则,lsb格式不提供参数,ocf格式的资源代理须提供配置文件

3、启动资源

4、验证node2节点
[root@node2 ~]# ipvsadm -L -n
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.17: rr
-> 192.168.0.20: Route [root@node2 ~]# ip add show eth0
: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP qlen
link/ether :0c:::ea: brd ff:ff:ff:ff:ff:ff
inet 192.168.0.16/ brd 192.168.0.255 scope global eth0
inet 192.168.0.17/ brd 192.168.0.255 scope global secondary eth0
inet6 fe80::20c:29ff:fe15:ea32/ scope link
valid_lft forever preferred_lft forever
5、验证负载均衡集群效果

6、检测RS下线,director错误页面
[root@node3 ~]# mv /var/www/html/.health.html /var/www/html/a.html
[root@node2 ~]# ipvsadm -L -n
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.17: rr
-> 127.0.0.1: Local
-> 192.168.0.20: Route

ipvs+ldirectord实现高可用ipvs的更多相关文章
- keepalived高可用
keepalived介绍 Keepalived是一个基于vrrp协议的高可用方案,vrrp协议的软件实现,原生设计的目的为了高可用ipvs服务. 1. vrrp协议 VRRP是一种容错协议,它通过把几 ...
- 4、keepalived高可用nginx负载均衡
keepalived: HTTP_GET //使用keepalived获取后端real server健康状态检测 SSL_GET(https) //这里以为这后端使用的是http协议 ...
- 3、使用keepalived高可用LVS实例演示
回顾: keepalived: vrrp协议的实现: 虚拟路由器: MASTER,BACKUP VI:Virtual Instance keepalived.conf GLOBAL VRRP LVS ...
- KeepAlived双主模式高可用集群
keepalived是vrrp协议的实现,原生设计目的是为了高可用ipvs服务,keepalived能够配置文件中的定义生成ipvs规则,并能够对各RS的健康状态进行检测:通过共用的虚拟IP地址对外提 ...
- centos7下用kubeadm安装k8s集群并使用ipvs做高可用方案
1.准备 1.1系统配置 在安装之前,需要先做如下准备.三台CentOS主机如下: 配置yum源(使用腾讯云的) 替换之前先备份旧配置 mv /etc/yum.repos.d/CentOS-Base. ...
- 通过LVS+Keepalived搭建高可用的负载均衡集群系统
1. 安装LVS软件 (1)安装前准备操作系统:统一采用Centos6.5版本,地址规划如下: 服务器名 IP地址 网关 虚拟设备名 虚拟ip Director Server 192.168 ...
- Heartbeat+LVS构建高可用负载均衡集群
1.heartbeat简介: Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里 ...
- 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群
高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...
- 高并发场景 LVS 安装及高可用实现
1.1 负载均衡介绍 1.1.1 负载均衡的妙用 负载均衡(Load Balance)集群提供了一种廉价.有效.透明的方法,来扩展网络设备和服务器的负载.带宽.增加吞吐量.加强网络数据处理能力.提高网 ...
随机推荐
- WEB项目中使用UEditor(富文本编辑器)
Ueditor富文本编辑器是在很多项目里经常用到的框架,是百度开发团队开发的一款很好用的富文本编辑器 下面就是我在一个系统里用到的,有了富文本编辑器,管理员使用起来不是很方便? 所以本博客介绍这个富文 ...
- 如何做rom,体验做rom过程,附图文教程,感谢各位romer
http://bbs.gfan.com/android-5408130-1-1.html 有人问我,我简单的写一下,来源XDA,运行环境ubuntu 10.4. ubuntu安装很简单,在window ...
- jenkins-cli, plugin/extracolumns
++++++++++++++++++++++++++++++++++++++++++++++++ echo "构建地址:${BUILD_URL}" >> xxx.log ...
- Systemd mysql,nginx,php启动配置文件
systemctl的配置文件目录一般在 /usr/lib/systemd/system/ 或者/etc/systemd/system/ 需要注意的是,nginx与php运行用户必须是root,所以不需 ...
- Spring Data 增删改查事务的使用(七)
@Modifying 注解使用 @Modifying 结合 @Query注解进行更新操作 咱们单单的一个查询注解是没有办法完成事务的操作的 我们还要结合一点就是@Transaction 在spring ...
- Proud Merchants---hdu3466(有01背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3466 与顺序有关的01背包. 如果一个物品p = 5,q = 7,一个物品p = 5,q = 9,如果 ...
- 提交任务到spark master -- 分布式计算系统spark学习(四)
部署暂时先用默认配置,我们来看看如何提交计算程序到spark上面. 拿官方的Python的测试程序搞一下. qpzhang@qpzhangdeMac-mini:~/project/spark-1.3. ...
- json中load和loads区别
相同点 dump 和 dumps 都实现了序列化 load 和 loads 都实现反序列化 变量从内存中变成可存储或传输的过程称之为序列化序列化是将对象状态转化为可保存或可传输格式的过程. 变量内容从 ...
- java获取src下文件
方式一: InputStream in = Test.class .getResourceAsStream("/env.properties"); URL url = Test.c ...
- Jacl 是 TCL 的一个备用实现
Jacl 是 TCL 的一个备用实现,它是完全使用 Java 代码编写的. wsadmin 工具使用 Jacl V1.3.2. 建议不要在 wsadmin 工具中使用 Jacl 语法 建议不要使用一个 ...