设为首页 收藏本站
查看: 868|回复: 0

[经验分享] LVS之VS/NAT实验

[复制链接]

尚未签到

发表于 2019-1-4 10:21:03 | 显示全部楼层 |阅读模式
  VS/NAT的原理为:通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程.报文头(目标地址、源地址和端口等)被正确改写后, 客户相信它们连接一个IP地址,而不同IP地址的服务器组也认为它们是与客户直接相连的。由此,可以用 NAT方法将不同IP地址的并行网络服务变成在一个IP 地址上的一个虚拟服务.
下面就来实际配置一遍:

  

如上图所示:
Node1为负载均衡器,有两个网卡,eth0:192.168.2.6和eth1:192.168.56.7;
Node2为其中一个Realserver,有一块网卡,eth0:192.168.2.3;
Node3为其中另一个Realserver,有一块网卡,eth0:192.168.2.4.

并且互相都能ping通.

首先由于Centos5.4使用的是linux2.6以上的内核,已经支持了lvs,可以通过以下的命令来查看是否支持:

[root@node1 ~]# modprobe -l | grep ipvs
/lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs.ko
/lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_dh.ko
/lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_ftp.ko
/lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_lblc.ko
/lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_lblcr.ko
/lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_lc.ko
/lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_nq.ko
/lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_rr.ko
/lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_sed.ko
/lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_sh.ko
/lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_wlc.ko
/lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_wrr.ko
#可以看到该内核已经支持ipvs模块了

1,按照lvs所需要的管理软件ipvsadm

此管理软件只需要在负载均衡器这台机器上安装,在本例中即:node1

[root@node1 ~]# wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
[root@node1 ~]# tar zxvf ipvsadm-1.24.tar.gz
[root@node1 ~]# cd ipvsadm-1.24
[root@node1 ipvsadm-1.24]# make all

结果出现了下面一堆错误:

make -C libipvs
make[1]: Entering directory `/root/ipvsadm-1.24/libipvs'
gcc -Wall -Wunused -Wstrict-prototypes -g -O2 -I/usr/src/linux/include  -DHAVE_NET_IP_VS_H -c -o libipvs.o libipvs.c
In file included from libipvs.c:23:
libipvs.h:14:23: error: net/ip_vs.h: No such file or directory
In file included from libipvs.c:23:
libipvs.h:119: error: expected ‘)’ before ‘fwmark’
libipvs.c:27: error: field ‘svc’ has incomplete type
libipvs.c:28: error: field ‘dest’ has incomplete type
libipvs.c: In function ‘ipvs_init’:
libipvs.c:40: error: invalid application of ‘sizeof’ to incomplete type ‘struct ip_vs_getinfo’
.....
.....
.....
libipvs.c: In function ‘ipvs_get_daemon’:
libipvs.c:309: error: dereferencing pointer to incomplete type
libipvs.c:315: error: ‘IP_VS_SO_GET_DAEMON’ undeclared (first use in this function)
libipvs.c: In function ‘ipvs_strerror’:
libipvs.c:357: error: ‘ipvs_get_service’ undeclared (first use in this function)
make[1]: *** [libipvs.o] Error 1
make[1]: Leaving directory `/root/ipvsadm-1.24/libipvs'
make: *** [libs] Error 2

google得知是因为找不到内核的ipvs库文件,因为我还没有将内核库文件做连结:

[root@node1 ipvsadm-1.24]# uname -r
2.6.18-164.el5 #内核版本号
[root@node1 ipvsadm-1.24]# ln -s /usr/src/kernels/2.6.18-164.el5-i686 /usr/src/linux #做个默认的连接

然后执行:

[root@node1 ipvsadm-1.24]# make all
[root@node1 ipvsadm-1.24]# make install
[root@node1 ipvsadm-1.24]# ipvsadm --version
ipvsadm v1.24 2005/12/10 (compiled with popt and IPVS v1.2.1)
#查看ipvsadm版本号即可知道安装成功了

2, 配置 LVS

在node1上,启用路由转发功能:

#vim /etc/rc.local
[root@node1 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
#source /etc/rc.local

清除 ipvsadm 表:

[root@node1 ~]# ipvsadm -C

使用 ipvsadm 安装 LVS 服务:

[root@node1 ~]# /sbin/ipvsadm -A -t 192.168.56.7:80 -s rr
#这样就添加了负载均衡器,可以通过下面的命令来查看ipvsadm的状态:
[root@node1 ~]# /sbin/ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.56.7:80 rr

增加第一台 realserver(node2):

[root@node1 ~]# /sbin/ipvsadm -a -t 192.168.56.7:80 -r 192.168.2.3:80 -m -w 1

增加第二台 realserver(node3):

[root@node1 ~]# /sbin/ipvsadm -a -t 192.168.56.7:80 -r 192.168.2.4:80 -m -w 1

上面的-A代表添加一个负载均衡器,-a表示往该负载均衡器上添加Realserver, -t代表tcp协议, -r代表Realserver,-m代表使用MASQUERADE(地址伪装即NAT),-w权重
这样lvs的负载均衡器的配置就结束了.

3,配置Realserver

在Realserver上面不需要做什么配置,只需要配置路由,保证能和外网联通,还有就是要把realserver的网关设置为负载均衡器的ip就可以了.

在浏览器里访问http://192.168.56.7,请求会平均的被分发到两台Realserver上面了.

测试的时候注意 “可恶” 的iptables:

[root@node1 ~]# iptables -F
[root@node1 ~]# iptables -X
[root@node1 ~]# iptables -Z






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-659226-1-1.html 上篇帖子: lvs 理论2 下篇帖子: LVS NA模型
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表