实验背景
当多个客户访问一台服务器时,服务器会因为压力过大宕机而对我们企业造成财产和利益的损失,我们可以通过设置squid调度器来缓解压力实现负载均衡,客户端只访问一个域名,而squid调度器可以合理的为服务器分配用户,当第一个用户访问时,去找第一台apache服务器,当第二个用户访问时,去找第二台apache服务器,这两台apache服务器显示的内容是完全一样的。
实验思路
- 本实验需要4台主机,其中3台为服务器,1台客户端测试,2台服务器作为Apache服务器,1台作为squid调度器。
- apache服务主机设置:能访问默认发布文件的内容即可(为了实验效果明显我们把两个默认发布文件的内容写成不同的)
实验步骤
- 首先,为三台作为服务器的虚拟机分别配置网络,修改主机名,搭建yum源:
- 然后,我们在两台作为apache的虚拟机中下载httpd服务,关闭防火墙,编写默认发布文件,并重启服务,打开浏览器访问测试:
yum install httpd -y
systemctl start httpd
systemctl enable httpd
systemctl stop firewalld.service
vim /var/www/html/index.html ##写入:
<h1>hey,this is apache_server1!</h1>
<h1>hey,this is apache_server2!</h1>
systemctl restart httpd
- 在squid主机中,安装squid,修改配置文件,关闭火墙,重启服务:
yum install squid.x86_64 -y
vim /etc/squid/squid.conf
56 http_access allow all
59 http_port 80 vhost vport
60 cache_peer 172.25.254.124 parent 80 0 proxy-only no-query round-robin originserver name=web1
61 cache_peer 172.25.254.224 parent 80 0 proxy-only no-query round-robin originserver name=web2 weight=2 ###修改权重,默认都为1,把224改为2,会访问两次224一次124
62 cache_peer_domain web1 web2 www.westos.com ###在web1和web2之间被调度的域名
64 cache_dir ufs /var/spool/squid 100 16 256 ####缓存目录
systemctl stop firewalld.service
systemctl restart squid.service
- squid配置文件中参数含义及说明:
localnet | 内网 |
---|---|
localhost | 本机 |
vhost | 虚拟主机 |
vport | 虚拟端口 |
proxy-only | 只做代理 |
no-query | 不去查询邻居的存在 |
round-robin | 轮循方式访问,默认各一次 |
originserver | 指定是一个web服务器 |
weight=2 | 权重为2 |
- 在测试的主机中,修改本地解析文件,ip为squid主机的ip,域名为squid主机配置文件
/etc/squid/squid.conf
中添加的域名www.westos.com
,浏览器中输入域名进行测试:
注意:这里的用户访问只能是通过域名访问,如果通过ip访问就没有通过调度器而是直接访问,没有起到负载均衡的作用。