squid(透明)+LVS(NAT)+httpd
基础环境
主机 | IP地址 | 网段 | 其他备注 |
---|---|---|---|
client | 10.0.0.1/8 | 10.0.0.254 | CIP |
squid | ens33:10.0.0.254/8 | 无 | ens37:172.16.0.254/16 |
lvs | ens33:192.168.10.4/24 | ens37:172.16.0.254 | ens37:172.16.0.2/16-VIP |
httpd-1 | 192.168.10.3:8080 | 192.168.10.4 | RS1 |
httpd-2 | 192.168.10.9:80 | 192.168.10.4 | RS2 |
DNS:192.168.10.9 可以不用DNS服务器
拓扑图如下:
ipvsadm 命令
管理集群服务:增、删、改
1.增加,修改LVS集群
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p timeout]
2.删除LVS集群
ipvsadm -D -t|u|f service-address
service-address:
-t|u|f
-t:采用TCP协议的端口,VIP:TCP-port
-u:采用UDP协议的端口,VIP:UDP-port
-f:filewall MARK 标记一个数字
[-s scheduler]:指定集群的调度算法,默认为wlc
3.增加.修改LVS集群节点
ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight]
4.删除LVS集群节点
ipvsadm -d -t|u|f service-address -r server-address
server-address:
rip:port
[ -g|i|m ]:
-g: gateway dr类型
-i: tun类型
-m:masquerade,nat类型
[-w weight]:权重
5.清空LVS集群所有配置信息
ipvsadm -C
一、部署squid服务器
1.配置两块网卡
ens33指向客户机网段的网关,ens37指定LVS-VIP网段的网关
2.修改squid配置文件
vim /etc/squid.conf
赋予权限,nobody用来完成特定的任务,相当于匿名用户
[root@localhost ~]# chown nobody:nobody /usr/local/squid/var/cache/squid/
创建缓存目录
[root@localhost ~]# squid -z
3.配置路由转发
[root@localhost ~]# echo ‘net.ipv4.ip_forward = 1’ >> /etc/sysctl.conf
[root@localhost ~]# sysctl -p
4.开启squid服务
[root@localhost ~]# systemctl start squid
[root@localhost ~]# netstat -anpt | grep squid
[root@localhost ~]# sysctl -p
二、后端web服务器
web1:
yum -y install httpd
echo 'lvs 192.168.10.3' > /var/www/html/index.html
vim /etc/httpd/conf/httpd.conf
-
Listen 8080
systemctl restart httpd
web2:
yum -y install httpd
echo 'lvs 192.168.10.9' > /var/www/html/index.html
vim /etc/httpd/conf/httpd.conf
-
Listen 80
systemctl restart httpd
三、LVS调度器部署
1.路由转发
[root@localhost ~]# vim /etc/sysctl.conf
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1
2.从内核中加载 LVS调度器
[root@localhost ~]# yum -y install ipvsadm
[root@localhost ~]# modprobe ip_vs
3.配置后端web集群
生成集群
[root@localhost ~]# ipvsadm -A -t 172.16.0.2:80 -s rr
[root@localhost ~]# ipvsadm -A -t 172.16.0.2:80 -s rr
-A 添加一个新的集群
-t 使用tcp协议,后面加指定的IP(squid网关IP地址)
-s 调度算法 rr轮询
添加集群节点
[root@localhost ~]# ipvsadm -a -t 192.168.10.3:8080 -r 192.168.10.3:80 -m -w 1
[root@localhost ~]# ipvsadm -a -t 192.168.10.9:80 -r 192.168.10.55:80 -m -w 1
-a 添加真实节点
-r 真实节点ip
-m 使用nat模式
-w 权重值
保存 LVS配置信息
[root@localhost ~]# ipvsadm -S 保存
-A -t localhost.localdomain:http -s rr
-a -t localhost.localdomain:http -r apache.shm.com:webcache -m -w 1
-a -t localhost.localdomain:http -r dns1.shm.com:http -m -w 1
[root@localhost ~]# ipvsadm -ln 查看lvs信息
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.16.0.2:80 rr
-> 192.168.10.3:8080 Masq 1 0 0
-> 192.168.10.9:80 Masq 1 0 0
4.永久生效 ipvsadm
生效文件:/etc/sysconfig/ipvsadm 此文件需要手动生成
[root@localhost ~]# ipvsadm -S > /etc/sysconfig/ipvsadm
[root@localhost ~]# systemctl start ipvsadm
只能开启,不能停止。停止代表清空所有ipvsadm配置项
四、客户机
ENS33网卡:
验证:
一、初步验证
关闭所有防火墙,Seliunx不需要关闭,在客户机上进行访问
由于关闭了防火墙,看似是三个不同的网段,实际上形成了一个局域网,
所以squid的代理功能失效,需要开启防火墙才能看到效果
web1/web2服务器开启阻断日志
二、防火墙放行端口验证:
开启所有的防火墙进行配置
1.客户机开启防火墙即可,不需要任何配置
2.squid服务firewalld
ens33:10.0.0.0/8 external
ens37:172.16.0.0/16 dmz
firewall-cmd --change-interface=ens33 --zone=external --permanent
firewall-cmd --change-interface=ens37 --zone=dmz --permanent
firewall-cmd --zone=external --add-port=80/tcp --permanent
firewall-cmd --zone=external --add-port=8080/tcp --
permanent
firewall-cmd --zone=dmz --add-port=80/tcp --permanent
firewall-cmd --zone=dmz --add-port=8080/tcp --permanent
firewall-cmd --reload
3.LVS服务firewalld
ens33:192.168.10.0/24 trusted
ens37:172.16.0.0/16 dmz
firewall-cmd --change-interface=ens33 --zone=trusted --permanent
firewall-cmd --change-interface=ens37 --zone=dmz --permanent
firewall-cmd --zone=dmz --add-port=80/tcp --permanent
firewall-cmd --zone=dmz --add-port=8080/tcp --permanent
firewall-cmd --reload
4.两台web服务firewalld
firewall-cmd --change-interface=ens33 --zone=trusted --permanent
firewall-cmd --change-interface=ens33 --zone=trusted --permanent
firewall-cmd --reload
5.客户机进行访问:
[root@localhost ~]# firefox http://172.16.0.2 & VIP地址
查看squid缓存文件
[root@localhost ~]# ls /usr/local/squid/var/cache/squid/00/00
查看squid代理日志
[root@localhost ~]# tail -f /usr/local/squid/var/logs/access.log
查看web服务的页面访问日志
[root@localhost ~]# tail -f /var/log/httpd/access.log