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

[经验分享] CentOS 7 部署LVS集群(DR模式、NAT模式,LVS+keepalived)

[复制链接]

尚未签到

发表于 2018-12-29 09:20:38 | 显示全部楼层 |阅读模式
  1.简介
  1.1LVS

   linux虚拟服务器,是一个虚拟的服务器集群系统,可以在Unix和linux平台下实现负载均衡集群的功能。
  1.2LVS与nginx的对比
  1)工作在网络模型的7层,可以针对http应用做一些分流的策略,nginx单凭这点可利用的场合远多于LVS。
    2)最新版的nginx也支持4层TCP负载,这曾是LVS的优势。
    3)nginx对网络稳定性的依赖小,相反LVS对网络稳定性依赖大。
    4)nginx安装和配置比较简单,测试起来比较方便,基本上能把错误用日志打印出来。LVS的配置、测试就要花比较长的时间,对网络依赖较大。
  1.3搭建LVS的原因
    1)日1000-2000W PV或并发请求1万以下都可考虑nginx
    2)大型门户网站、电商网站需要用到LVS。
  1.4LVS集群的工作模式
  1)DR模式:通过改写请求报文的目标MAC地址,将请求发送给真实服务器,而真实服务器将相应后的处理结果直接返还给客户端用户。极大地提高集群的伸缩性,但LB与RS必须在同一局域网环境。
    2)NAT模式:
  通过网络地址转换,LB重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器,真实服务器的响应报文处理之后,返回时必须通过LB,经过LB时报文的源地址被重写,再返回给客户。

    3)隧道模式:LB把请求的报文通过IP隧道转发至真实服务器,而真实服务器将响应处理后直接返回给客户端用户。
    4)FULLNAT模式:数据包进入时,除了做DNAT,还做SNAT,从而实现LVS-RealServer间可以跨vlan通讯,RealServer只需要连接到内网。
  2.环境准备
   1)关闭防火墙和Selinux

    2)主机名及IP地址关系如下:
    lb01      10.0.0.5
    lb042     10.0.0.6
    web03  10.0.0.17
    web04  10.0.0.18
    3)web03和web04安装Tomcat软件,并满足下面条件:
    curl http://10.0.0.17  页面底部得到结果为web03
    curl http://10.0.0.18  页面底部得到结果为web04
  3.ipvsadm管理LVS负载集群(DR模式)
  3.1安装ipvsadm管理工具(只在lb01操作)
  [root@lb01 ~]# yum install -y ipvsadm
  说明:默认没有加载模块,需要安装管理工具才能激活
  3.2查看LVS状态,并激活LVS内核模块
  [root@lb01 ~]# ipvsadm
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
    -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  [root@lb01 ~]# lsmod | grep ip_vs
  ip_vs_rr               12600  0
  ip_vs                 140944  2 ip_vs_rr
  nf_conntrack          105745  1 ip_vs
  libcrc32c              12644  2 xfs,ip_vs
  3.3在eth0网卡绑定VIP地址(只在lb01操作)

  [root@lb01 ~]# ip addr add 10.0.0.13/24 dev eth0
  [root@lb01 ~]# ip a s eth0
  2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
      link/ether 00:0c:29:a6:ba:9e brd ff:ff:ff:ff:ff:ff
      inet 10.0.0.5/24 brd 10.0.0.255 scope global eth0
         valid_lft forever preferred_lft forever
      inet 10.0.0.13/24 scope global secondary eth0
         valid_lft forever preferred_lft forever
      inet6 fe80::20c:29ff:fea6:ba9e/64 scope link
         valid_lft forever preferred_lft forever
  3.4清除所有LVS规则(只在lb01操作)
  [root@lb01 ~]# ipvsadm -C
  3.5设置tcp、tcpfin、udp连接超时时间
  [root@lb01 ~]# ipvsadm --set 30 5 60
  3.6添加虚拟服务(只在lb01操作)
  [root@lb01 ~]# ipvsadm -A -t 10.0.0.13:80 -s wrr -p 20
  3.7将虚拟服务关联到真实服务上(只在lb01操作)
  [root@lb01 ~]# ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.17:80 -g -w 1
  [root@lb01 ~]# ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.18:80 -g -w 1
  [root@lb01 ~]# ipvsadm -ln
  IP Virtual Server version 1.2.1 (size=4096)
  Prot LocalAddress:Port Scheduler Flags
    -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  TCP  10.0.0.13:80 wrr persistent 20
    -> 10.0.0.17:80                 Route   1      0          0         
    -> 10.0.0.18:80                 Route   1      0          0  
  3.8在lo网卡绑定VIP地址(web03、web04同时操作)
  ip addr add 10.0.0.13/24 dev lo
  3.9修改内核参数抑制ARP响应(web03、web04同时操作)
  cat /etc/sysctl.conf

  net.ipv4.conf.all.arp_ignore = 1
  net.ipv4.conf.all.arp_announce = 2
  net.ipv4.conf.lo.arp_ignore = 1
  net.ipv4.conf.lo.arp_announce = 2
  3.10浏览器访问http://10.0.0.13
  4.LVS+keepalived(DR模式)

  4.1安装keepalived(lb01、lb02同时操作)
  yum install -y keepalived
  4.2修改lb01的keepalived配置文件
  [root@lb01 ~]# cat /etc/keepalived/keepalived.conf
  global_defs {
     router_id LVS_01
  }
  vrrp_instance VI_1 {
      state MASTER
      interface eth0
      virtual_router_id 51
      priority 150
      advert_int 1
      authentication {
          auth_type PASS
          auth_pass 1111
      }
      virtual_ipaddress {
       10.0.0.13/24
      }
  }
  virtual_server 10.0.0.13 80 {
      delay_loop 6         
      lb_algo wrr               
      lb_kind DR              
      nat_mask 255.255.255.0
      persistence_timeout 50     
      protocol TCP               
      real_server 10.0.0.17 80 {
          weight 1              
          TCP_CHECK {
          connect_timeout 8      
          nb_get_retry 3
          delay_before_retry 3
          connect_port 80
          }
      }
      real_server 10.0.0.18 80 {
          weight 1              
          TCP_CHECK {
          connect_timeout 8      
          nb_get_retry 3
          delay_before_retry 3
          connect_port 80
          }
      }
  }
  4.3修改lb02的keepalived配置文件
[root@lb02 ~]# cat /etc/keepalived/keepalived.conf
global_defs {
   router_id LVS_02
}


vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
     10.0.0.13/24
    }
}


virtual_server 10.0.0.13 80 {
    delay_loop 6         
    lb_algo wrr               
    lb_kind DR              
    nat_mask 255.255.255.0
    persistence_timeout 50     
    protocol TCP               


    real_server 10.0.0.17 80 {
        weight 1              
        TCP_CHECK {
        connect_timeout 8      
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }


    real_server 10.0.0.18 80 {
        weight 1              
        TCP_CHECK {
        connect_timeout 8      
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
}
  4.4启动keepalived
  systemctl start keepalived.service
  4.5测试keepalived高可用,故障转移
4.6在lo网卡绑定VIP地址(web03、web04同时操作)
ip addr add 10.0.0.13/24 dev lo


4.7修改内核参数抑制ARP响应(web03、web04同时操作)
cat /etc/sysctl.conf

net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
  4.8浏览器访问http://10.0.0.13(测试keepalived健康检查)
  5.ipvsadm管理LVS负载集群(NAT模式)
  5.1安装ipvsadm管理工具(只在lb01操作)
[root@lb01 ~]# yum install -y ipvsadm
说明:默认没有加载模块,需要安装管理工具才能激活


5.2查看LVS状态,并激活LVS内核模块
[root@lb01 ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[root@lb01 ~]# lsmod | grep ip_vs
ip_vs_rr               12600  0
ip_vs                 140944  2 ip_vs_rr
nf_conntrack          105745  1 ip_vs
libcrc32c              12644  2 xfs,ip_vs


5.3在eth0网卡绑定VIP地址(只在lb01操作)

[root@lb01 ~]# ip addr add 10.0.0.13/24 dev eth0
[root@lb01 ~]# ip a s eth0
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:a6:ba:9e brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.5/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.0.0.13/24 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fea6:ba9e/64 scope link
       valid_lft forever preferred_lft forever


5.4清除所有LVS规则(只在lb01操作)
[root@lb01 ~]# ipvsadm -C
  5.5设置tcp、tcpfin、udp连接超时时间(只在lb01操作)
[root@lb01 ~]# ipvsadm --set 30 5 60


  5.6添加虚拟服务(只在lb01操作)
[root@lb01 ~]# ipvsadm -A -t 10.0.0.13:80 -s rr -p 20
  5.7将虚拟服务关联到真实服务上(只在lb01操作)
  ipvsadm -a -t 10.0.0.13:80 -r 172.16.1.203:80 -m
  ipvsadm -a -t 10.0.0.13:80 -r 172.16.1.204:80 -m
  5.9开启路由转发功能(只在lb01操作)
  [root@lb01 ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
  [root@lb01 ~]# sysctl -p
  5.10清空iptables规则(只在lb01操作)
  [root@lb01 ~]# iptables -F
  [root@lb01 ~]# iptables -F -t nat
  5.11添加nat转换规则(只在lb01操作)
  [root@lb01 ~]# iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE
  5.12RS服务器内网网卡添加虚拟网关(web03、web04同时操作)
  echo "GATEWAY=172.16.1.13" >> /etc/sysconfig/network-scripts/ifcfg-eth1

  5.13浏览器访问http://10.0.0.15
  6.LVS+keepalived(NAT模式)
  6.1安装keepalived(lb01、lb02同时操作)
yum install -y keepalived


6.2修改lb01的keepalived配置文件
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
  global_defs {
     router_id LVS_DEVEL
  }
  vrrp_instance VI_1 {
      state MASTER
      interface eth0
      virtual_router_id 51
      priority 150
      advert_int 1
      authentication {
          auth_type PASS
          auth_pass 1111
      }
      virtual_ipaddress {
      10.0.0.13/24 dev eth0 label eth0:1
      }
  }
  vrrp_instance VI_2 {
      state MASTER
      interface eth1
      virtual_router_id 52
      priority 150
      advert_int 1
      authentication {
          auth_type PASS
          auth_pass 1112
      }
      virtual_ipaddress {
      172.16.1.13/24 dev eth1 label eth1:1
      }
  }
  virtual_server 10.0.0.13 80 {
      delay_loop 6
      lb_algo rr
      lb_kind NAT
      nat_mask 255.255.255.0
      persistence_timeout 50
      protocol TCP
                
      real_server 172.16.1.17 80 {
          weight 1              
          TCP_CHECK {
          connect_timeout 8      
          nb_get_retry 3
          delay_before_retry 3
          connect_port 80
          }
      }
      real_server 172.16.1.18 80 {
          weight 1              
          TCP_CHECK {
          connect_timeout 8      
          nb_get_retry 3
          delay_before_retry 3
          connect_port 80
          }
      }
  }
  6.3修改lb02的keepalived配置文件
  [root@lb02 ~]# cat /etc/keepalived/keepalived.conf
  global_defs {
     router_id LVS_DEVEL1
  }
  vrrp_instance VI_1 {
      state BACKUP
      interface eth0
      virtual_router_id 51
      priority 100
      advert_int 1
      authentication {
          auth_type PASS
          auth_pass 1111
      }
      virtual_ipaddress {
      10.0.0.13/24 dev eth0 label eth0:1
      }
  }
  vrrp_instance VI_2 {
      state BACKUP
      interface eth1
      virtual_router_id 52
      priority 100
      advert_int 1
      authentication {
          auth_type PASS
          auth_pass 1112
      }
      virtual_ipaddress {
      172.16.1.13/24 dev eth1 label eth1:1
      }
  }
  virtual_server 10.0.0.13 80 {
      delay_loop 6
      lb_algo rr
      lb_kind NAT
      nat_mask 255.255.255.0
      persistence_timeout 50
      protocol TCP
                
      real_server 172.16.1.17 80 {
          weight 1              
          TCP_CHECK {
          connect_timeout 8      
          nb_get_retry 3
          delay_before_retry 3
          connect_port 80
          }
      }
      real_server 172.16.1.18 80 {
          weight 1              
          TCP_CHECK {
          connect_timeout 8      
          nb_get_retry 3
          delay_before_retry 3
          connect_port 80
          }
      }
  }
  6.4开启路由转发功能(lb01、lb02同时操作)
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p
  6.5清空iptables规则(lb01、lb02同时操作)
iptables -F
iptables -F -t nat


6.6添加nat转换规则(lb01、lb02同时操作)
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE


6.7防止keepalived脑裂(lb01、lb02同时操作)
iptables -A INPUT -i eth0 -p vrrp -j ACCEPT


6.8启动keepalived
systemctl start keepalived.service


6.8RS服务器内网网卡添加虚拟网关(web03、web04同时操作)
echo "GATEWAY=172.16.1.13" >> /etc/sysconfig/network-scripts/ifcfg-eth1



  6.9浏览器访问http://10.0.0.13




运维网声明 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-657081-1-1.html 上篇帖子: Linux下安装配置使用 Keepalived 下篇帖子: keepalived+LVS的基本使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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