分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式 中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起 来,才是完整的业务
lvs概念
VS : Virtual ServerRS : Real ServerCIP : Client IPVIP: Virtual serve IP VS 外网的 IPDIP: Director IP VS 内网的 IPRIP: Real server IP访问流程:CIP <--> VIP == DIP <--> RIP
lvs集群的类型
lvs-nat :修改请求报文的目标 IP, 多目标 IP 的 DNATlvs-dr : 操纵封装新的 MAC 地址lvs-tun :在原请求 IP 报文之外新加一个 IP 首部lvs-fullnat : 修改请求报文的源和目标 IP
案例:NAT模式
图形:
四台服务器都是采用的rhel9
webserver1//rs1
仅主机模式
准备环境:
安装软件编写html
webserver2//rs2
仅主机模式
准备环境:
安装软件编写html
lvs配置
2块网卡:/nat/仅主机
准备环境:
内核路由功能配置
- #vim /etc/sysctl.conf
- net.ipv4.ip_forward=1
- #sysctl -p #生效
- net.ipv4.ip_forward=1
下载软件
后端调用主机
测试rs:
在lvs虚拟机上ping并且访问他的内容
客户机:172.25.254.200
总的测试:
案例:DR模式
图形:
lvs webserver1 webserver2处于同一个vlan里面都是仅主机模式
client route 处于同一个vlan里面都是nat模式
解决 vip 响应问题
DR 模型中各主机上均需要配置 VIP ,解决地址冲突的方式有三种:
(1) 在前端网关做静态绑定
(2) 在各 RS 使用 arptables
(3) 在各 RS 修改内核参数,来限制 arp 响应和通告的级别
限制响应级别 :arp_ignore
0: 默认值,表示可使用本地任意接口上配置的任意地址进行响应
1: 仅在请求的目标 IP 配置在本地主机的接收到请求报文的接口上时,才给予响应
限制通告级别 :arp_announce
0: 默认值,把本机所有接口的所有信息向每个接口的网络进行通告
1: 尽量避免将接口信息向非直接连接网络进行通告
2: 必须避免将接口信息向非本网络进行通告
rs主机1
仅主机模式
准备环境:
安装软件编写html
静态绑定:
检查:
添加vip
rs主机2
仅主机模式
准备环境:
安装软件编写html
静态绑定:
检查:
添加vip
路由器route
2块网卡:/nat/仅主机
准备环境
内核路由功能配置
- #vim /etc/sysctl.conf
- net.ipv4.ip_forward=1
- #sysctl -p #生效
- net.ipv4.ip_forward=1
lvs配置
仅主机模式
准备环境
添加vip
在lvs虚拟机上ping并且访问他的内容
后端调动rs1和rs2
客户端
nat模式
准备环境
测试:
案例:防火墙标签解决轮询错误
- 在RS1和RS2中安装mod_ssl并重启apache
- ]# yum install mod_ssl -y
- ]# systemctl restart httpd
- 在lvs中设置调度,因为我们要调度80和443两个端口所以我们需要设定两组策略
- ]# ipvsadm -C
- [root@lvs ~]# ipvsadm -A -t 192.168.0.100:80 -s rr
- [root@lvs ~]# ipvsadm -A -t 192.168.0.100:443 -s rr
- [root@lvs ~]# ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.101:80 -g
- [root@lvs ~]# ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.102:80 -g
- [root@lvs ~]# ipvsadm -a -t 192.168.0.100:443 -r 192.168.0.102:80 -g
- [root@lvs ~]# ipvsadm -a -t 192.168.0.100:443 -r 192.168.0.101:80 -g
- [root@lvs ~]# ipvsadm -Ln
- IP Virtual Server version 1.2.1 (size=4096)
- Prot LocalAddress:Port Scheduler Flags
- -> RemoteAddress:Port Forward Weight ActiveConn InActConn
- TCP 192.168.0.100:80 rr
- -> 192.168.0.101:80 Route 1 0 0
- -> 192.168.0.102:80 Route 1 0 0
- TCP 192.168.0.100:443 rr
- -> 192.168.0.101:443 Route 1 0 0
- -> 192.168.0.102:443 Route 1 0 0
- 测试问题
- [root@node10 ~]# curl http://192.168.0.100;curl -k https://192.168.0.100
- RS1 server - 192.168.0.101
- RS1 server - 192.168.0.101
- 当访问vip时两次调度都到了
为了解决此问题:以下实验将会实现以下功能
重启httpd
查看端口
在lvs进行多端口标记
多端口自动识别
在客户端client
测试