第十九周作业


一、简述LVS四种集群特点及使用场景

1、LVS-NAT

多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑选出的RS的RIP和PORT实现转发

(1) RIP和DIP必须在同一个IP网络,且应该使用私网地址;RS的网关要指向DIP;

(2) 请求报文和响应报文都必须经由Director转发;Director易于成为系统瓶颈;

(3) 支持端口映射,可修改请求报文的目标PORT;

(4) VS必须是Linux系统,RS可以是任意系统;

应用场景:由于配置简单,节省IP的特点,一般用在并发量不大的中小企业;

2、LVS-DR

直接路由;通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT以及目标IP/PORT均保持不变;

(1) 确保前端路由器将目标IP的VIP的请求报文发往Director;

(a) 在前端网关做静态绑定;

(b) 在RS上使用arptables;

(c) 在RS上修改内核参数以限制arp通告及应答级别;arp_ignore与arp_announce

(2) RS的RIP可以使用私网地址,也可以是公网地址;RIP与DIP在同一IP网络;RIP的网关不指向DIP,以确保响应报文不会经由Director;

(3) RS跟Director要在同一个物理网络;

(4) 请求报文要经由Director,但响应不能经由Director,而是由RS直接发往Client;

(5) 不支持端口映射;

应用场景:并发量非常大的情况下会用到此类型,DR模型的并发处理量能达到硬件级别的能力;

3、LVS-TUN

转发方式:不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而是在原IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;RS直接响应给客户端(源IP是VIP,目标IP是CIP);

(1) DIP、VIP、RIP都应该是公网地址;

(2) RS的网关不能也不可指向DIP;

(3) 请求报文要经由Director,但响应不能经由Director;

(4) 不支持端口映射;

(5) RS的OS得支持隧道功能;

应用场景:如果环境要求DIP与RIP不在同一物理网络(如灾备)时,就需要用到lvs-tun模型;

4、LVS-FULLNAT

通过同时修改请求报文的源IP地址和目标IP地址进行转发;

(1) VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此,RIP的网关一般不会指向DIP;

(2) RS收到的请求报文源地址是DIP,因此,只能响应给DIP;但Director还要将其发往Client;

(3) 请求和响应报文都经由Director;

(4) 支持端口映射;

应用场景:与lvs-nat类似,解决了跨越网段部署lvs的问题

二、描术LVS-DR工作原理,并配置实现

LVS DR简单原理

客户端向目标vip发出请求,lvs接收 ,LVS根据负载均衡算法选择一台活跃的的节点,将此节点的ip所在网卡的mac地址作为目标mac地址,发送到局域网里

节点在局域网中收到这个帧,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文.随后重新封装报文,发送到局域网.此时IP包的目标ip是客户端,源ip是自己的vip地址。


DR模式小结:

1、通过在调度器LB上修改数据包的目的MAC地址实现转发。注意源地址仍然是CIP,目的地址仍然是VIP地址。

2、请求的报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此并发访问量大时使用效率很高(和NAT模式比)

3、因为DR模式是通过MAC地址改写机制实现转发,因此所有RS节点和调度器LB只能在一个局域网里面

4、RS主机需要绑定VIP地址在LO接口上,并且需要配置ARP抑制。

5、RS节点的默认网关不需要配置成LB,而是直接配置为上级路由的网关,能让RS直接出网就可以。

6、由于DR模式的调度器仅做MAC地址的改写,所以调度器LB就不能改写目标端口,那么RS服务器就得使用和VIP相同的端口提供服务。

环境搭建:四台主机,一台VS服务器,二台RS服务器,一台客户端服务器

网络配置:VS服务器 DIP:192.168.17.7(eth0),RS1服务器RIP:192.168.17.17(eth0),RS2服务器RIP:192.168.17.27(eth0),VIP:192.168.17.100(lo:1),客户端服务器CIP:192.168.17.37(eth1)

软件包:keepalived,ipvsadm,httpd

(1)在VS服务器上配置

[root@VS ~]# yum install -y ipvsadm

[root@VS ~]# ifconfig eth0:1 192.168.17.100/32

[root@VS ~]# ipvsadm -A -t 192.168.17.100:80 -s wrr

[root@VS ~]# ipvsadm -a -t 192.168.17.100:80 -r 192.168.17.17 -g -w 1

[root@VS ~]# ipvsadm -a -t 192.168.17.100:80 -r 192.168.17.27 -g -w 1

[root@VS ~]# 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.17.100:80 wrr

  -> 192.168.27.17:80            Route  1      0          0       

  -> 192.168.27.27:80            Route  1      0          0

(2) 在RS1服务器上配置

[root@RS1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

[root@RS1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

[root@RS1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

[root@RS1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

[root@RS1 ~]# ifconfig lo:1 192.168.17.100/32

[root@RS1 ~]# yum install -y httpd

[root@RS1 ~]# echo 192.168.17.17 RS1 > /var/www/html/index.html

[root@RS1 ~]# systemctl start httpd

(3)在RS2服务器上配置

[root@RS2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

[root@RS2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

[root@RS2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

[root@RS2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

[root@RS2 ~]# ifconfig lo:1 192.168.17.100/32

[root@RS2 ~]# yum install -y httpd

[root@RS2 ~]# echo 192.168.17.27 RS2 > /var/www/html/index.html

[root@RS2 ~]# systemctl start httpd

(4)在客户端服务器上测试

[root@client ~]# while true; do curl 192.168.17.100 ;sleep 1; done

192.168.17.17 RS1

192.168.17.27 RS2

192.168.17.17 RS1

192.168.17.27 RS2

192.168.17.17 RS1

192.168.17.27 RS2

192.168.17.17 RS1

192.168.17.27 RS2

三、实现LVS+Keepalived高可用

四台主机,两台LVS+Keepalived的主备服务器(lvs1:192.168.17.7,lvs2:192.168.17.17),两台RS服务器(RS1:192.168.17.37,RS2:192.168.17.47)

软件包:keepalived,ipvsadm,httpd

(1)两台LVS+Keepalived的主备服务器安装ipvsadm与keepalived

[root@lvs1 ~]# yum install -y ipvsadm keepalived

[root@lvs2 ~]# yum install -y ipvsadm keepalived

(2) 配置keepalived主备与lvs

[root@lvs1 ~]# cp /etc/keepalived/keepalived.conf{,.bak} #先备份

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

! Configuration File for keepalived

global_defs {

  notification_email {

    root@localhost

  }

  notification_email_from keepalived@localhost

  smtp_server 127.0.0.1

  smtp_connect_timeout 30

  router_id node1

  vrrp_mcast_group4 224.100.100.100

}

vrrp_instance VI_1 {

    state MASTER

    interface eth0

    virtual_router_id 66

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 123456

    }

    virtual_ipaddress {

        192.168.17.100 dev eth0 label eth0:1

    }

}

virtual_server 192.168.17.100 80 {

    delay_loop 6

    lb_algo wrr

    lb_kind DR

    protocol TCP

    sorry_server 127.0.0.1 80

    real_server 192.168.17.27 80 {

        weight 1

        HTTP_GET {

            url {

              path /

              status_code 200

            }

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }

    }

    real_server 192.168.17.37 80 {

        weight 1

        HTTP_GET {

            url {

              path /

              status_code 200

            }

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        } 

    }

}

#从节点配置与以上大致一样,只需修改三项

# router_id node1 ----> router_id node2

# state MASTER ----> state BACKUP

# priority 100  ---->  priority 80

(3)配置RS1与RS2服务器,先安装httpd服务,再配置RS服务器的VIP与内核参数

#RS1

[root@rs1 ~]# yum install -y httpd

[root@rs1 ~]# echo 192.168.17.27 RS1 > /var/www/html/index.html

[root@rs1 ~]# systemctl start httpd

[root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

[root@rs1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

[root@rs1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

[root@rs1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

[root@rs1 ~]# ifconfig lo:1 192.168.17.100/32

#RS2

[root@rs2 ~]# yum install -y httpd

[root@rs2 ~]# echo 192.168.17.37 RS1 > /var/www/html/index.html

[root@rs2 ~]# systemctl start httpd

[root@rs2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

[root@rs2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

[root@rs2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

[root@rs2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

[root@rs2 ~]# ifconfig lo:1 192.168.17.100/32

(4)在Keepalived主节点与备节点启动keepalived服务,使用ipvsadm查看LVS集群,并查看VIP的绑定情况

[root@lvs1 ~]# systemctl start keepalived

[root@lvs2 ~]# systemctl start keepalived

[root@lvs1 ~]# 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.27.100:80 wrr

  -> 192.168.27.27:80            Route  1      0          0       

  -> 192.168.27.37:80            Route  1      0          0

[root@lvs1 ~]#  ip a |grep 192.168.27.100    #VIP绑定在主节点上

    inet 192.168.17.100/32 scope global eth0:1

(5) 在客户端测试LVS的调度情况及故障转移情况

[root@client ~]# while true;do curl 192.168.17.100 ;sleep 1;done

192.168.17.27 RS1

192.168.17.37 RS2

192.168.17.27 RS1

192.168.17.37 RS2

192.168.17.27 RS1

192.168.17.37 RS2

...

#下面先测试VS服务器(keepalived)的主备故障转移

[root@lvs1 ~]# systemctl stop keepalived

[root@lvs1 ~]# ip a |grep 192.168.17.100    #主节点上的VIP已转移

[root@lvs2 ~]# ip a |grep 192.168.17.100    #VIP已绑定在备节点上,而且访问也未断

    inet 192.168.17.100/32 scope global eth0:1

[root@lvs1 ~]# systemctl start keepalived    #重新启动主节点

[root@lvs1 ~]#  ip a |grep 192.168.17.100    #主节点又取得VIP

    inet 192.168.17.100/32 scope global eth0:1

[root@lvs2 ~]# ip a |grep 192.168.17.100    #备节点VIP已释放

#下面测试RS服务器故障时,lvs的调度情况

#一开始是轮询的调度的,现在关掉RS1的httpd服务

[root@rs1 ~]# systemctl stop httpd

#短暂的失败后,后续的访问全调度给RS2了

[root@client ~]# while true;do curl 192.168.17.100 ;sleep 1;done

192.168.17.27 RS1

192.168.17.37 RS2

192.168.17.27 RS1

192.168.17.37 RS2

curl: (7) Failed connect to 192.168.17.100:80; Connection refused

192.168.17.37 RS2

curl: (7) Failed connect to 192.168.17.100:80; Connection refused

192.168.17.37 RS2

curl: (7) Failed connect to 192.168.17.100:80; Connection refused

192.168.17.37 RS2

curl: (7) Failed connect to 192.168.17.100:80; Connection refused

192.168.17.37 RS2

curl: (7) Failed connect to 192.168.17.100:80; Connection refused

192.168.17.37 RS2

curl: (7) Failed connect to 192.168.17.100:80; Connection refused

192.168.17.37 RS2

192.168.17.37 RS2

#恢复RS1的httpd服务

[root@rs1 ~]# systemctl start httpd

#等RS1重新连接正常后,可以看到后续也参与了调度

[root@client ~]# while true;do curl 192.168.17.100 ;sleep 1;done

192.168.17.37 RS2

192.168.17.37 RS2

192.168.17.37 RS2

192.168.17.37 RS2

192.168.17.37 RS2

192.168.17.37 RS2

192.168.17.37 RS2

192.168.17.37 RS2

192.168.17.37 RS2

192.168.17.27 RS1

192.168.17.37 RS2

...

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351