centos 7.6 ——LVS+NAT负载均衡群集

LVS+NAT负载均衡群集

一、企业群集应用

1. 群集的含义

  • Cluster,集群、群集
  • 由多台主机构成,但对外只表现为一个整体

问题

  • 互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数
  • 据可靠性等要求越来越高,单台服务器力不从心

2. 企业群集分类

(1)根据群集所针对的目标差异,可分为三种类型

  • 负载均衡群集
  • 高可用群集
  • 高性能运算群集

负载均衡群集(Load Balance Cluster)

  • 提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟

  • 为目标,获得高并发、高负载(LB)的整体性能

  • LB的负载分配依赖于主节点的分流算法

高可用群集(High Availability Cluster)

  • 提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果

  • HA的工作方式包括双工和主从两种模式

高性能运算群集(High Performance Computer Cluster)

  • 提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力

  • 高性能依赖于“分布式运算”、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力

3. 负载均衡的结构

  • 第一层,负载调度器(Load Balancer或Director)
  • 第二层,服务器池(Server Pool)
  • 第三层,共享存储(Share Storage)
    在这里插入图片描述

4. 负载均衡群集工作模式分析

  • 负载均衡群集是目前企业用得最多的群集类型

  • 群集的负载调度技术有三种工作模式

    地址转换

    IP隧道

    直接路由

4.1 NAT模式

  • Network Address Translation,简称NAT模式
  • 类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口
  • 服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式

4.2 TUN模式

(1)IP隧道

  • IP Tunnel,简称TUN模式
  • 采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,而不再经过负载调度器
  • 服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信

4.3 DR模式

  • Direct Routing,简称DR模式
  • 采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络
  • 负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道

5. 关于LVS虚拟服务器

  • Linux Virtual Server
  • 针对Linux内核的负载均衡解决方案
  • 1998年5月,由我国的章文嵩博士创建
  • 官方网站:http://www.linuxvirtualserver.org/

5.1 LVS的负载调度算法

(1)轮询(Round Robin)

  • 将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器),均等地对待每一台服务器,而不管服务器实际的连接数和系统负载

(2)加权轮询(Weighted Round Robin)

  • 根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多
  • 保证性能强的服务器承担更多的访问流量

5.2 LVS的负载调度算法

(1)最少连接(Least Connections)

  • 根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点

(2)加权最少连接(Weighted Least Connections)

  • 在服务器节点的性能差异较大时,可以为真实服务器自动调整权重 性能较高的节点将承担更大比例的活动连接负载

5.3 使用ipvsadm工具

LVS群集创建与管理

  • 创建虚拟服务器
  • 添加、删除服务器节点
  • 查看群集及节点情况
  • 保存负载分配策略

5.4 Network File System,网络文件系统

  • 依赖于RPC(远端过程调用)
  • 需安装nfs-utils、rpcbind软件包
  • 系统服务:nfs、rpcbind
  • 共享配置文件:/etc/exports

二、实验:搭建出nfs网络文件存储服务

1. 实验目的

  • win10客户机访问12.0.0.1的网址,通过nat地址转换,轮询的访问到Apache1和Apache2主机
    搭建出nfs网络文件存储服务

2. 实验环境

  • 负载均衡调度服务器 配置双网卡作为网关,路由转发
    192.168.100.1
    12.0.0.1
  • 节点服务器 Apache1 : 192.168.100.134 24 Apache2: 192.168.100.155 24
  • nfs 文件共享服务器 192.168.100.144
  • 客户机用于测试 12.0.0.23 24

3. 实验步骤

(1)nfs 网络文件系统服务器配置


[root@localhost html]# iptables -F
[root@localhost html]# setenforce 0

先使用nat模式将rpcbind   nfs-utills 安装好

[root@localhost ~]# rpm -q rpcbind
rpcbind-0.2.0-47.el7.x86_64

[root@localhost ~]# rpm -q nfs-utils 
nfs-utils-1.3.0-0.61.el7.x86_64

  • 之后改为仅主机模式修改网卡信息

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=80f87e54-24ac-404a-bc28-c3704d4c197a
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.144
GATEWAY=192.168.100.2
NETMASK=255.255.255.0
PREFIX=24

  • 新建挂载点目录文件 web benet

[root@localhost opt]# mkdir benet web
[root@localhost opt]# ll
总用量 0
drwxr-xr-x. 2 root root 6 831 13:52 benet
drwxr-xr-x. 2 root root 6 1031 2018 rh
drwxr-xr-x. 2 root root 6 831 13:52 web

注意: 输入格式,不能有空格,如果有空格不会报错但是无法共享文件目录

[root@localhost opt]# vim /etc/exports

/opt/web    192.168.100.0/24(rw,sync,no_root_squash)
/opt/benet    192.168.100.0/24(rw,sync,no_root_squash)

  • 测试检查
[root@localhost opt]# systemctl start nfs
[root@localhost opt]#  systemctl start rpcbind
[root@localhost opt]# netstat -ntap |grep rpc
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      11914/rpc.mountd    
tcp        0      0 0.0.0.0:58757           0.0.0.0:*               LISTEN      9007/rpc.statd      
tcp6       0      0 :::20048                :::*                    LISTEN      11914/rpc.mountd    
tcp6       0      0 :::35266                :::*                    LISTEN      9007/rpc.statd      
[root@localhost opt]# 
  • 查看挂载情况

[root@localhost opt]# showmount -e
Export list for localhost.localdomain:
/opt/benet 192.168.100.0/24
/opt/web   192.168.100.0/24

(2)两个Apache服务器配置

[root@localhost html]# iptables -F
[root@localhost html]# setenforce 0
在nat模式下

yum -y install httpd

之后配置仅主机模式

Apache1:192.168.100.134

Apache2:192.168.100.155

  • Apache1 服务器配置挂载:

vim /etc/ftabs

192.168.100.144:/opt/web  /var/www/html  nfs defaults 0 0

[root@localhost ~]# mount -a    //重新加载挂载的配置文件
[root@localhost ~]# df -Th
文件系统                 类型      容量  已用  可用 已用% 挂载点
/dev/sda3                xfs       182G  4.1G  178G    3% /
devtmpfs                 devtmpfs  2.0G     0  2.0G    0% /dev
tmpfs                    tmpfs     2.0G     0  2.0G    0% /dev/shm
tmpfs                    tmpfs     2.0G   11M  2.0G    1% /run
tmpfs                    tmpfs     2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/sda1                xfs      1014M  174M  841M   18% /boot
tmpfs                    tmpfs     406M   24K  406M    1% /run/user/0
192.168.100.144:/opt/web nfs4      150G  3.9G  147G    3% /var/www/html
[root@localhost ~]# 
[root@localhost html]# pwd
/var/www/html
[root@localhost html]# vim index.html 


<html><body><h1>this is accp !!!!!!!</h1></body></html>


[root@localhost html]# systemctl restart httpd

  • Apache2 192.168.100.155服务器配置挂载
vim /etc/ftabs

192.168.100.144:/opt/benet /var/www/html  nfs defaults 0 0

[root@localhost ~]# mount -a      //验证挂载情况
[root@localhost ~]# df -Th
文件系统                   类型      容量  已用  可用 已用% 挂载点
/dev/sda3                  xfs        50G  4.2G   46G    9% /
devtmpfs                   devtmpfs  906M     0  906M    0% /dev
tmpfs                      tmpfs     922M     0  922M    0% /dev/shm
tmpfs                      tmpfs     922M   11M  911M    2% /run
tmpfs                      tmpfs     922M     0  922M    0% /sys/fs/cgroup
/dev/sda5                  xfs       246G   33M  246G    1% /home
/dev/sda1                  xfs      1014M  163M  852M   17% /boot
tmpfs                      tmpfs     185M  4.0K  185M    1% /run/user/42
tmpfs                      tmpfs     185M   20K  185M    1% /run/user/0
/dev/sr0                   iso9660   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
192.168.100.144:/opt/benet nfs4      150G  3.9G  147G    3% /var/www/html
[root@localhost ~]# 
[root@localhost html]# pwd
/var/www/html
[root@localhost html]# vim index.html 


<html><body><h1>this is benet !!!!!!!</h1></body></html>


[root@localhost html]# systemctl restart httpd

(3) 负载均衡服务器配置

  • 网关设置双网卡
  • 加载ip_vs模块,安装ipvsadm工具并设置LVS网卡
  • 确认内核对LVS的支持
[root@localhost~]# modprobe ip_vs
[root@localhost~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn

  • 双网卡设置作为内网卡网关设置

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=e0fb0f4e-fd67-423e-9f33-eab94c271e8a
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.1   
NETMASK=255.255.255.0

  • 作为外网卡网关设置
[root@localhost ~]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]# vim ifcfg-ens36 


删除UUID

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=12.0.0.1
NETMASK=255.255.255.0
PREFIX=24


[root@localhost network-scripts]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:ea:11:51 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.1/24 brd 192.168.100.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::236e:db25:cfa3:701/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:ea:11:5b brd ff:ff:ff:ff:ff:ff
    inet 12.0.0.1/24 brd 12.0.0.255 scope global noprefixroute ens36
       valid_lft forever preferred_lft forever
    inet6 fe80::59b:70fc:aa64:e03d/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:3f:48:87 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:3f:48:87 brd ff:ff:ff:ff:ff:ff
[root@localhost network-scripts]# 

  • 设置路由转发,指定ip服务池节点
[root@localhost opt]# vim na.sh
#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward       // 开启路由转发功能
ipvsadm -C                                                      //清除内核虚拟机服务器中的所有记录
ipvsadm -A -t 127.0.0.1:80 -s rr   //指定虚拟ip,轮询
ipvsadm -a -t 127.0.0.1:80 -r 192.168.100.134:80 -m    //指定真实的调度服务器
ipvsadm -a -t 127.0.0.1:80 -r 192.168.100.155:80 -m     //指定真实的调度服务器
ipvsadm   //开启服务

[root@localhost opt]# chmod 777 na.sh 
[root@localhost opt]# ll
总用量 4
-rwxrwxrwx. 1 root root 206 831 15:37 na.sh
drwxr-xr-x. 2 root root   6 1031 2018 rh
[root@localhost opt]# ./na.sh 
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  localhost.localdomain:http rr
  -> 192.168.100.134:http         Masq    1      0          0         
  -> 192.168.100.155:http         Masq    1      0          0         
[root@localhost opt]# 

  • 设置路由转发
[root@localhost opt]# vim /etc/sysctl.conf

net.ipv4.ip_forward=1

[root@localhost opt]# sysctl -p
net.ipv4.ip_forward = 1
  • 清空防火墙表规则,并这种NAT地址转换

[root@localhost opt]# iptables -t nat -F
[root@localhost opt]# iptables -t nat -A POSTROUTING -o ens33 -s 192.168.100.0/24 -j SNAT --to-source 12.0.0.1 

[root@localhost opt]# ipvsadm --save > /etc/sysconfig/ipvsadm
[root@localhost opt]# systemctl start ipvsadm.service

(4)客户机win10 测试

  • 客户机ip地址:12.0.0.21 24

浏览器输入12.0.0.1

在这里插入图片描述在这里插入图片描述

  • 就能访问到Apache1主机和Apache1主机网页
  • 遵循轮询后台算法,注意:浏览器清理缓存
  • apache 1 和Apache2 、负载均衡服务器、客户机网络应该是互通

猜你喜欢

转载自blog.csdn.net/weixin_42099301/article/details/108319995