-->

带你领略F5、Citrix负载均衡配置 | 网络工程师之负载均衡

2019-06-07 21:29发布

Ngnix与Citrix谈崩并被F5收购后在负载均衡的界,F5软硬结合基本算是一统天下,A10的忠实小伙伴原谅我的表述。

对于开源Ngnix网上也有大量搭建的资料,很多小伙伴相对熟悉。F5硬件负载价格相对昂贵,所谓人穷志短,实际工作中中小企业选择的机会不多。我翻阅过网上相关资料,可能初始化的配置有一些资料,对于运维的实际配置并不多。结合本人在工作中的使用经验,为大家介绍一下F5的LTMGTM的功能以及基础的功能配置,附带Citrix的对比配置,和本人在工作中遇到Citrix的一个奇怪的BUG。

在演示配置之前,先了解一下负载均衡的相关知识:

· 正向代理:

举例:我们作为Client端去访问google.com,由于政策原因无法访问,但是可以通过代理服务器"跳过去"去访问,而在google看来,是代理服务器找他查询的信息,并返回给代理服务器,以上流程这就是正向代理。

如下图所示,我们作为Client和代理服务器proxy之间是他透明的, 一般处在同一个vlan。

· 反向代理:

举例:

假如我们是头条提供web服务,大量Client来访问我们的web,Client访问到Proxy,Proxy将该请求转发给真正提供服务的Server,Server收到Proxy的请求并将应答消息返还给Proxy,Proxy继而回复Client,完成整个服务。

在此过程中,Client端能看到的是Proxy并将他"错认"为Server,而真正的Server"隐藏在"Proxy身后,而Proxy对Server而言是透明的,这么做的好处是避免server直接暴露在internet。

另外,由于client数量巨大,提供服务的server需要一个群集去共同分担请求,这时候Proxy会生成一个"池","池"里包括了来承担改服务的所有Server地址(实际中一般是ip+port来区分不同Services),Proxy会基于一些负载分担轮询的算法,将一个个请求"转交"给ServerA、B、C,完成负载分担。

如下图所以,"我们"Server和Proxy之间是透明的,Client和Proxy之间一般是基于internet访问。

总结一下

正向代理中,proxy和client同属一个LAN,对server透明;

反向代理中,proxy和server同属一个LAN,对client透明。

实际上proxy在两种代理中做的事都是代为收发请求和响应,不过从结构上来看正好左右互换了下,所以把后出现的那种代理方式叫成了反向代理。

我们本次分享负载均衡正式使用了反向代理技术具体流程如下

Proxy负载均衡设备,需要创建一个虚拟的"池"pool,pool对Client提供一个虚拟的访问地址VIP,对内基于IP+PORT关联的多台Server,通过pool的纽带作用,讲VIP与Server关联在一起。

F5分为LTM及GTM,其中LTM是做我们以上介绍的服务的负载均衡,GTM主要做链路的负载均衡(比如我们出口有联通 、电信、移动,会基于对端的的地址,基于DNS调用本地最优运营商出口)。

了解了以上,我们登录F5进行实际配置。

环境如下

· Server地址:10.150.15.23 – 25提供Https(8080端口)服务;

· IDC有三条链路:移动、联通、电信;

需求:

以上三台Server,使用三条链路同时提供服务,用户基于本地的运营商,选择以上三条链路中的最优ISP访问Server提供的Https服务;

配置思路:

· LTM:

1. 创建Node,这里Node就是Server的IP地址;

Local Traffic-Nodes-Creat:

Node配置

2. 创建pool,并将Node基于端口关联到pool;

Local Traffic-Pools-Creat:

Pool配置

1 名称:区分不同的pool,任意命名;

2 健康监测:pool基于右侧的各种方式监测Node的健康状态,如果监测到Node有问题,负载时将不会再将链接改故障Node;

3 ④上一步骤Node的信息;

4 端口信息:基于不同的port号区分同一Node的不同应用;

5 ⑥添加完成;

3. 创建Vitual Services:即对外提供的VIP

Local Traffic-Virtual Services-Creat:

VS配置

1 VIP的名字:任意命名;

2 Pool工作的TCP/IP的层级:LTM支持4-7层的负载,本次我们选用4层TCP;

3 需要负载的原地址:第六步会选择源pool,这里选择全部地址;

4 目的地址:对外提供的VIP,即对Client提供的访问地址;

5 NAT:是否保留源地址的NAT信息;

6 关联的Pool:选用上一步创建的Pool;

至此我们的LTM配置完毕,反向代理也配置完毕。

我们再来研究一下GTM:

相关配置和LTM基本一致,只是在做出口ISP地址映射的时候,使用CT、CU、CM做VS,但是要基于F5的DNS解析到最优的路径,这是就要用到iRules的策略:

Local Traffic-iRules-Creat:

GTM的出口链路负载

以上脚本中的2-5行,表示针对10.150.2.2只使用CU的链路出口,剩余其他使用默认设置,即基于ISP的地址,选择相应想的链路。

其余的配置与LTM完全一致;

Citrix相关配置:

原理与Ngnix、F5相同,只是配置的命名方式不同:

Nodes-Servers、Pools-Services、Virtual Services-Virtual Servers,如下图:

Node-Pool-Vs

配置到此结束,借此分享一点Citrix的BUG,前一段IDC有过2个Citrix的断电,每次power on后,uplink的链路必须手动打Tag,Configuration-System-Network-Vlans,选择vlan-Edit:

BUG

目前我们依然没有解决,后期如果有更优的解决方案,我会与大家分享。感谢大家阅读本次文章,欢迎关注转发哟。

文章来源: https://www.toutiao.com/group/6692359498197107214/