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

[经验分享] ipvs+ldirectord实现高可用ipvs

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-11-21 12:39:59 | 显示全部楼层 |阅读模式
一、heartbeat准备

    1、接上文HA集群准备工作
    2、 安装heartbeat-ldirectord组件包

1
[iyunv@node1 heartbeat]# yum localinstall heartbeat-ldirectord-2.1.4-12.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、基本信息

    wKioL1gxFMuzyeDEAAAo9TfmwgU377.jpg

二、配置
RS:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
1、准备RS脚本
#!/bin/bash

vip=192.168.0.17
interface="lo:0"

case $1 in
start)
        echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
        echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
        echo 2 > /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 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
        echo 0 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
        echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
        echo 0 > /proc/sys/net/ipv4/conf/eth0/arp_announce
        ifconfig $interface down
        ;;
status)
        if ifconfig lo:0 | grep $vip &> /dev/null; then
                echo "ipvs is running."
        else
                echo "ipvs is stopped."
        fi
        ;;
*)
        echo "please input : `basename $0` {start|stop|status}"
        exit 1
esac

[iyunv@node3 ~]# chmod +x rs.sh

2、准备httpd
[iyunv@node3 ~]# yum install httpd
[iyunv@node3 ~]# echo "This is RS" > /var/www/html/index.html
[iyunv@node3 ~]# service httpd start
[iyunv@node3 ~]# curl 192.168.0.20
This is RS
[iyunv@node3 ~]# ./rs.sh start




主备Director测试
1
2
3
4
[iyunv@node1 ~]# ifconfig eth0:0 192.168.0.17 broadcast 192.168.0.17 netmask 255.255.255.255 up
[iyunv@node1 ~]# route add -host 192.168.0.17 dev eth0:0
[iyunv@node1 ~]# ipvsadm -A -t 192.168.0.17:80 -s rr
[iyunv@node1 ~]# ipvsadm -a -t 192.168.0.17:80 -r 192.168.0.20 -g



wKioL1gwc1mwyqRMAAAMjdMdBRY617.jpg

1
2
3
[iyunv@node1 ~]# ipvsadm -C
[iyunv@node1 ~]# route del -host 192.168.0.17
[iyunv@node1 ~]# ifconfig eth0:0 down




主Director:node1配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
1、cp样例配置文件
[iyunv@node1 ~]# cd /usr/share/doc/heartbeat-ldirectord-2.1.4/
[iyunv@node1 heartbeat-ldirectord-2.1.4]# cp ldirectord.cf /etc/ha.d
[iyunv@node1 heartbeat-ldirectord-2.1.4]# cd /etc/ha.d

2、配置文件
##全局配置
# Global Directives
##健康状态检测超时时间间隔                           
checktimeout=3
##每一秒检查一次                           
checkinterval=1
#fallback=127.0.0.1:80
##自动装载配置文件
autoreload=yes
##日志文件
logfile="/var/log/ldirectord.log"
##日志文件级别
#logfile="local0"
##邮件通知警告信息
#emailalert="admin@x.y.z"
##邮件通知间隔1小时
#emailalertfreq=3600
##邮件通知所有的状态信息
#emailalertstatus=all
##是否工作于静默模式
quiescent=yes

##虚拟服务配置
# Sample for an http virtual service
##VIP            
virtual=192.168.0.17:80
##RS gate为dr类型
                real=192.168.0.20:80 gate
        #real=192.168.6.3:80 gate
        #real=192.168.6.6:80 gate
##backserver
        fallback=127.0.0.1:80 gate
##健康状态检查基于http协议
        service=http
##请求的页面
        request=".health.html"
##检查request=“”页面中的字符串是否一致
        receive=""
##对多个虚拟主机进行检查
        virtualhost=some.domain.com.au
##调度类型为rr
        scheduler=rr
##持久连接时长
        #persistent=600
##掩码
        #netmask=255.255.255.255
##基于tcp的检查,集群服务类型
        protocol=tcp
##检查类型为交互式检查
##checktype:connect是传输层检查,ping是网络层检查,negotlate是应用层检查
##当checktype=negotlate时,ldirectord将基于指定的协议与各RS建立连接,完成应用层检查
        checktype=negotia
##检查端口为80
        checkport=80
##请求的页面
        request="index.html"
##请求的字符串检查
        #receive="Test Page"
##对虚拟主机检查
        #virtualhost=
         
         
3、准备web服务,node1作为back server提供sorry server服务
[iyunv@node1 ha.d]# vim /var/www/html/index.html
This is sorry server(node1)
[iyunv@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  ]
[iyunv@node1 ha.d]# curl 192.168.0.15
This is sorry server(node1)

4、将配置文件cp给node2
[iyunv@node1 ha.d]# scp ldirectord.cf node2:/etc/ha.d/




备Director:node2配置
1
2
3
4
5
6
7
[iyunv@node2 ~]# vim /var/www/html/index.html
This is sorry server(node2)
[iyunv@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  ]
[iyunv@node2 ~]# curl 192.168.0.16
This is sorry server(node2)



RS准备测试页
1
[iyunv@node3 ~]# echo "ok"  > /var/www/html/.health.html



启动服务

1
[iyunv@node1 ~]# service heartbeat start; ssh node2 'service heartbeat start'




gui界面配置资源

1、定义资源组ipvs,定义集群ip资源(vip)
wKioL1gxELCyetcIAADczpHFfEE299.jpg

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

3、启动资源

wKioL1gxEhXSmsReAAEwx1BWtYI866.jpg

4、验证node2节点
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[iyunv@node2 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.0.17:80 rr
  -> 192.168.0.20:80              Route   1      0          0
   
[iyunv@node2 ~]# ip add show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:15:ea:32 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.16/24 brd 192.168.0.255 scope global eth0
    inet 192.168.0.17/24 brd 192.168.0.255 scope global secondary eth0
    inet6 fe80::20c:29ff:fe15:ea32/64 scope link
       valid_lft forever preferred_lft forever




5、验证负载均衡集群效果
wKiom1gxEu3wgWnYAAA-CgSsgsg478.jpg

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



wKioL1gxE92TVSjvAABApx6xdqs999.jpg

同理检查node1。



运维网声明 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-303446-1-1.html 上篇帖子: lvs_算法详解 下篇帖子: LB负载均衡集群之LVS(NAT)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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