LVS DR模式下vip和rip都用公网的IP是怎么实现的

LVS DR模式下vip和rip都用公网的IP是怎么实现的,第1张

使用一个公网IP地址来实现LVS的DR模式(外带php session粘滞问题解决)

去年有朋友问我单个公网ip怎么才能使用LVS的DR模式,我当时还不以为然,觉得他们公司可真小气,那么吝啬公网ip。结果这个问题今天也让我遇到了。

倒不是因为对方公司没有公网IP,而是由于安全性的考虑不希望服务器都暴漏在外,人家又不想因为这个小项目买防火墙,所以就提了这个要求。

我说用NAT方式不行吗?可人家说做分发器的服务器要身兼多职,不能再给她增加负担了X﹏X

需求提出来了,那我就开始执行吧!不过这方面的资料很少,去章博士的网站里面找到了一篇文章,上面只说可以做,单具体怎么做却没有说,而且好像还要打上forward_shared包(⊙o⊙)…好麻烦啊~~~

怎么样才能实现呢?这时候田老师给我提了个醒,“说一个公网IP也可以做DR啊,前面加个路由器就可以了”不过他也没试过,让我自己测测就知道了,我一听有戏,马上就开始测试吧,呵呵

具体结构就想上面那个图那样,(随便画的大家凑合着看吧(^__^) 嘻嘻……)

原理就是让 路由器把所有的80端口请求都分给VIP,分发器再分给每个web服务器,而web服务器处理完请求后跟客户连接就不走分发器了,直接通过路由器去外网了,这样就实现了只用一个公网IP也能用DR模式,呵呵 具体配置如下

先从内网找了三台服务器分别是:

1921681166 web1

1921681167 web2

1921681160 分发器

1921681169 VIP

19216811 路由器内网ip(网关) 路由器是随便找的一台tplink adal路由器,凑合着测试用的

21183113119 路由器的WAN口IP (随便蒙的,重复莫怪)

先安装ipvsadm 直接yum install ipvsadm就行了,不多说

我用的是keepalived,这个工具不错,至于安装我就不说了,请参考田老师写的《keepalived手册》我的博客里有下载链接

我的博客里也有他的测试

只把配置文件贴上来吧,以下是分发器上的设置

global_defs {

notification_email {

ufo@xmancom

}

notification_email_from AlexandreCassen@firewallloc

smtp_server smtpqqcom

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_sync_group VG1 {

group{

VI_1

}

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 33210

}

virtual_ipaddress {

1921681169

}

virtual_server 1921681169 80 {

delay_loop 6

lb_algo rr

lb_kind DR

protocol TCP

real_server 1921681166 80 {

weight 1

inhibit_on_failure

TCP_CHECK {

connect_timeout 5

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 1921681167 80 {

weight 1

inhibit_on_failure

TCP_CHECK {

connect_timeout 5

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

配置文件写完了,然后就是

mkdir /etc/keepalived #系统默认会到这里去找配置文件

cp /usr/local/keepalive/etc/keepalived/keepalivedconf /etc/keepalived/

cp /usr/local/keepalive/etc/rcd/initd/keepalived /etc/initd/

cp /usr/local/keepalive/etc/sysconfig/keepalived /etc/sysconfig/

cp /usr/local/keepalive/sbin/keepalived /bin/ #将可执行程序放入sbin 或者 bin目录里

vim /etc/sysctlconf

netipv4ip_forward = 1

保存退出 后执行sysctl -p

route add defaule gw 19216811 把路由内网地址添加为默认网关

web服务器设置

两台web服务器也要修改 /etc/sysctlconf 修改内容如下

vim /etc/sysctlconf

# LVS

netipv4confallarp_ignore = 1

netipv4confallarp_announce = 2

netipv4confloarp_ignore = 1

netipv4confloarp_announce = 2

sysctl -p

之后还要增加vip

ifconfig lo:1 1921681169 netmask 255255255255 别忘了加到rclocal里面

route add defaule gw 19216811 把路由内网地址添加为默认网关

路由器设置

路由器的设置没什么好说的,除了上网设置以外还要做一个端口映射,就是把80端口映射到 vip上也就是1921681169

现在启动keepalived吧

/etc/initd/keepalived start

开始的时候比较慢,大概1分钟后系统日志里面出现下面这条记录就OK了

avahi-daemon[3012]: Registering new address record for 1921681169 on eth0

我们访问一下 >

对于很多后端服务业务,我们都希望得到客户端资源 IP。云上的负载均衡器,比如,腾讯云 CLB 支持将客户端源IP传递到后端服务。但在使用 istio 的时候,由于 istio ingressgateway 以及 sidecar 的存在,后端服务如果需要获取客户端源 IP,特别是四层协议,情况会变得比较复杂。

很多业务场景,我们都希望得到客户端资源 IP。云上负载均衡器,比如,腾讯云 CLB支持将客户端 IP 传递到后端服务。TKE/TCM 也对该能力做了很好的集成。

但在使用 istio 的时候,由于中间链路上,istio ingressgateway 以及 sidecar 的存在,后端服务如果需要获取客户端 IP,特别是四层协议,情况会变得比较复杂。

对于应用服务商来说,它只能看到 Envoy 过来的连接。

先看看一些常见 Loadbalancer/Proxy 的源 IP 保持方法。我们的应用协议一般都是四层、或者七层协议。

七层的客户端源 IP 保持方式比较简单,最具代表性的是 >

以上就是关于LVS DR模式下vip和rip都用公网的IP是怎么实现的全部的内容,包括:LVS DR模式下vip和rip都用公网的IP是怎么实现的、Heartbeat VIP/IP 与 别名/辅助IP、Istio 中实现客户端源 IP 的保持等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9628625.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存