文档章节

Linux集群架构(下)——DR模式、keepalived+LVS

feng-01
 feng-01
发布于 07/23 12:06
字数 1902
阅读 7
收藏 0

Linux集群架构(下)

八、DR模式搭建

8.1 准备工作

试验需求三台机器:

  • 分发器,也叫调度器(简写为dir) : 192.168.112.136 ying01

  • rs1 :192.168.112.138 ying02

  • rs2 :192.168.112.139 ying03

  • vip :192.168.112.200

  • ying01上设置

新建lvs_dr脚本,按下面内容配置

[root@ying01 ~]# vim /usr/local/sbin/lvs_dr.sh

#! /bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/usr/sbin/ipvsadm
vip=192.168.112.200
rs1=192.168.112.138
rs2=192.168.112.139
#注意这里的网卡名字
ifdown wns33
ifup  ens33
ifconfig ens33:2 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev ens33:2
$ipv -C
$ipv -A -t $vip:80 -s wrr
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1

执行脚本,查看IP,发现vip在ens33上

[root@ying01 ~]# sh /usr/local/sbin/lvs_dr.sh 
成功断开设备 'ens33'。
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)
[root@ying01 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:87:3f:91 brd ff:ff:ff:ff:ff:ff
    inet 192.168.112.136/24 brd 192.168.112.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.112.200/32 brd 192.168.112.200 scope global ens33:2
       valid_lft forever preferred_lft forever
    inet 192.168.112.158/24 brd 192.168.112.255 scope global secondary ens33:0
       valid_lft forever preferred_lft forever
    inet6 fe80::16dc:89c:b761:e115/64 scope link 
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:87:3f:9b brd ff:ff:ff:ff:ff:ff
    inet 192.168.24.128/24 brd 192.168.24.255 scope global dynamic ens37
       valid_lft 1434sec preferred_lft 1434sec
    inet6 fe80::ad38:a02e:964e:1b93/64 scope link 
       valid_lft forever preferred_lft forever

  • ying02上

先把网关改为:192.168.112.2,重启网络

[root@ying02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33  

GATEWAY=192.168.112.2

[root@ying02 ~]# systemctl restart network

新建lvs_rs脚本;

[root@ying02 ~]# vim /usr/local/sbin/lvs_rs.sh


#/bin/bash
vip=192.168.112.200
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifdown lo
ifup lo
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
#参考文档www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

执行脚本,并route -n ,查看网络信息

[root@ying02 ~]# sh /usr/local/sbin/lvs_rs.sh
[root@ying02 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.112.2   0.0.0.0         UG    100    0        0 ens33
192.168.112.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.112.200 0.0.0.0         255.255.255.255 UH    0      0        0 lo
[root@ying02 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 192.168.112.200/32 brd 192.168.112.200 scope global lo:0
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:c6:2c:24 brd ff:ff:ff:ff:ff:ff
    inet 192.168.112.138/24 brd 192.168.112.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::964f:be22:ddf2:54b7/64 scope link 
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:c6:2c:2e brd ff:ff:ff:ff:ff:ff

  • ying03

先把网关改为:192.168.112.2,重启网络

[root@ying03 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@ying03 ~]# systemctl restart network

新建lvs_rs脚本;

[root@ying03 ~]# vim /usr/local/sbin/lvs_rs.sh

#/bin/bash
vip=192.168.112.200
ifdown lo
ifup lo
#把vip绑定在lo上,是为了实现rs直接把结果返回给客户端
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
#参考文档www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

8.2 测试

执行脚本,vip在lo网卡上

[root@ying03 ~]# sh /usr/local/sbin/lvs_rs.sh
[root@ying03 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.112.2   0.0.0.0         UG    100    0        0 ens33
192.168.112.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.112.200 0.0.0.0         255.255.255.255 UH    0      0        0 lo
[root@ying03 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 192.168.112.200/32 brd 192.168.112.200 scope global lo:0
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:ed:0f:50 brd ff:ff:ff:ff:ff:ff
    inet 192.168.112.139/24 brd 192.168.112.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::43bd:36bd:3f01:f8e8/64 scope link 
       valid_lft forever preferred_lft forever
    inet6 fe80::964f:be22:ddf2:54b7/64 scope link tentative dadfailed 
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:ed:0f:5a brd ff:ff:ff:ff:ff:ff

在浏览器测试,输入VIP:192.168.112.100;不断刷新浏览器;会出现ying02或者ying03页面

通过ipvsadm -ln查看 规则,可以看出其信息;

[root@ying01 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.112.200:80 wrr
  -> 192.168.112.138:80           Route   1      2          9         
  -> 192.168.112.139:80           Route   1      2          9      

九、 keepalived+LVS

编辑配置文件,把之前的内容清空,按下面配置

[root@ying01 ~]# vim /etc/keepalived/keepalived.conf 


vrrp_instance VI_1 {
    #备用服务器上为 BACKUP
    state MASTER
    #绑定vip的网卡为ens33
    interface ens33
    virtual_router_id 51
    #备用服务器上为90
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aminglinux
    }
    virtual_ipaddress {
        192.168.112.200
    }
}
virtual_server 192.168.112.200 80 {
    #(每隔10秒查询realserver状态)
    delay_loop 10
    #(lvs 算法)
    lb_algo wlc
    #(DR模式)
    lb_kind DR
    #(同一IP的连接60秒内被分配到同一台realserver)
    persistence_timeout 60
    #(用TCP协议检查realserver状态)
    protocol TCP

    real_server 192.168.112.138 80 {
        #(权重)
        weight 100
        TCP_CHECK {
        #(10秒无响应超时)
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.112.139 80 {
        weight 100
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
}

查看网卡IP

[root@ying01 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:87:3f:91 brd ff:ff:ff:ff:ff:ff
    inet 192.168.112.136/24 brd 192.168.112.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.112.158/24 brd 192.168.112.255 scope global secondary ens33:0
       valid_lft forever preferred_lft forever
    inet6 fe80::16dc:89c:b761:e115/64 scope link 
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:87:3f:9b brd ff:ff:ff:ff:ff:ff
    inet 192.168.24.128/24 brd 192.168.24.255 scope global dynamic ens37
       valid_lft 1216sec preferred_lft 1216sec
    inet6 fe80::ad38:a02e:964e:1b93/64 scope link 
       valid_lft forever preferred_lft forever

ipvsadm -ln :查看其规则,开启与未开启keepalived服务对比;

[root@ying01 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[root@ying01 ~]# systemctl start keepalived
[root@ying01 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.112.200:80 wlc persistent 60
  -> 192.168.112.138:80           Route   100    0          0         
  -> 192.168.112.139:80           Route   100    0          0        

开展执行其脚本;做实验,不断刷新浏览器;

[root@ying01 ~]# sh /usr/local/sbin/lvs_dr.sh
成功断开设备 'ens33'。
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/7)
[root@ying01 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.112.200:80 wrr
  -> 192.168.112.138:80           Route   1      0          3         
  -> 192.168.112.139:80           Route   1      0          3         

假如ying03宕机了,我们把ying03机器关闭;此时能够剔除ying03机器;

[root@ying01 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.112.200:80 wrr
  -> 192.168.112.138:80           Route   1      3          20        
您在 /var/spool/mail/root 中有新邮件

恢复ying03机器,规则里面有添加上ying03

[root@ying01 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.112.200:80 wrr
  -> 192.168.112.138:80           Route   1      3          20        
  -> 192.168.112.139:80           Route   100    1          1     

© 著作权归作者所有

共有 人打赏支持
feng-01
粉丝 7
博文 45
码字总数 246350
作品 0
深圳
运维
集群应用与实战

集群 什么是集群: — 一组通过高速网络互联的计算组,并以单一系统的模式加以管理 — 将很多服务器集中起来,提供同一中服务,在客户端看来就像是只有一个服务器 — 可以在付出较低成本的情...

Xuenqlve
01/15
0
0
keepalived+LVS的实现

一.LVS 概述 Linux Virtual Server(LVS)是一套完整的基于IP的负载均衡的集群软件.LVS运行在一对有相似配置的计算机上: 一个作为活动LVS Router(Active LVS Router),一个作为备份LVS Router(...

YLSL2014
07/04
0
0
Linux集群:LVS搭建负载均衡集群(二)

一、DR模式LVS搭建 1、准备工作 调度器dir:192.168.242.128 真实服务器rs1:192.168.242.129,网关恢复为之前的原始网关 真实服务器rs2:192.168.242.130,网关恢复为之前的原始网关 VIP:1...

BatmanLinux
04/11
0
0
民工哥公众号linux系统学习线路图大全

民工哥公众号linux系统学习线路图大全 <-----------点击链接进入 友侃有笑公众号Linux学习路线图 1、基础篇 Linux 基础优化配置 Linux系统根目录结构介绍 linux系统重要子目录介绍 Linux文件...

民工哥
2017/08/30
0
0
Keepalived+lvs+httpd之负载均衡

最近在研究 负载均衡。目前研究的是keepalived+lvs模式 1、软件介绍 keepalived:顾名思义是保持存活,常用来搭建设备的高可用,防止业务核心设备出现单点故障。keepalived主要用作realserve...

王九龙
2015/08/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL 到底支不支持事务嵌套?

最近开发中遇到了使用MySQL,多次开启事务,出现了数据错乱问题,伪代码如下: begin; # 操作1 begin; # 操作2 rollback; 执行完后出现了操作1的数据真正写入,只有操作2的数据回滚...

宇润
10分钟前
0
0
fastDfs应用(安装过程待写)

1.效果 2.安装 2.1 导入已经安装好fastDFS的镜像 2.1.1 导入镜像 2.1.2 更改系统兼容性 2.1.3 开机 2.1.4 修改 一下内容 2.1.4.1 修改系统的ip 原来系统ip...

Lucky_Me
13分钟前
1
0
5. Python3源码—字符串(str)对象

5.1. 字符串对象 字符串对象是“变长对象”。 5.1.1. Python中的创建 Python中字符串(strs)对象最重要的创建方法为PyUnicode_DecodeUTF8Stateful,如下Python语句最终会调用到PyUnicode_D...

Mr_zebra
33分钟前
2
0
第十章:路由网关(Zuul)进阶:过滤器、异常处理

第十章:路由网关(Zuul)进阶:过滤器、异常处理 简单介绍了关于Zuul的一些简单使用以及一些路由规则的简单说明。而对于一个统一网关而言,需要处理各种各类的请求,对不同的url进行拦截,或者...

DemonsI
34分钟前
2
0
nginx屏蔽指定接口(URL)

Step1:需求 web平台上线后,需要屏蔽某个服务接口,但又不想重新上线,可以采用nginx屏蔽指定平台接口的办法 Step2:具体操作 location /dist/views/landing/UNIQUE_BEACON_URL { re...

Linux_Anna
43分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部