3-4-基于LVS实现4层负载均衡配置和nat模型实战

centos内核支持ipvs,只需在用户空间安装ipvsadm即可,首先应该准备好拓扑环境,了解编写规则的工具用法

yum install -y ipvsadm
rpm -ql ipvsadm---可以看到用到了unit file,也就是脚本(开机启动不启动),ipvsadm不是一项服务,规则会保存到内存中不会永久有效,为什么会用到unitfile呢?因为需要在开机时使用restone重新载入规则

注意:对于集群类服务来说,不建议开机自动启动,需要手动开启,防止及其挂了。我们会有高可用集群服务器,会自动切换到另外一台服务器上。

ipvsadm -h获取它的简要帮助说明文档
ipvsadm命令的选项大写是集群服务、小写是real server

ipvsadm命令:
核心功能:
集群服务管理:增删改
集群服务的RS管理:增删改
查看:
管理集群服务:增删改
增改:
ipvsadm -A|E -t|u|f service-address [-s scheduler][-p [timeout]]
删:
ipvsadm -D -t|u|f service-address
service-address:
-t|u|f:
-t:TCP协议的端口,VIP:TCP_PORT
-u:UDP协议的端口,VIP:UDP_PORT
-f:firewall MARK,是一个数字;

管理集群上的RS:增删改
    增改:
        ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m][-w weight]
    删:
        ipvsadm -d -t|u|f service-address -r server-address
    server-address:
        rip[:port]---和前边的service端口一致可以不写,一般不写(容易出错)
    选项:
        lvs类型:---不能混合使用
            -g:gateway,dr类型
            -i:ipip,tun类型
            -m:masquerade,nat类型---masquerade地址伪装
        -w weight:权重;
    清空定义的所有内容:
        ipvsadm -C
    查看:
        ipvsadm -L|l [options]
            --numberlc,-n:numerlc output of addresses and ports数字格式显示地址和端口,不要反解
            --exact:expand numbers(display exact values)---精确显示计数器的值
            计数器
            --connection,-c:output of current IPVS connections---显示连接状态
            --stats:output of statistics information---统计数据
            --rate:output of rate information---速率数据
    保存和重载:
        ipvsadm -S=ipvsadm-save---注意这里没有空格
        ipvsadm -R=ipvsadm-restore---注意这里没有空格

负载均衡集群设计时需注意的问题:
(1)是否需要会话保持;---web站点需要会话保持,session绑定,session cookie,session server
(2)是否需要共享存储;
共享存储:NAS(NFS和CFS两种),SAN,DS(分布式存储)
数据同步:
课外作业:rsync+ipotify实现数据同步
lvs-nat:
设计要点:
(1)RIP与DIP在同一IP网络,RIP的网关要指向DIP;
(2)支持端口映射;
(3)Directory要打开核心转发功能;
实践作业(博客):负载均衡两个php应用(wordpress,discuzx)---视频中有讲解怎么做
测试:(1)是否需要会话保持(2)是否需要共享存储

lvs-dr:
    dr模型中,各主机上均需要配置VIP,解决地址冲突的方式有三种:
        (1)在前端网关做静态绑定;
        (2)在各RS使用arptables
        (3)在各RS修改内核参数,来限制arp响应和通告的级别;

lvs默认类型是dr,因为dr承载能力最大,因为响应报文不经有directory

lvs模型中必须同步时间,直接输入命令ntpdate 172.16.0.1
视频后边就是配置dr类型的负载均衡lvs了,一个direcotry,两个rs
两个rs先安装几个程序
如果rs中没有仓库,可以从其他主机复制,scp /etc/yum.repos.d/epel.repo 172.16.0.6:/etc/yum.repos.d/
两个rs的网卡类型要改成vmnet1,就是和vs在一个交换机上的意思

rs1:
ifconfig---先查看网卡的ip地址
hostnamectl set-hostname rs1.ilinux.io---修改主机名

先装几个程序
yum install -y nginx telnet-server
然后修改网卡类型为vmnet1,修改ip地址
nmtui---命令行窗口样式的修改ip地址
systemctl restart network---重启网络服务
ifconfig---查看ip地址修改结果
ping 192.168.10.254---测试通不通
编辑默认网页:
vim /user/share/nginx/html/test1.html
systemctl start nginx
ss -tnl---查看nginx服务端口

rs2:
ifconfig---先查看网卡的ip地址
hostnamectl set-hostname rs2.ilinux.io---修改主机名

先装几个程序
yum install -y nginx telnet-server
然后修改网卡类型为vmnet1,修改ip地址
nmtui---命令行窗口样式的修改ip地址
systemctl restart network---重启网络服务
ifconfig---查看ip地址修改结果
ping 192.168.10.254---测试通不通
编辑默认网页:
vim /user/share/nginx/html/test1.html
systemctl start nginx
ss -tnl---查看nginx服务端口

directory:
两个rs配置好nginx后,就可以临时访问一下,看能不能访问到网页。
curl http://192.168.10.11/test1.html
curl http://192.168.10.12/test1.html

yum install -y ipvsadm
ipvsadm -A -t 172.16.0.6:80 -s rr---添加tcp协议vip端口为80的是集群服务,调度方式是轮询
ipvsadm -Ln---查看定义的规则
ipvsadm -a -t 172.16.0.6:80 -r 192.168.10.11 -m---添加rs,类型是伪装地址(nat)
ipvsadm -a -t 172.16.0.6:80 -r 192.168.10.12 -m---添加rs,类型是伪装地址(nat)
ipvsadm -Ln---查看定义的规则
sysctl -w net.ipv4.ip_forward=1---打开核心转发
curl http://172.16.0.6/test1.html---就可以看到轮询效果了
for i in {1..10};do curl http://172.16.0.6/test1.html;done

上述是轮询的配置,下边是加权轮询
先修改权重
ipvsadm -e -t 172。16.0.6:80 -r 192.168.10.11 -m -w 2---修改权重为2
ipvsadm -e -t 172。16.0.6:80 -r 192.168.10.11 -m -w 3---修改权重为3
ipvsadm -Ln---查看规则列表
ipvsadm -Z---清空以前的连接数
ipvsadm -Ln --rate---查看速率数据
ipvsadm -E -t 172.16.0.6:80 -s wrr修改调度算法为加权轮询
让一个服务器不再接收请求有两种方法:1:删除规则2:权重标记为0
ipvsadm -d -t 172.16.0.6:80 -r 192.168.10.12---删除规则
如果两个rs都down了,就没有服务器响应了,可以在directory上装nginx提供web服务,但是平时不提供服务,因为有ipvs直接截获
vim /user/share/nginx/html/index.html
systemctl start nginx
此时访问还是访问不到的(没有rs),但是访问dip确是可以的,我们可以加权
ipvsadm -a -t 172.16.0.6:80 -r 127.0.0.1 -g---必须使用-g类型

下边是sh类型,把来自于同一个ip的请求发往同一个rs
ipvsadm -e -t 172.16.0.6:80 -s sh

如果rs上有两种不同的服务,需要各自定义规则
两个rs部署telnet服务,同时还有web服务
systemctl start telnet.socket
useradd centos ; echo ‘mageedu‘ | passwd --stdin centos---添加一个centos用户,密码是mageedu

ipvsadm -A -t 172.16.0.6:23 -s wlc---默认是wlc
ipvsadm -a -t 172.16.0.6:23 -r 192.168.10.11 -m -w 1
ipvsadm -a -t 172.16.0.6:23 -r 192.168.10.12 -m -w 2

可以把这些规则保存到一个文件中
ipvsadm -S -n > /etc/sysconfig/ipvsadm

原文地址:https://blog.51cto.com/13852573/2364127

时间: 2024-07-29 11:08:12

3-4-基于LVS实现4层负载均衡配置和nat模型实战的相关文章

3-5-基于LVS实现4层负载均衡配置和DR模型实战

DR类型directer只响应请求报文,然后调度某一个RS,而响应报文由RS直接返回给请求者RS和directer都需要配置VIP,(在同一网络中有可能冲突)本地局域网通告(通告自己的IP),ARP广播通告,ARP广播请求的响应RS配置VIP仅用于构建响应报文的源地址,不是用来真正通信的为了实现请求报文直接发送给director,而不是RS,有三种方式1.在路由器出口处做静态绑定,最不靠谱(因为director要做冗余的,需要重新绑定,二是不能阻断RS的ARP响应)2.在RS上安装arptabl

LVS详解及基于LVS实现web服务器负载均衡

前言 LVS(Linux Virtual Server)Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.通过LVS提供的负载均衡技术和Linux操作系统可实现一个高性能.高可用的服务器群集,从而以低成本实现最优的服务性能. 集群基础 集群简介 集群(Cluster)是一组相互独立的.通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理.一个客户与集群相互作用时,集群像是一个独立的服务器.集群配置是用

Nginx实现七层负载均衡配置指导

本文描述了如何使用Nginx实现在应用层实现7层负载均衡功能,Nginx支持虚拟主机,可以按照轮询,IP哈希,URL哈希,权重方式对后端服务器做负载均衡,还支持后端服务器健康检查功能.废话不多说,详细配置见下文~ 测试模型如下: 1.一台Nginx做负载负载均衡代理   具体配置centos5.8 ip 10.0.211.5 2.三台tomcat做业务逻辑处理        具体配置centos5.8 10.0.211.2 10.0.211.3 10.0.211.4 具体部署步骤: 1.    

3-2-基于LVS实现4层负载均衡原理讲解

对负载均衡来讲,最关键的就是调度器了网络传输层数:下四层由内核来管理及实现,被称为通信子网,最上面三层,叫应用层,在用户空间实现,叫做资源子网lvs是四层的负载均衡器,而且是真正附着在netfilter(内核通信过滤或操作框架)不需要向内核监听注册某一端口,不再受套接字文件数量的限制,直接修改报文扔给后端,不需要自己扮演任何角色tcp协议栈有65536个端口,主机只要向外发请求,就会用ip打开一个端口,像nginx这种运行在用户空间的进程,就需要通过自己的套接字(打开端口)向后端服务器的套接字传

3-3-基于LVS实现4层负载均衡模式和场景应用

回顾:linux的集群形式:LB负载均衡,HA高并发,HP高性能分布式系统:存储.计算(超算集群)lb cluster实现方式:软件四层:lvs.nginx(stream).haproxy(mode tcp)七层:http:nginx(http)/httpd/haproxy(mode http)/ats/perlbal/poundmysql:ProxySQL...硬件lvs:linux virtual servervs/rs,cip/vip/dip/riplvs type:nat/dr/tun/

四层和七层负载均衡的特点及常用负载均衡Nginx、Haproxy、LVS对比

一.四层与七层负载均衡在原理上的区别 图示: 四层负载均衡与七层负载均衡在工作原理上的简单区别如下图: 概述: 1.四层负载均衡工作在OSI模型中的四层,即传输层.四层负载均衡只能根据报文中目标地址和源地址对请求进行转发,而无法修改或判断所请求资源的具体类型,然后经过负载均衡内部的调度算法转发至要处理请求的服务器.四层负载均衡单纯的提供了终端到终端的可靠连接,并将请求转发至后端,连接至始至终都是同一个.LVS就是很典型的四层负载均衡. 2.七层负载均衡工作在OSI模型的第七层应用层,所以七层负载

[转] 四层和七层负载均衡的特点及常用负载均衡Nginx、Haproxy、LVS对比

一.四层与七层负载均衡在原理上的区别 1.图示 2.概述 四层负载均衡工作在 OSI 模型中的四层,即传输层.四层负载均衡只能根据报文中目标地址和源地址对请求进行转发,而无法修改或判断所请求资源的具体类型,然后经过负载均衡内部的调度算法转发至要处理请求的服务器.四层负载均衡单纯的提供了终端到终端的可靠连接,并将请求转发至后端,连接至始至终都是同一个.LVS 就是很典型的四层负载均衡. 七层负载均衡工作在 OSI 模型的第七层,即应用层,所以七层负载均衡可以基于请求的应用层信息进行负载均衡,例如根

四层and七层负载均衡

四层负载/七层负载 在常规运维工作中,经常会运用到负载均衡服务.负载均衡分为四层负载和七层负载,那么这两者之间有什么不同? 废话不多说,详解如下: 1.    什么是负载均衡 1)负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性.负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间:其次,单个重负载的运算分担到多台节

基于keepalived+nginx部署强健的高可用7层负载均衡方案20151214

高可用是个老生常谈的问题了,开源的高可用软件已经做的相当成熟了,之前也在debian下做过lvs+heartbeat的4层LB,一直很稳定(可惜流量不大啊),现在由于业务的需要,做一个基于keepalived+nginx的高可用7层负载均衡. 拓扑结构也比较简单,就不画拓扑图了:2个节点上分别安装配置keepalived和nginx,配置nginx反向代理后端的real server 比较关键的几个点: 1.为避免同一个局域网中有多个keepalived组中的多播相互响应,采用单播通信 2.状态