LVS集群之NAT模式

集群的分类:

(1)HA:高可用集群,有叫双机热备

原理:两台机器A、B,正常是A提供服务,当A机宕机或者服务有问题时,会切换到B机继续提供服务
常用的高了永软件:heartbeat和keepalived(可以做负载均衡)

(2)LB:负载均衡集群。

(3)HPC:高性能计算集群

咱们这里讲负载均衡集群。

负载均衡的实现方式:

1:通过硬件的实现:F5负载均衡器

2:软件的实现。LVS(四层,传输层),nginx反向代理(七层,应用层)

LVS的实现由三种方式:

(a)NAT(网络地址映射):通过网络地址转换的方法来实现调度 

     优点:支持所有操作系统及私有网络,且只需一个公网 IP 地址
     缺点:用户请求和响应报文都必须经过dr地址重写,当用户请求越来越多时,调度器的处理能力将成为瓶颈。
 (b)DR(直接路由模式):通过改写请求报文的MAC地址,将请求发送到 rs,而 rs 将响应直接返回给客户。性能最好
 (c)TUN(IP隧道模式):dr采用IP隧道技术将用户请求转发到某个rs,而这个rs将直接响应用户请求,不再经过dr,dr只处理用户的报文请求,从而使集群系统吞吐量大大提高。

 下面来搭建LVS-NAT模式集群实现负载均衡。

 

环境:

 

 

主机名 IP 系统 角色
dir 192.168.199.8/192.168.209.8 rhel7.4 分发器
node1 192.168.199.67 rhel6.5 real server1
node2 192.168.199.68 rhel6.5 real server1

dip:192.168.199.8

vip:192.168.209.8

rip1:192.168.199.67

rip2:192.168.199.68

分发器配置:

分发器有两个网卡,一个网卡和内网连接,一个网卡和外网连接

  • ens33:192.168.199.8:这张网卡对应一个封闭的内网,不能访问外网资源,外网也不能直接通过这个IP访问这台主机;(这台主机不用配置网关)
  • ens37:192.168.209.8:这张网卡设置的IP可以访问外网,也可以被外网访问。

1、安装lvs核心软件包:

[root@dir ~]# yum install ipvsadm -y
2、写脚本管理(开启路由转发,添加虚拟服务,添加虚拟服务后端的real server)

[root@dir ~]# vim lvs_nat.sh

#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/ens37/send_redirects
iptables -t nat -F
iptables -t nat -X  
iptables -t nat -A POSTROUTING -s 192.168.199.0/24 -j MASQUERADE
IPVSADM='/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t 192.168.209.8:80 -s rr
$IPVSADM -a -t 192.168.209.8:80 -r 192.168.199.67:80 -m
$IPVSADM -a -t 192.168.209.8:80 -r 192.168.199.68:80 -m

参数说明:

-A:增加一个虚拟服务IP
-a:增加real server
-r:指定real server 的 IP地址
-t:表示TCP服务       
-s:指定调度算法   rr:轮询算法(对调度算法感兴趣的大家可以查查~)
-m(masquerade):也就是NAT方式的LVS
[root@dir ~]# chmod +x lvs_nat.sh  增加执行权限
[root@dir ~]# ./lvs_nat.sh
查看规则:
[root@dir ~]# 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.209.8:80 rr
  -> 192.168.199.67:80            Masq    1      0          0         
  -> 192.168.199.68:80            Masq    1      0          0
real server配置
rs1:192.168.199.67
rs2:192.168.199.68
rs1和rs2都要修改网卡配置文件:  /etc/sysconfig/network-scripts/ifcfg-eth0
1、网关GATEWAY都要指向分发器 dir 的 IP,192.168.199.8(不要写成vip了啊)

rs1和rs2都这样配置

2、重启网卡使配置生效

测试:

在rs1和rs2上安装Apache服务,然后下一个测试页面

rs1:echo 'this is 192.168.199.67' > /var/www/html/index.html

rs2: echo 'this is 192.168.199.68' > /var/www/html/index.html

在dir上访问vip:

1、不设置权重进行测试(上面的脚本就是这样):

[root@dir ~]# curl 192.168.209.8
this is 192.168.199.68
[root@dir ~]# curl 192.168.209.8
this is 192.168.199.67
[root@dir ~]# curl 192.168.209.8
this is 192.168.199.68
[root@dir ~]# curl 192.168.209.8
this is 192.168.199.67
[root@dir ~]# curl 192.168.209.8
this is 192.168.199.68
[root@dir ~]# curl 192.168.209.8
this is 192.168.199.67
2、设置权重进行测试(rs1:3,rs2:1),修改一下脚本

$IPVSADM -A -t 192.168.209.8:80 -s wrr
$IPVSADM -a -t 192.168.209.8:80 -r 192.168.199.67:80 -m -w 3
$IPVSADM -a -t 192.168.209.8:80 -r 192.168.199.68:80 -m -w 1

[root@dir ~]# ./lvs_nat.sh
[root@dir ~]# 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.209.8:80 wrr
  -> 192.168.199.67:80            Masq    3      0          0         
  -> 192.168.199.68:80            Masq    1      0          0

查看结果:

[root@dir ~]# curl 192.168.209.8
this is 192.168.199.68
[root@dir ~]# curl 192.168.209.8
this is 192.168.199.67
[root@dir ~]# curl 192.168.209.8
this is 192.168.199.67
[root@dir ~]# curl 192.168.209.8
this is 192.168.199.67
[root@dir ~]# curl 192.168.209.8
this is 192.168.199.68
[root@dir ~]# curl 192.168.209.8
this is 192.168.199.67
[root@dir ~]# curl 192.168.209.8
this is 192.168.199.67
[root@dir ~]# curl 192.168.209.8
this is 192.168.199.67

完美结束。

下一篇讲LVS的其他模式,希望对大家有所帮助。

最后在说一句啊。当有问题的时候怎么清空规则呢???

[root@dir ~]# ipvsadm -C

[root@dir ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[root@dir ~]#

 

posted @ 2018-12-01 23:50  winterforever  阅读(362)  评论(0编辑  收藏  举报