热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

超详细!LVSNAT部署实战

文章目录前言一:LVS负载均衡原理二:实验详情2.1:实验环境2.2:实验拓扑图2.3:实验目的2.4

文章目录

  • 前言
  • 一:LVS负载均衡原理
  • 二:实验详情
      • 2.1:实验环境
      • 2.2:实验拓扑图
      • 2.3:实验目的
      • 2.4:实验过程
          • 2.4.1:配置NFS服务器
          • 2.4.2:配置两台Apache服务器
          • 2.4.3:加载ip_vs模块,安装ipvsadm工具并设置LVS网卡
          • 2.4.4:修改win10IP地址
          • 2.4.5:保存规则并测试
      • 2.5:实验验证


前言
一:LVS负载均衡原理
  • 请查阅我的博客:https://blog.csdn.net/CN_TangZheng/article/details/103970776

二:实验详情

2.1:实验环境


  • VMware软件
  • 一台centos7作为LVS网关,双网卡
  • 两台centos7作为Apache服务器
  • 一台centos7作为NFS存储
  • 一台win10作为客户端

2.2:实验拓扑图

mark

2.3:实验目的


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

2.4:实验过程


2.4.1:配置NFS服务器

  • 添加两块硬盘,作为erbao和sanbao的挂载点

    mark

  • 格式化磁盘,创建挂载点

    [root@nfs ~]# fdisk -l '//重启后,查看两块硬盘是否被加载出来'
    [root@nfs ~]# fdisk /dev/sdb
    命令(输入 m 获取帮助):n'//选择创建磁盘'
    Partition type:p primary (0 primary, 0 extended, 4 free)e extended
    Select (default p): '//直接回车,选择默认'
    Using default response p
    分区号 (1-4,默认 1):
    起始 扇区 (2048-41943039,默认为 2048):'//直接回车,选择默认'
    将使用默认值 2048
    Last 扇区, +扇区 or +size
    {K,M,G} (2048-41943039,默认为 41943039):'//直接回车,选择默认'
    将使用默认值 41943039
    分区 1 已设置为 Linux 类型,大小设为 20 GiB命令(输入 m 获取帮助):w'//保存退出'
    The partition table has been altered!
    Calling ioctl() to re-read partition table.
    正在同步磁盘。
    '//同样方法新建磁盘/dev/sdc'
    [root@nfs ~]# fdisk /dev/sdb'//省略内容'
    [root@nfs ~]# mkdir /opt/erbao /opt/sanbao '//创建挂载目录'
    [root@nfs ~]# vim /etc/fstab
    '//...省略内容,添加一下两段自动挂载的设置'
    /dev/sdb1 /opt/erbao xfs defaults 0 0
    /dev/sdc1 /opt/sanbao xfs defaults 0 0
    [root@nfs ~]# mount -a '//全部挂载'
    [root@nfs ~]# df -h
    文件系统 容量 已用 可用 已用% 挂载点
    ...省里内容
    /dev/sdb1 20G 33M 20G 1% /opt/erbao
    /dev/sdc1 20G 33M 20G 1% /opt/sanbao

  • 关闭防火墙,安装NFS相关软件

    [root@nfs ~]# systemctl stop firewalld.service
    [root@nfs ~]# setenforce 0
    [root@nfs ~]# rpm -q nfs-utils
    nfs-utils-1.3.0-0.48.el7.x86_64 '//已经安装nfs-utils(nfs组件)'
    [root@nfs ~]# rpm -q rpcbind
    rpcbind-0.2.0-42.el7.x86_64 //已经安装rpcbind(远端过程调用组件)'
    [root@nfs ~]# vim /etc/exports '//编辑共享配置文件'
    /opt/erbao 192.168.79.0/24(rw,sync,no_root_squash)
    /opt/sanbao 192.168.79.0/24(rw,sync,no_root_squash)
    '//添加上述两个配置'

  • 开启服务并测试

    [root@nfs ~]# systemctl start nfs
    [root@nfs ~]# systemctl start rpcbind
    [root@nfs ~]# netstat -ntap |grep rpc
    tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 25719/rpc.mountd
    tcp 0 0 0.0.0.0:42599 0.0.0.0:* LISTEN 25705/rpc.statd
    tcp6 0 0 :::20048 :::* LISTEN 25719/rpc.mountd
    tcp6 0 0 :::53299 :::* LISTEN 25705/rpc.statd
    [root@nfs ~]# showmount -e
    Export list for nfs:
    /opt/sanbao 192.168.79.0/24
    /opt/erbao 192.168.79.0/24

  • 选择仅主机模式,修改IP地址

  • mark

  • 修改IP地址

    [root@nfs ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
    '//...省略内容,修改为static'
    BOOTPROTO=static
    '//...省略内容,尾行添加内容'
    IPADDR=192.168.79.136
    NETMASK=255.255.255.0
    GATEWAY=192.168.79.1
    [root@nfs ~]# systemctl restart network
    [root@nfs ~]# ifconfig '//修改成功'
    ens33: flags=4163 mtu 1500inet 192.168.79.136 netmask 255.255.255.0 broadcast 192.168.79.255


2.4.2:配置两台Apache服务器

  • 两台Apache服务器安装httpd并关闭防火墙

    [root@apache1 ~]# yum install httpd -y
    [root@apache1 ~]# systemctl stop firewalld.service
    [root@apache1 ~]# setenforce 0
    [root@apache2 ~]# yum install httpd -y
    [root@apache2 ~]# systemctl stop firewalld.service
    [root@apache2 ~]# setenforce 0

  • 选择仅主机模式

    mark

  • 修改两台Apache服务器的IP地址

    [root@apache1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
    '//...省略内容,修改为static'
    BOOTPROTO=static
    '//...省略内容,尾行添加内容'
    IPADDR=192.168.79.134
    NETMASK=255.255.255.0
    GATEWAY=192.168.79.1
    [root@apache1 ~]# systemctl restart network
    [root@apache1 ~]# ifconfig
    [root@apache1 ~]# showmount -e 192.168.79.136 '//验证nfs服务没有问题'
    Export list for 192.168.79.136:
    /opt/sanbao 192.168.79.0/24
    /opt/erbao 192.168.79.0/24
    '//相同方法修改Apache2'

  • 自动挂载nfs共享目录

    [root@apache1 ~]# vim /etc/fstab
    '//尾行添加挂载配置'
    192.168.79.136:/opt/erbao /var/www/html nfs defaults,_netdev 0 0
    [root@apache1 ~]# mount -a
    [root@apache1 ~]# df -h
    文件系统 容量 已用 可用 已用% 挂载点
    ...省略内容
    192.168.79.136:/opt/erbao 20G 32M 20G 1% /var/www/html
    '//相同方法配置Apache2服务器'

  • 编辑首页文件

    [root@apache1 ~]# vim /var/www/html/index.html

    this is erbao web


    [root@apache1 ~]# systemctl start httpd.service
    [root@apache1 ~]# netstat -ntap |grep 80
    tcp6 0 0 :::80 :::* LISTEN 62305/httpd
    '//相同方法配置Apache2服务器'

2.4.3:加载ip_vs模块,安装ipvsadm工具并设置LVS网卡

  • 加载ip_vs模块

    [root@lvs~]# modprobe ip_vs
    [root@lvs~]# 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

  • 安装ipvsadm工具

  • [root@lvs ~]# yum install ipvsadm -y

  • 设置双网卡

    mark

    [root@lvs ~]# cd /etc/sysconfig/network-scripts
    [root@lvs network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36
    [root@lvs network-scripts]# vim ifcfg-ens33
    '//...省略内容,修改为static'
    BOOTPROTO=static
    '//...省略内容,尾行添加内容'
    IPADDR=12.0.0.1
    NETMASK=255.255.255.0
    [root@lvs network-scripts]# vim ifcfg-ens36
    '//...省略内容,修改为static'
    BOOTPROTO=static
    '//..省略内容,原本的33改为36'
    NAME=ens36
    UUID=6ba4ac2f-cb59-454f-9274-b48a6ecadeda '//删除此行 UUID'
    DEVICE=ens36 '//原本的33改为36'
    ONBOOT=yes
    IPADDR=192.168.79.1
    NETMASK=255.255.255.0

  • 开启路由转发功能

    [root@lvs network-scripts]# vim /etc/sysctl.conf
    net.ipv4.ip_forward=1 '//尾行插入,注意不要有#号'
    [root@lvs network-scripts]# sysctl -p '//重载路由转发功能'
    net.ipv4.ip_forward = 1

  • 清空防火墙表规则,并这种NAT地址转换

    [root@lvs network-scripts]# iptables -F '//情况转发表'
    [root@lvs network-scripts]# iptables -t nat -F '//情况nat地址转换表'
    oot@lvs network-scripts]# iptables -t nat -A POSTROUTING -o ens36 -s 192.168.79.0/24 -j SNAT --to-source 12.0.0.1


2.4.4:修改win10IP地址

  • mark

  • 设置为仅主机模式

    mark


2.4.5:保存规则并测试

[root@lvs network-scripts]# ipvsadm --save > /etc/sysconfig/ipvsadm
[root@lvs network-scripts]# systemctl start ipvsadm.service
[root@lvs network-scripts]# cd /opt
[root@lvs opt]# vim nat.sh
#!/bin/bash
ipvsadm -C '//情况内核虚拟服务器表中的所有记录'
ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 192.168.79.134:80 -m
ipvsadm -a -t 12.0.0.1:80 -r 192.168.79.135:80 -m
ipvsadm
[root@lvs opt]# chmod +x nat.sh
[root@lvs opt]# ./nat.sh
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP lvs:http rr-> 192.168.79.134:http Masq 1 0 0 -> 192.168.79.135:http Masq 1 0 0

2.5:实验验证


  • 打开win10主机,访问12.0.0.1

    mark

    mark

  • 已经成功,采用了轮询算法访问两个网站

  • 若不成功,则需要情况缓存再次尝试


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • 目录Atlas介绍Atlas部署Atlas基本管理Atlas结合MHA故障恢复读写分离建议Atlas介绍Atlas是由Qihoo360Web平台部基础架构团队开发维护的一个基于My ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文记录了作者对x265开源代码的实现与框架进行学习与探索的过程,包括x265的下载地址与参考资料,以及在Win7 32 bit PC、VS2010平台上的安装与配置步骤。 ... [详细]
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • 第四讲ApacheLAMP服务器基本配置Apache的编译安装从Apache的官方网站下载源码包:http:httpd.apache.orgdownload.cgi今 ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • 网络安全是一个非常重要的课题,基本上你运行的服务后台越多,你就可能打开更多的安全漏洞.如果配置的恰当的话,Linux本身是非常安全可靠的,假使在Linux系统中有某个安全缺陷,由于Linu ... [详细]
author-avatar
phba
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有