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

[经验分享] LVS-DR模式的配置及Heartbeat+Ldirectord+DR高可用负载均衡集群...

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-10-19 10:20:45 | 显示全部楼层 |阅读模式
                        LVS-DR模式的配置及Heartbeat+Ldirectord+DR高可用负载均衡集群的搭建
主机环境 redhat6.5 64位
实验环境 服务端1 ip172.25.25.113   主机名:server3.example.com
        服务端2 ip 172.25.25.114   主机名:server4.example.com
        调度端2 ip 172.25.25.112   主机名:server2.example.com
        调度端1 ip 172.25.25.111   主机名:server1.example.com
防火墙状态:关闭
虚拟ip(vip): 172.25.25.200/24

1.LVS之DR的配置及测试
1.添加vip、将调度策略写进内核(调度器端)
  1.添加vip
[iyunv@server2 ~]# ip addr add 172.25.25.200/24 dev eth0    #添加一个vip
[iyunv@server2 ~]# ip addr show          #查看
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueuestate UNKNOWN
    link/loopback 00:00:00:00:00:00brd 00:00:00:00:00:00
    inet 127.0.0.1/8scope host lo
    inet6 ::1/128 scopehost
       valid_lft foreverpreferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdiscpfifo_fast state UP qlen 1000
    link/ether 52:54:00:85:1a:3bbrd ff:ff:ff:ff:ff:ff
    inet 172.25.25.112/24brd 172.25.25.255 scope global eth0
    inet 172.25.25.200/24scope global secondary eth0       #添加成功
    inet6fe80::5054:ff:fe85:1a3b/64 scope link
       valid_lft foreverpreferred_lft forever
2.用ipvsadm工具将策略写进内核
[iyunv@server2 ~]# yum install ipvsadm -y            #安装ipvsadm
[iyunv@server2 ~]# ipvsadm -A -t 172.25.25.200:80 -s rr      #写策略,添加httpd服务,机制轮叫
[iyunv@server2 ~]# ipvsadm -a -t 172.25.25.200:80 -r172.25.25.113:80 -g #添加服务器
[iyunv@server2 ~]# ipvsadm -a -t 172.25.25.200:80 -r172.25.25.114:80 -g
[iyunv@server2 ~]# ipvsadm -ln       #查看,添加成功
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  ->RemoteAddress:Port           ForwardWeight ActiveConn InActConn
TCP  172.25.25.200:80 rr
  ->172.25.25.113:80             Route   1     0          0         
  ->172.25.25.114:80             Route   1     0          0         
2.安装httpd、添加虚拟ip、添加arp火墙策略(服务器端)
  1.写测试页、开启httpd
[iyunv@server3 ~]# yum install -y httpd      #安装httpd
[iyunv@server3 ~]# vim /var/www/html/index.html     #写测试页
server3.example.com
[iyunv@server3 ~]# /etc/init.d/httpd start       #开启httpd
Starting httpd:                                            [  OK  ]
2.用arptables工具添加火墙策略
[iyunv@server3 ~]# yum install arptables_jf -y   #安装arptables_jf工具
[iyunv@server3 ~]# ip addr add 172.25.25.200/24 dev eth0 #添加虚拟ip
#添加arp火墙策略(禁止从172.25.25.200进来的访问,允许从72.25.25.200出去的访问且经出去的ip变成自己的ip172.25.25.113)
[iyunv@server3 ~]# arptables -A IN -d 172.25.25.200 -j DROP
[iyunv@server3 ~]# arptables -A OUT -s 172.25.25.200 -j mangle--mangle-ip-s 172.25.25.113
[iyunv@server3 ~]# /etc/init.d/arptables_jf save     #保存
Saving current rules to /etc/sysconfig/arptables:          [ OK  ]
[iyunv@server3 ~]# arptables -L      #查看
Chain IN (policy ACCEPT)
target     source-ip            destination-ip       source-hw          destination-hw     hlen  op         hrd        pro      
DROP       anywhere             172.25.25.200        anywhere           anywhere           any    any       any        any      

Chain OUT (policy ACCEPT)
target     source-ip            destination-ip       source-hw          destination-hw     hlen  op         hrd        pro      
mangle    172.25.25.200        anywhere             anywhere           anywhere           any    any       any        any       --mangle-ip-s server3.example.com

Chain FORWARD (policy ACCEPT)
target     source-ip            destination-ip       source-hw          destination-hw     hlen  op         hrd        pro      
3.测试
#刚开始是服务端1
wKiom1gF6mzQdZs_AAAU07R_Eg8810.jpg
#刷新之后,服务端2
wKioL1gF6mywTpa6AAAUU_s3nk0513.jpg
[iyunv@server3 ~]# /etc/init.d/httpd stop    #将服务端1的httpd停掉
Stopping httpd:                                           [  OK  ]
#服务在服务端2,刷新也没变
wKiom1gF6myzZS0oAAAUU_s3nk0063.jpg

为了避免单点故障,要将DR添加到高可用集群(HA)中,下面介绍的是添加到HA的heartbeat中。由于heartheat对后端没有健康检查,这就需要借助ldirectord对heartbeat进行后端检查。即将DR添加到ldirectord中,再将ldirectord服务添加到heartbeat中,前面博文中已经有heartdbeat的安装和测试,可以参考前面的博文。
2.将DR添加到ldirectord服务中,再将ldirectord服务添加到高可用集群(HA)的heartbeat中、测试   
1.配置ldirectord、测试(调度端)
#在管理端1和管理端2安装、配置好heartbeat的情况下
1.配置ldirectord、查看策略是否写进内核
[iyunv@server2 yum.repos.d]# cd/usr/share/doc/ldirectord-3.9.5/   
[iyunv@server2 ldirectord-3.9.5]# ls
COPYING  ldirectord.cf
[iyunv@server2 ldirectord-3.9.5]# cp ldirectord.cf/etc/ha.d/  #复制
[iyunv@server2 ldirectord-3.9.5]# cd /etc/ha.d/  
[iyunv@server2 ha.d]# vim ldirectord.cf  #进入配置文件
25virtual=172.25.25.200:80    #虚拟ip
26         real=172.25.25.113:80 gate  #真正的服务端
27         real=172.25.25.114:80 gate  #同上   
28         fallback=127.0.0.1:80 gate  #当所有服务端都出故障之后,使用本地回环
29         service=http       #服务httpd
30         scheduler=rr       #机制轮叫
31         #persistent=600
32         #netmask=255.255.255.255
33         protocol=tcp       #协议
34         checktype=negotiate
35         checkport=80       端口
36         request="index.html"    #服务的测试页名称
37 #       receive="Test Page"
38 #       virtualhost=www.x.y.z

[iyunv@server2 ha.d]# /etc/init.d/ipvsadm stop       #停掉ipvsadm
ipvsadm: Clearing the current IPVS table:                  [  OK  ]
ipvsadm: Unloading modules:                                [  OK  ]

[iyunv@server2 ha.d]# ipvsadm -L   #查看,没有策略
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  ->RemoteAddress:Port           ForwardWeight ActiveConn InActConn
[iyunv@server2 ha.d]# /etc/init.d/ldirectord restart  #开启ldirectord
Restarting ldirectord... success
[iyunv@server2 ha.d]# ipvsadm -L #查看

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  ->RemoteAddress:Port           ForwardWeight ActiveConn InActConn
TCP  172.25.25.200:httprr
  ->server3.example.com:http     Route   1     0          0         
  ->172.25.25.114:http           Route   1     0          0         
2.测试
#刚开始是服务端1
wKioL1gF6m2hPwlrAAAU07R_Eg8079.jpg
#刷新之后,服务端2
wKiom1gF6m2gnLxLAAAUU_s3nk0479.jpg
#将停掉服务端1和服务端2的httpd,测试
[iyunv@server3 ~]# /etc/init.d/httpd stop        
Stopping httpd:                                           [  OK  ]
[iyunv@sever4 yum.repos.d]# /etc/init.d/httpd stop
Stopping httpd:                                           [  OK  ]
#本地回环
wKioL1gF6m3C0bgkAAARph701hs653.jpg
2.将ldirectord服务添加到heartbeat中
[iyunv@server2 ha.d]# vim haresources
150 server1.example.com IPaddr::172.25.25.200/24/eth0ldirectord httpd  #添加虚拟ip,调度,httpd服务
[iyunv@server2 ha.d]# /etc/init.d/ldirectord stop        #将ldirectord服停止(不能手动开启)
Stopping ldirectord... Success
[iyunv@server2 ha.d]# ip addr del 172.25.25.200/24 dev   #将vip删掉
[iyunv@server2 ha.d]# /etc/init.d/heartbeat start    #开启heartbeat
Starting High-Availability services: INFO:  Resource is stopped
Done.

[iyunv@server2 ha.d]# scp haresources 1ldirectord.cf72.25.25.111:/etc/ha.d/     #将修改过的文件传给服务端1
root@172.25.25.111's password:
haresources                                   100%5972     5.8KB/s   00:00   
ldirectord.cf                                   100%8281     8.1KB/s   00:00   
[iyunv@server1 ha.d]# /etc/init.d/heartbeat start    #开启服务端1的heartbeat
Starting High-Availability services: INFO:  Resource is stopped
Done.
3.整体测试
#将服务开启之后,服务在服务端1(主)
wKioL1gF6nDR-YEcAAARBIk_wZw307.jpg
[iyunv@server1 ha.d]# ip addr show       #查看ip
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueuestate UNKNOWN
    link/loopback00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8scope host lo
    inet6 ::1/128 scopehost
       valid_lft foreverpreferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdiscpfifo_fast state UP qlen 1000
    link/ether 52:54:00:ec:8b:36brd ff:ff:ff:ff:ff:ff
    inet 172.25.25.111/24brd 172.25.25.255 scope global eth0
    inet 172.25.25.200/24brd 172.25.25.255 scope global secondary eth0 #虚拟ip成功
    inet6fe80::5054:ff:feec:8b36/64 scope link
       valid_lft foreverpreferred_lft forever

[iyunv@server1 ha.d]# /etc/init.d/heartbeat stop     #若将服务端1的heartbeat停掉
Stopping High-Availability services: Done.         
#测试,服务到了服务端2(备)
wKiom1gF6nCDAnExAAARph701hs167.jpg
[iyunv@server2 ha.d]# ip addr show   #查看ip,虚拟ip到了服务端2
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueuestate UNKNOWN
    link/loopback00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8scope host lo
    inet6 ::1/128 scopehost
       valid_lft foreverpreferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdiscpfifo_fast state UP qlen 1000
    link/ether52:54:00:85:1a:3b brd ff:ff:ff:ff:ff:ff
    inet 172.25.25.112/24brd 172.25.25.255 scope global eth0
    inet 172.25.25.200/24brd 172.25.25.255 scope global secondary eth0#虚拟ip
    inet6fe80::5054:ff:fe85:1a3b/64 scope link
       valid_lft foreverpreferred_lft forever

[iyunv@server1 ha.d]# /etc/init.d/heartbeat start    #将服务端1的heartbeat开启
Starting High-Availability services: INFO:  Resource is stopped
Done.
#测试,服务自动回到了服务端1(主)
wKioL1gF6nCCwzB8AAARBIk_wZw725.jpg
[iyunv@server1 ha.d]# ip addr show    #查看ip,虚拟ip自动回到到了服务端1
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueuestate UNKNOWN
    link/loopback00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8scope host lo
    inet6 ::1/128 scopehost
       valid_lft foreverpreferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdiscpfifo_fast state UP qlen 1000
    link/ether52:54:00:ec:8b:36 brd ff:ff:ff:ff:ff:ff
    inet 172.25.25.111/24brd 172.25.25.255 scope global eth0
    inet 172.25.25.200/24brd 172.25.25.255 scope global secondary eth0
    inet6fe80::5054:ff:feec:8b36/64 scope link
       valid_lft foreverpreferred_lft forever



运维网声明 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-288350-1-1.html 上篇帖子: LVS-NAT _VM虚拟机实验 下篇帖子: LVS的DR模型的实现
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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