集群的分类:

(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 ~]#

LVS集群之NAT模式的更多相关文章

  1. LVS集群之NAT模式实现

    LVS集群之NAT模式实现 一.集群的种类 集群系统主要分为 1.HA:高可用集群,又叫双机热备.   (a)原理      2台机器A,B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至 ...

  2. Linux系统(四)负载均衡LVS集群之NAT模式

    序言 提到LVS,就从章文嵩博士开始吧,反正也不知道如何下笔来写这一篇.章大博士,读博时候创建这个lvs软件项目,但是他提倡开源精神,在用户的建议和反馈中,这个花了他两周时间开发的开源软件不断得到改建 ...

  3. LVS集群之NAT模式实例(3)

    LVS集群NAT模式实例 1. 实验拓扑图 DS 必须有两块网卡,需要在上面做NAT. 2. 实验环境 3台CentOS6.4 64bit的服务器. 类型 IP DR eth0:10.20.73.20 ...

  4. Linux系统(五)负载均衡LVS集群之DR模式

    序言 DR模式是lvs集群中三种负载均衡模式的其中一种,那么上一篇中我写啦关于NAT模式的搭建与原理,为什么还要有DR模式与IP隧道模式呢? 首先我们来看3张图.LVS/NAT模式如下图: LVS/I ...

  5. LVS集群之DR模式 实现

    ps:做 dr 模式 之前,先把之前做过的操作清空掉 1.ipvsadm -ln 查看规则 2.ipvsadm -C 清空规则 3.ipvsadm -ln 确认 4.iptables -t nat - ...

  6. LB负载均衡集群及NAT模式配置

    一.LB(load balance)负载均衡集群 负载均衡集群常用的有: 1.软件实现的 nginx(工作在OSI第七层应用层) lvs+keepalived(工作在OSI第四层传输层) 2.硬件实现 ...

  7. LVS集群之DR模式

    今天来讲LVS-DR模式集群实现负载均衡的搭建方法 环境 主机名 IP   系统 角色 dir DIP:192.168.199.9 VIP:192.168.199.8 rhel7.4 集群服务器 no ...

  8. Linux系统(四)LVS集群负载均衡NAT模式

    序言 提到LVS,就从章文嵩博士开始吧,反正也不知道如何下笔来写这一篇.章大博士,读博时候创建这个lvs软件项目,但是他提倡开源精神,在用户的建议和反馈中,这个花了他两周时间开发的开源软件不断得到改建 ...

  9. centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课

    centos   LB负载均衡集群 三种模式区别 LVS/NAT 配置  LVS/DR 配置  LVS/DR + keepalived配置  nginx ip_hash 实现长连接  LVS是四层LB ...

随机推荐

  1. TreeSet——实现Comparable接口并重写CompareTo()方法

    TreeSet是以自然顺序存的数据,例如 Set<Student> students=new TreeSet(); students.add(new Student("111&q ...

  2. idea2019 Tomcat9 Tomcat Localhost log 乱码

    网上一顿搜索,基本没用,可能版本不一样. idea2019 tomcat9解决方案: 找到Tomcat的安装目录,进入conf目录 打开logging.properties 找到java.util.l ...

  3. 基于光线追踪的渲染中景深(Depth of field)效果的实现

    图形学离线渲染中常用的透视摄像机模型时根据小孔成像的原理建立的,其实现通常是从向成像平面上发射ray,并把trace这条ray的结果作为成像平面上对应交点的采样结果.即: 图片来自<Fundam ...

  4. Datasnap 获取客户端IP

    uses Data.DBXTransport; //ServerContainer procedure TServerContainer.DSServer1Connect(DSConnectEvent ...

  5. SpringBoot-整合Swagger2

    swagger2是一个用于生成.并能直接调用的可是话restful风格的服务 下面贴出springboot整合swagger2代码 一.maven依赖 这里使用的spring-boot版本是2.1.1 ...

  6. Action向视图传值的6种方式(转)

    在使用ASP.NET MVC进行项目开发时,经常会碰到从Action向视图传值的问题,今天我就把我所知道的方式总结了一下,分成了以下六种: 1.使用ViewData进行传值 在Action中,有如下代 ...

  7. 怎么处理系统蓝屏后提示代码0x000000d1的错误?

    电脑开机有时会出现蓝屏,导致蓝屏的原因有很多,每种错误都有不同的代码.下面就来和大家分享一下电脑开机蓝屏出现0x000000d1错误代码是什么原因?我们又该怎么去解决这个问题. 电脑开机蓝屏出现0x0 ...

  8. tftp client命令示例

    tftp 192.168.1.1 -c put myfile theirfile tftp 192.168.1.1 -m binary -c put myfile theirfile The tftp ...

  9. 2019-2020-1 20199319《Linux内核原理与分析》第一周作业

    一.Linux系统简介 通过实验一了解了Linux 的历史,Linux与windows之间的区别以及学习Linux的方法.因为一直用的都是windows系统,习惯了图形界面,而Linux是通过输入命令 ...

  10. windows控制台,cmd,命令提示符下的基础操作

    打开dos命令窗口1.win+r-->运行-->cmd 2.摁住shift+鼠标右击 选择 在此处打开命令窗口3.在磁盘某文件夹下,选择标题栏中输入框,输入cmd 回车 windows下常 ...