NAT模式LVS负载均衡集群

负载调度器:内网 网关 ens33:192.168.1.200,外网 网关 ens36:12.0.0.10 Web节点服务器1:192.168.1.100 Web节点服务器2:192.168.1.101 NFS服务器:192.168.1.102 客户端:12.0.0.12

1.部署共享存储

(NFS服务器:192.168.1.102)

关闭防火墙

要用的机器都要关闭这些选项

 systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
vim /etc/selinux/config #永久关闭selinux

查看是否已有软件包

如果没有安装

[root@localhost ~]# rpm -q rpcbind nfs-utils
rpcbind-0.2.0-42.el7.x86_64
nfs-utils-1.3.0-0.48.el7.x86_64

安装nfs,rpcbind服务

yum install nfs-utils rpcbind -y
systemctl start rpcbind.service
systemctl start nfs.service
systemctl enable nfs.service
systemctl enable rpcbind.service

创建共享文件

 mkdir /opt/gy /opt/ylc
chmod 777 gy/ ylc/
echo 'this is gy web!' > gy/index.html
echo 'this is ylc web!' > ylc/index.html

 vim  /etc/exports //配置共享策略
cat /etc/exports
/opt/gy 192.168.1.0/24(rw,sync)
#rw可读可写ro只读,sync同步(同时同步到内存和磁盘)async,先同步到内存在同步到磁盘
 #区别sync比async更安全如果突然宕机是有保存的,io消耗大
 #async比sync读取速度更快
 #root_squash不进行降权,降权的话为匿名用户
/opt/ylc 192.168.1.0/24(rw,sync)
--发布共享---
exportfs -rv

2.配置节点服务器

(192.168.80.100、192.168.80.101)

配置第一台真实服务器

192.168.1.100

[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl disable firewalld.service

yum install httpd -y #安装web服务
systemctl start httpd.serviceh
systemctl enable httpd.service

yum install nfs-utils rpcbind -y
showmount -e 192.168.1.102#查看nfs服务

systemctl start rpcbind
systemctl enable rpcbind

mount.nfs 192.168.1.102:/opt/gy /var/www/html #临时挂载

vim /etc/fstab #永久挂载
192.168.1.100/:/opt/gy /var/www/html nfs defaults,_netdev 0  0
mount -a #读取永久挂载配置文件,实现挂载

修改网网关指向

vim /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network

修改http配置文件

KeepAlive off#关闭长连接便于后面观察负载均衡,的跳转

测试是否成功

[root@localhost ~]# ls /var/www/html/
index.html
[root@localhost ~]# cat /var/www/html/index.html
this is gy web!

配置第二台真实服务器

--192.168.80.101---

[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# vim /etc/selinux/config //永久关闭selinux

[root@localhost ~]# showmount -e 192.168.1.102 //查看nfs服务
Export list for 192.168.1.102:
/opt/ylc 192.168.1.0/24
/opt/gy  192.168.1.0/24

安装web服务httpd或nginx

//这里我安装httpd
yum install httpd -y //安装httpd服务
systemctl enable --now httpd.service #开机自启并现在开启
mount.nfs 192.168.1.102:/opt/ylc /var/www/html

vim /etc/fstab #永久挂载
192.168.1.102:/opt/ylc /var/www/html nfs defaults,_netdev 0  0

修改网网关指向

vim /etc/sysconfig/network-scripts/ifcfg-ens33#修改网关指向
systemctl restart network //刷新网卡配置

修改http配置文件

KeepAlive off

测试

 cat /var/www/html/index.html

3.配置负载调度器

(内网关 ens33:192.168.1.200,外网关 ens36:12.0.0.10)

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

添加网卡

ifconfig #查看新添加网卡

修改新网卡配置

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens36 #修改ens36配置
vim ifcfg-ens33 #修改ens33配置
systemctl restart network #刷新网卡配置

测试

ping 12.0.0.10

(1)配置SNAT转发规则

vim /etc/sysctl.conf#添加路由
net.ipv4.ip_forward = 1

或 echo '1' > /proc/sys/net/ipv4/ip_forward
sysctl -p //加载配置文件

iptables -t nat -F #清空nat表
iptables -F #清空filter表
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens36 -j SNAT --to 12.0.0.10
#-t指定nat -A表指定POSTROUTING链 -s指定源地址 -o指定出口网卡 -j动作选项,它用于对数据包执行源地址转换,--to指定转换地址

iptables -t nat -nL查看是否配置成功

测试

开启一台新的机器当客户端

我这里用的是windows7,linux也行

修改网络适配器

浏览器访问

都能正常访问但是不能跳转

实现负载均衡,跳转

(2)加载LVS内核模块

modprobe ip_vs                  #加载 ip_vs模块
cat /proc/net/ip_vs #查看 ip_vs版本信息

//也可以
for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done
#用for循环加载所有ipvs模块

(3)安装ipvsadm 管理工具

yum -y install ipvsadm

--启动服务前须保存负载分配策略---
ipvsadm-save > /etc/sysconfig/ipvsadm
或者 ipvsadm --save > /etc/sysconfig/ipvsadm

systemctl start ipvsadm.service

注意:如果安装不了搭建本地yum仓库安装

(4)配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)

ipvsadm -C                  #清除原有策略
ipvsadm -A -t 12.0.0.10:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 192.168.1.100:80 -m [-w 1]
ipvsadm -a -t 12.0.0.1:80 -r 192.168.1.101:80 -m [-w 1]
ipvsadm #启用策略

ipvsadm -ln #查看节点状态,Masq代表 NAT模式
ipvsadm-save > /opt/ipvsadm #保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm

测试

http://12.0.0.10

总结

ipvsadm 工具选项说明:
-A:添加虚拟服务器
-D:删除整个虚拟服务器
-s:指定负载调度算法(轮询:rr、加权轮询:wrr、最少连接:lc、加权最少连接:wlc lblc:基于本地的最少连接)
-a:表示添加真实服务器(节点服务器)
-d:删除某一个节点
-t:指定 VIP地址及 TCP端口
-r:指定 RIP地址及 TCP端口
-m:表示使用 NAT群集模式
-g:表示使用 DR模式
-i:表示使用 TUN模式
-w:设置权重(权重为 0 时表示暂停节点)
-p 60:表示保持长连接60秒(默认关闭连接保持)
-l:列表查看 LVS 虚拟服务器(默认为查看所有)
-n:以数字形式显示地址、端口等信息,常与“-l”选项组合使用。ipvsadm -ln


---------------------NAT模式 LVS负载均衡群集部署-------------------------
负载调度器:内网关 ens33:192.168.1.200,外网关 ens36:12.0.0.10
Web节点服务器1:192.168.1.100
Web节点服务器2:192.168.1.101
NFS服务器:192.168.1.102
客户端:12.0.0.12

1.部署共享存储(NFS服务器:192.168.1.102)
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

yum install nfs-utils rpcbind -y
systemctl start rpcbind.service
systemctl start nfs.service

systemctl enable nfs.service
systemctl enable rpcbind.service

mkdir /opt/gy /opt/ylc
chmod 777 /opt/gy /opt/ylc
echo 'this is gy web!' > /opt/gy/index.html
echo 'this is ylc web!' > /opt/ylc/index.html

vim /etc/exports
/opt/gy 192.168.1.0/24(rw,sync)
/opt/ylc 192.168.1.0/24(rw,sync)

--发布共享---
exportfs -rv


2.配置节点服务器(192.168.1.100、192.168.1.101)
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

yum install httpd -y
systemctl start httpd.service
systemctl enable httpd.service

yum install nfs-utils rpcbind -y
showmount -e 192.168.1.102

systemctl start rpcbind
systemctl enable rpcbind

--192.168.80.100---
mount.nfs 192.168.1.102:/opt/gy /var/www/html

vim /etc/fstab
192.168.80.13:/opt/ylc /var/www/html nfs defaults,_netdev 0  0

--192.168.80.101---
mount.nfs 192.168.1.102:/opt/ylc /var/www/html
echo 'this is ylc web!' > /var/www/html/index.html

vim /etc/fstab
192.168.80.13:/opt/ylc /var/www/html nfs defaults,_netdev 0  0


3.配置负载调度器(内网关 ens33:192.168.1.200,外网关 ens36:12.0.0.10)
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0


准备 :添加双网卡并配置好地址

(1)配置SNAT转发规则
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

或 echo '1' > /proc/sys/net/ipv4/ip_forward
sysctl -p

iptables -t nat -F
iptables -F
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens36 -j SNAT --to 12.0.0.10

(2)加载LVS内核模块
modprobe ip_vs #加载 ip_vs模块
cat /proc/net/ip_vs #查看 ip_vs版本信息

for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done

(3)安装ipvsadm 管理工具
yum -y install ipvsadm

--启动服务前须保存负载分配策略---
ipvsadm-save > /etc/sysconfig/ipvsadm
或者 ipvsadm --save > /etc/sysconfig/ipvsadm

systemctl start ipvsadm.service

(4)配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)
ipvsadm -C #清除原有策略
ipvsadm -A -t 12.0.0.10:80 -s rr [-p 60]
ipvsadm -a -t 12.0.0.10:80 -r 192.168.1.100:80 -m [-w 1]
ipvsadm -a -t 12.0.0.10:80 -r 192.168.1.101:80 -m [-w 1]
ipvsadm #启用策略

ipvsadm -ln #查看节点状态,Masq代表 NAT模式
ipvsadm-save > /opt/ipvsadm #保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm
----------------------------------------------------------------------------------------------------------
ipvsadm -d -t 12.0.0.10:80 -r 192.168.1.100:80 #删除群集中某一节点服务器
ipvsadm -D -t 12.0.0.1:80 #删除整个虚拟服务器
systemctl stop ipvsadm #停止服务(清空策略),如果selinux没关闭/etc/sysconfig/ipvsadm内容也会清空
systemctl start ipvsadm #启动服务(根据/etc/sysconfig/ipvsadm恢复策略)
ipvsadm-restore < /opt/ipvsadm            #恢复LVS 策略
----------------------------------------------------------------------------------------------------------

4.测试效果
在一台IP为12.0.0.12的客户机使用浏览器访问 http://12.0.0.10/ ,不断刷新浏览器测试负载均衡效果,刷新间隔需长点(或者关闭Web服务的连接保持)。

NAT模式LVS负载均衡集群的更多相关文章

  1. LVS负载均衡集群--NAT模式部署

    目录: 一.企业群集应用概述 二.负载均衡群集架构 三.负载均衡群集工作模式分析 四.关于LVS虚拟服务器 五.NAT模式 LVS负载均衡群集部署 一.企业群集应用概述 1.群集的含义 Cluster ...

  2. 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群

    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...

  3. 项目实战2—实现基于LVS负载均衡集群的电商网站架构

    负载均衡集群企业级应用实战-LVS 实现基于LVS负载均衡集群的电商网站架构 背景:随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响 ...

  4. LVS之2---基于LVS负载均衡集群架构

    LVS之2---基于LVS负载均衡集群架构实现 目录 LVS之2---基于LVS负载均衡集群架构实现 ipvsadm software package Options 常用命令 保存及重载规则 内存映 ...

  5. NAT模式 LVS负载均衡群集部署

    NAT模式 LVS负载均衡群集部署的操作步骤 实验环境准备: 负载调度器:内网关 ens33:172.16.10.1,外网关 ens37:12.0.0.1 Web节点服务器1:172.16.10.10 ...

  6. LVS负载均衡集群--DR模式部署

    目录: 一.LVS-DR数据包流向分析 二.DR 模式的特点 三.LVS-DR中的ARP问题 四.DR模式 LVS负载均衡群集部署 一.LVS-DR数据包流向分析 1.为方便进行原理分析,将clien ...

  7. LVS负载均衡集群服务搭建详解(一)

    LVS概述 1.LVS:Linux Virtual Server 四层交换(路由):根据请求报文的目标IP和目标PORT将其转发至后端主机集群中的某台服务器(根据调度算法): 不能够实现应用层的负载均 ...

  8. 实现基于LVS负载均衡集群的电商网站架构

    背景 上一期我们搭建了小米网站,随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响应缓慢,面对此场景,单纯靠单台LNMP的架构已经无法 ...

  9. LVS负载均衡集群

    回顾-Nginx反向代理型负载 负载均衡(load balance)集群,提供了一种廉价.有效.透明的方法,来扩展网络设备和服务器的负载.带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用 ...

  10. Linux 笔记 - 第十八章 Linux 集群之(二)LVS 负载均衡集群

    一.前言 Linux 集群从功能上可以分为两大类:高可用集群和负载均衡集群.上一篇已经讲解了 HA 高可用集群,此节讲解负载均衡集群. 负载均衡集群(Load Balance Cluseter,简称 ...

随机推荐

  1. Python潮流周刊#4:Python 2023 语言峰会

    你好,我是猫哥.这里记录每周值得分享的 Python 及通用技术内容,本期是特别加更版,聚焦于 Python 官方 2023 年语言峰会的系列博客. 博客原文:https://pythoncat.to ...

  2. Python modbus_tk 库源码分析

    modbus_tk 源代码分析 前言 modbus_tcp 协议是工业项目中常见的一种基于 TCP/IP 协议的设备数据交互协议. 作为 TCP/IP 协议的上层协议,modbus_tcp 协议涉及到 ...

  3. mybatis-plus-generator-ui 可视化代码生成器!

    它提供交互式的Web UI用于生成兼容mybatis-plus框架的相关功能代码,包括Entity,Mapper,Mapper.xml,Service,Controller等. 可以自定义模板以及各类 ...

  4. Rust函数参数传递的一个观点

    Q5: 一个函数的观点A5: Rust中的每个函数都是自治的,在每一个函数体中,相当于重新开辟了一个新的领域.将参数传递给函数参数,与let声明一个绑定是一样的规则. 1 ``` 2 // 所有权语义 ...

  5. youtobe深度学习推荐系统-学习笔记

    简介 前言 本文是Deep Neural Networks for YouTube Recommendations 论文的学习笔记.淘宝的召回模型曾经使用过这篇论文里面的方案,后续淘宝召回模型升级到了 ...

  6. Tr0ll-1项目实战

    前言 Tr0ll的灵感来源于OSCP实验室内机器的不断拖动. 目标很简单,获取root并从/root目录中获取Proof.txt. 不适合那些容易受挫的人!公平的警告,前方有巨魔! 靶机环境 kali ...

  7. 自然语言处理 Paddle NLP - 信息抽取技术及应用

    1.什么是信息抽取 即自动从无结构或半结构的文本中抽取出结构化信息的任务(病历抽取) 2.实体抽取 3.关系抽取 4.事件抽取 信息抽取和知识图谱是一个上下游的关系.抽取的结果,可以组装成知识图谱(一 ...

  8. h2database BTree 设计实现与查询优化思考

    h2database 是使用Java 编写的开源数据库,兼容ANSI-SQL89. 即实现了常规基于 BTree 的存储引擎,又支持日志结构存储引擎.功能非常丰富(死锁检测机制.事务特性.MVCC.运 ...

  9. git推送时被拒绝,发现class文件被人上传到仓库的解决办法

    写好的代码commit之后,想要推送到远端,结果发现有同事提交了class文件 这时候我们需要执行以下指令 git stash git pull git stash pop 原理:先把commit的东 ...

  10. Taurus .Net Core 微服务开源框架:Admin 插件【4-1】 - 配置管理-Kestrel【含https启用】

    前言: 继上篇:Taurus .Net Core 微服务开源框架:Admin 插件[3] - 指标统计管理 本篇继续介绍下一个内容: 1.系统配置节点:App - Config 界面 界面图如下: 双 ...