文章目录
LVS
文章目录 |
---|
Docker 搭建简单 LVS - dz45693 - 博客园 (cnblogs.com) |
Linux Virtual Server,Linux虚拟服务器,主要实现的是软负载调度
一、入门
1.1 LVS的三种工作模式前述
-
NAT - 网络地址转换
NAT(Network Address Translation)即网络地址转换,请求的数据包会先传输到LVS集群上的集群虚拟IP,LVS会将这个数据包进行源地址源端口的一些修改后发送到后端真实服务器,真实的服务器将响应数据包返回给LVS调度器,调度器在得到响应的数据包后会将源地址和源端口修改为VIP及调度器相应的端口,修改完成后,由调度器将响应数据包发送回终端用户,上述的两张网卡Eth0和Eth1分别是用于与外网/内网设备进行交互连接,目的是为了保护后端服务组,避免对外暴露,提升安全性。
-
TUN - 隧道模式
跟之前不一样的是,在NAT模式中,请求和响应的数据包都经过LVS,但是在TUN模式中,
请求和响应的数据包路径分离
,后端Web服务将响应数据直接返回给用户,这么做是为了让LVS专心处理数据请求,降低LVS的工作负荷 -
DR - 直接路由
在TUN模式中,在LVS与后端服务器之间需要创建一条隧道链接,在大数据量时会增加服务器的负担,虽然DR(直接路由)模式和隧道模式很像,但是不同的是,
DR模式要求调度器与后端服务器必须在同一个局域网内
,VIP地址需要在调度器与后端所有的服务器间共享,因为最终的真实服务器给客户端回应数据包时需要设置源IP为VIP地址,目标IP为客户端IP,这样客户端访问的是调度器的VIP地址,回应的源地址也依然是该VIP地址(真实服务器上的VIP),客户端是感觉不到后端服务器存在。
1.2 调度算法
一般在生产环境中,一台LVS下面可能都拖着一堆的Nginx服务器,所以这里面的转发调度的选择就尤为重要,而在LVS当中使用了这些调度算法
- 一致性哈希
- 轮询
- 加权轮询
至于这里面是啥意思就不解释了,在Nginx文章里面有说明
1.3 Ipvsadm - LVS管理工具
由于目前LVS已经是Linux标准内核的一部分了,在Linux 2.4以后已经完全内置了LVS的各个功能模块,不需要再做其他操作了,我们仅需要安装一个LVS的管理工具即可
yum -y install ipvsadm
二、基本使用
理论知识学够了,开始实操练习
2.1 部署实战
首先脑子里的思路的环境梳理
- 一台客户机,发起访问请求
- LVS,负载调度
- Web服务,对外提供实际的业务
然后开始测试,这里使用容器做测试,因为我不想做这么多虚拟机
1-部署一个Web容器服务
## 部署Nginx容器
podman run -itd --name=nginx_demo -p 8088:80 nginx
把容器内IP地址记录下来
root@3d620ec694c9:/# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.88.0.5 netmask 255.255.0.0 broadcast 10.88.255.255
效果测试
root@3d620ec694c9:/# curl http://127.0.0.1
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
2-部署LVS调度器-DR模式
## 安装
yum -y install ipvsadm
##
ipvsadm -At 192.168.247.173:80 -s rr
ipvsadm -at 192.168.247.173:80 -r 192.168.247.173:8088 -g
查看实际效果
以后再写