集群的分类:

(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. Java枚举相关知识

    JAVA枚举 很多编程语言都提供了枚举的概念,但是java直到1.5之后才提出了枚举的概念,出现比这个语言本身晚10年. 主要作用是用于定义有限个数对象的一种结构(多例设计),枚举就属于多例设计并且其 ...

  2. imx8移植opencv(3.0以上版本)笔记

    基本步骤参考我同事的博客:https://blog.csdn.net/hunzhangzui9837/article/details/89846928 以下是在移植到imx8平台时的笔记和遇到的问题及 ...

  3. vs2010 回车、退格键等不能用

    有时候在vs2010中,突然回退键.回车键.方向键就用不了了,百度一堆方法,最后找到按Alt+Enter,就可以用了.

  4. C#取绝对值函数

    System.Math.Abs(float value); System.Math.Abs(decimal value); System.Math.Abs(int value); System.Mat ...

  5. Boost Graph Library materials

    Needed to compute max flow in a project and found the official document of BGL to be rather obscure, ...

  6. python版本

    一般在Linux下,默认会安装一个python2.*的版本,但是我们自己开发有时候需要python3.*的版本 1. 安装python3 .安装依赖包 )首先安装gcc编译器,gcc有些系统版本已经默 ...

  7. PHP之50个开源项目

    GitHub上50个最受欢迎的PHP开源项目[2019] 1.Laravel Laravel是一个为Web开发者打造的PHP开发框架. GitHub Stars: 43.5k+ 网址: https:/ ...

  8. a标签 href不跳转 禁止跳转

    当页面中a标签不需要任何跳转时,从原理上来讲,可分如下两种方法: 标签属性href,使其指向空或不返回任何内容.如: <a href="javascript:void(0);" ...

  9. Flutter-动画-概念篇

    一.Flutter中的动画的基本概念图 二.Flutter各动画的概念 视图动画 补间动画 就是一个View,定义了起点和终点.时间以及运动曲线,并按照所定规则由起点运动到终点的过程. 帧动画 帧动画 ...

  10. element table 表格 修改背景为透明并去除边框

    .el-table{ /* 表格字体颜色 */ color:white; /* 表格边框颜色 */ /* border: 0.5px solid #758a99; */ height: 500px; ...