lvs-nat实现

ipvs:内核中的协议栈上实现;

ipvs实现工具:

ipvsadm:用户空间的集群服务管理工具;

实现ipvs功能的:ipvs,以及ipvs上的规则;

四层交换或四层路由;

一个ipvs主机(director)可以同时定义多个cluster service;

一个ipvs服务至少应该有一个rs;

编辑内核的三种模式:

编进内核,编成模块,互编译;

一般针对于性能来说,ipvs是不能编译成模块的,

(1)查看当前系统是否支持ipvs:因为ipvs本身就是内核中的功能,通过一些驱动完成;

grep -i -A 10 ‘IPVS‘ /boot/config-3.10.0-327.el7.x86_64

可以查看ipvs支持的那些调度方法,以及ipvs支持协议;

(2)安装ipvsadm

yum install -y ipvsadm

(3)启动ipvsadm.service(类似于iptables,但这不是一个服务,启动它的主要是为了装在保存在内核中的规则)

[[email protected] yum.repos.d]# rpm -ql ipvsadm/etc/sysconfig/ipvsadm-config    #配置文件/usr/lib/systemd/system/ipvsadm.service    #开启ipvsadm服务;/usr/sbin/ipvsadm    #ipvsadm主程序/usr/sbin/ipvsadm-restore    #重载配置到内核中;/usr/sbin/ipvsadm-save    #保存规则的/usr/share/doc/ipvsadm-1.27/usr/share/doc/ipvsadm-1.27/README/usr/share/man/man8/ipvsadm-restore.8.gz/usr/share/man/man8/ipvsadm-save.8.gz/usr/share/man/man8/ipvsadm.8.gz

(4)ipvsadm命令的用法:


ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [-b sched-flags]

ipvsadm -D -t|u|f service-address

ipvsadm -C

ipvsadm -R

ipvsadm -S [-n]

ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]

ipvsadm -d -t|u|f service-address -r server-address

ipvsadm -L|l [options]

ipvsadm -Z [-t|u|f service-address]    #清空或置零

ipvsadm --set tcp tcpfin udp

ipvsadm --start-daemon state [--mcast-interface interface]

[--syncid syncid]

ipvsadm --stop-daemon state

ipvsadm -h

管理集群服务:增、改,删,查

(1)ipvsadm -A|E -t|u|f service-address [-s scheduler]  [-p [timeout]]

-A:增,append,add

[[email protected] yum.repos.d]# ipvsadm -A -t 192.168.1.109:80 -s rr[[email protected] yum.repos.d]# ipvsadm -LnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  192.168.1.109:80 rr

-E:修改,edit

-t:tcp

-u:udp

-f:firewall mark

(2)service-address:

-t, tcp, vip:port

-u, udp, vip:port

-f, fwm, mark,即防火墙标记;

(3)-s scheduler:指明其调度方法,默认为wlc;

(4)ipvsadm -D -t|u|f service-address

-D:删除

管理集群上的RS

ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]

-a:增加

[[email protected] yum.repos.d]# ipvsadm -a -t 192.168.1.109:80 -r 192.168.1.111 -m -w 1[[email protected] yum.repos.d]# ipvsadm -LnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  192.168.1.109:80 rr  -> 192.168.1.111:80             Masq    1      0          0

-e:更改

-e只能修改其属性信息,类似于重新编写要改动的信息,但是地址信息是无法修改的,

但是对于rs的地址是不能进行修改的,因此需要先删除后添加;

-r server-address

RS的地址;

rip[:port]

-g, gateway, dr,相当于网关,默认

-i, ipip,tunnel 隧道模型

-m, masquerade, nat,地址伪装;

-w weight

查看:

ipvsadm -L|l [options]

-n, --numeric:以数字格式显示IP和PORT,默认的是反解端口和主机名到服务端;

ipvsadm -Ln    #注意其与iptables不同;参数的顺序不能写错;

--exact:精确值(不做单位换算);

-c, --connection:显示当前IPVS连接;

--stats:统计数据;

[[email protected] ~]# ipvsadm -Ln --rateIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port                 CPS    InPPS   OutPPS    InBPS   OutBPS  -> RemoteAddress:PortTCP  192.168.1.109:80                    0        0        0        0        0  -> 192.168.1.111:80                    0        0        0        0        0

CPS:每秒连接数;InPPS:input pockets per,每秒的入栈报文数;OutPPS:每秒出栈报文数;InBPS:每秒入栈bytes,OutBPS:每秒出栈bytes;

--rate:速率;

清空:

-C:清空;

保存和重载

保存:

ipvsadm -S > /PATH/TO/SOME_RULE_FILE

ipvsadm-save > /PATH/TO/SOME_RULE_FILE

重载:

ipvsadm -R <  /PATH/TO/SOME_RULE_FILE

ipvsadm-restore < /PATH/TO/SOME_RULE_FILE

清空计数器

ipvsadm -Z [-t|u|f service-address]

对于不同版本的系统,载入规则也是不同的:

centos6:查看其配置文件;

centos7:查看其unit file-->ipvsadm-service

[[email protected] ~]# cat /usr/lib/systemd/system/ipvsadm.service[Unit]Description=Initialise the Linux Virtual ServerAfter=syslog.target network.target [Service]Type=oneshotExecStart=/bin/bash -c "exec /sbin/ipvsadm-restore < /etc/sysconfig/ipvsadm"    #开启ipvsadm时在该文件中读取ExecStop=/bin/bash -c "exec /sbin/ipvsadm-save -n > /etc/sysconfig/ipvsadm"    #执行stop时,先保存在该文件中,然后清空ExecStop=/sbin/ipvsadm -CRemainAfterExit=yes [Install]WantedBy=multi-user.target

实现开机自动加载ipvs规则

(1)首先可以把ipvs规则手动更新到/etc/sysconfig/ipvasdm

(2)关闭服务,

(3)chkconfig enabled ipvsadm

设计要点:

(1) DIP与RIP要在同一IP网络,RIP的网关要指向DIP;最好实现director两块网卡在物理上是隔离的

(2) 支持端口映射;

(3) 是否用到共享存储取决业务需求;

实验环境准备

  • 创建一个director,两块网卡,一个桥接,一个因主机模式;
  • 创建两个真实服务器,rs1&rs2;

lvs-nat模型实现:

(1)实验环境准备:

序号 简称 ip
1 cip
2 vip 172.18.100.6/24
3 dip 192.168.10.254/24
4 rs1 192.168.10.11/24
5 rs2 192.168.10.12/24
6 外主机 192.168.10.22/24

(2)iptables -F清除iptables规则;

(3)确保网关间核心转发功能永久有效,编辑/etc/sysctl.conf

[[email protected] ~]# vim /etc/sysctl.conf [[email protected] ~]# cat /etc/sysctl.conf# System default settings live in /usr/lib/sysctl.d/00-system.conf.# To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file## For more information, see sysctl.conf(5) and sysctl.d(5).net.ipv4.ip_forward=1[[email protected] ~]# sysctl -pnet.ipv4.ip_forward = 1[[email protected] ~]# cat /proc/sys/net/ipv4/ip_forward1

(4)在rs1中开启web(http)服务,提供一个资源页面(/var/www/html/index.html);启动服务,并且验证(养成习惯)

(5)在真正的演示负载均衡中,rs1和rs2上面的资源应该是相同的,但是为了演示方便,在rs2上执行与(4)一样的步骤,但是提供的i资源页面不一样;

(6)在director上访问rs1,rs2测试是否能正常的访问;

[[email protected] ~]# curl http://192.168.10.11[[email protected] ~]# curl http://192.168.10.12

(7)为ipvs添加规则

ipvsadm -A -t 172.18.100.6:80 -s rripvsadm -a -t 172.18.100.6:80 -r 192.168.10.11:80 -m -w 1ipvsadm -a -t 172.18.100.6:80 -r 192.168.10.12:80 -m -w 2

(8)使用外主机验证lvs-net模型;不断请求director

curl http://172.18.100.6

(9)在director上查看活动连接与非活动连接数量(在rr中权重是什么作用)

[[email protected] ~]ipvsadm -Ln

修改规则属性,使用wrr(权重大的承载的连接数就越多)

ipvsadm -A -t 172.18.100.6:80 -s wrr

查看ipvs规则表

[[email protected] ~]ipvsadm -Ln

负载均衡集群设计时的要点

(1) session保持

session sticky (ip hash)

session cluster

session server

(2) 数据共享

共享存储:

NAS:Network Attached Storage,文件服务器,访问接口是文件级别(NFS,samba)

自建的samba性能很差,往往带宽成为关键,可是对于没有优化来说,性能依旧是提不上来,一般建议找一写专业的供应商;

SAN:Storage Area Network,  访问接口是块级别;SCSI协议借助于其它网络技术(FC,以太网);

DS:Distributed Storage(分布式存储),访问接口通常是文件级别,接口可是文件系统,也可以API;ceph:内核级分布式存储,已经收进系统内核,但是非常的复杂;

是否使用共享存储,就是要看服务器是否支持写操作;

数据同步:

rsync+inotify

rsync:远程同步能够将两个主机上的两个文件系统彼此之间做同步;有主从,单向的

rsync详细使用见日记

数据格式:

结构化数据:存储于SQL数据库中;

半结构化数据:xml, json,  存储于文件系统或NoSQL;

非结构化数据:文件系统,DS;

注意:(1)dip和rs1与rs2在同一网段中;其中dip是rs1和rs2的网关;

(2)一个主机上建议不要有太多的网关;

时间: 2024-09-29 20:07:41

lvs-nat实现的相关文章

lVS(nat模式)+keepalived搭建

关于网上lvs+keepalived的文章很多,但是多数都是DR模式的方案,对于 nat模式的并不多见,因此,在此写一份nat模式的文章,仅供分享也当笔记保存. 网络拓扑结构: 现在的Linux系统内核都是支持lvs的,所以我们直接可以用yum安装ipvsadm yum 源的替换,将系统的yum源替换成163的yum源 [[email protected] ~]# cd /etc/yum.repos.d/ [[email protected] yum.repos.d]# ls centos-16

linux lvs集群nat模式(比上一篇的lvs nat实用)

这是一篇以apcache服务为例介绍lvs的nat模式配合keepalived实现的方案.实验拓扑图如下所示,虚线上面的大图可以看成是虚线下面"服务器群"的放大版: 本实验共用到4台linux虚拟服务器,其中两台rhel5.6作为主从HA(keepalived)服务器,另外两台rhel4.6模拟Apache服务器--用两台Apache服务器模拟多台Apache服务器. 实验原理是,用Apache服务器为代表模拟实际用到的服务器,用两台Apache模拟多台Apache,所有的Apache

LVS NAT模式搭建

准备工作 1.设备分配 192.168.137.100          LB Server(另一块公网网卡:192.168.138.100) 192.168.137.150          Server01(网关:192.168.137.100) 192.168.137.200          Server02(网关:192.168.137.100) 注:完成所有准备工作后调整设备网关. 2.关闭所有设备防火墙 systemctl stop firewalld systemctl disa

lvs nat搭建

生产环境网站离不开负载均衡.高可用性这样的字眼,不用解释便知道其中的意义与重要性.高可用性可以用keepalived实现,负载均衡可以用lvs或者nginx实现,二者的区别是lvs基于网络层,nginx基于应用层或者基于浏览器.lvs有3中实现方式,分别是nat.dr.tunel(隧道),三者大体相似,这里介绍nat模式,本文也没用介绍keepalived,以后有时间再写. 实验环境:使用vmware虚拟出4台linux,有一台作为client(rhel4.6),其中两台作为realserver

LVS NAT 模型配置实例

LVS 负载均衡 一.系统环境: 系统:Centos 6.5_64位 二.Director和Real Server的配置部署: 1台director server:VIP/外网ip:192.168.121.141 内网ip:172.16.2.31 2台real server:172.16.2.21       172.16.2.24  并且需要设置内网网关为director的内网ip:172.16.2.31 director server 2块网卡配置: 一块172.16.2.31 网卡为桥接模

CentOS 6.3下部署LVS(NAT)+keepalived实现高性能高可用负载均衡

一.系统环境 实验拓扑: 实验环境: Vmware 9.01 + Windows 8 x64 企业版+8G内存 虚拟机步骤: 1.安装一台CentOS 6.3 x64主机,内存为1GB,网络为NAT模式,注意检查Vmware中EDIT菜单下Virtual Network Editor中VMnet8 2. 加电,安装系统.基础知识了,不再多说,注意:选择英文而不要选择中文,选择是Basic Server模式,系统名称:LVS-MASTER 3.安装系统后,用root用户登录进去,执行 ifconf

Vmware虚拟机配置LVS/NAT模式遇到的坑。

这两天在研究LVS的负载均衡,先从最简单的LVS/NAT模式开始入手. 最后配置完之后能够相互之间Ping通,并且能够直接访问real服务器提供的web服务,而且防火墙也已经关闭了. 但是通过访问LVS服务器死活访问不了Real服务器,利用tcpdump和iftop监控软件查看了一下,发现握手出现的问题! 先说一下用于测试LVS/NAT模式的一些配置信息吧. [真实] PC的网络: 外网IP:xxx.xxx.xxx.xxx这个是运营商动态分配给我的一个公网IP. 内网IP:192.168.123

LVS NAT 配置

LVS NAT 配置 架构图: 架构说明: Vmware上实现,一共需要3台虚拟机.物理机模拟客户端,Director需要2个网卡,VIP接口网卡用桥接,DIP接口用仅主机.RS1,RS2,DIP不用跟物理机通信,也没有必要,所以用仅主机连接. Director主机配置 Director地址配置: VIP地址: 192.168.11.107 桥接,eth0 DIP地址: 192.168.93.133 仅主机,eth1 调度策略配置: ipvsadm -A -t 192.168.11.107:80

CentOS 6.3下部署LVS(NAT模式)+keepalived实现高性能高可用负载均衡

一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalived版本:keepalived-1.2.4 三.安装 0.安装LVS前系统需要安装popt-static,kernel-devel,make,gcc,openssl-devel,lftp,libnl*,popt* 1.在两台Director Server上分别配置LVS+Keepalived LVS

使用LVS+NAT搭建集群实现负载均衡

使用LVS+NAT搭建集群实现负载均衡 LVS集群简介    计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式.集群计算机通常用来改进单个计算机的计算速度和/或可靠性.一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多        LVS集群分布图   集群有三种类型: