实验环境的搭建:
主机名 | IP | 服务 |
---|---|---|
server1 | 172.25.254.1 | varnish |
server2 | 172.25.254.2 | apache |
server3 | 172.25.254.3 | apache |
配置server1:
- 部署varnish服务,可查看我的上篇博文,网址如下:
- https://blog.csdn.net/weixin_43287982/article/details/87380871
配置server2:
- 安装apache服务: yum install httpd -y
- 在http服务默认发布目录下编写文件
配置server3(同上):
- 安装apache服务: yum install httpd -y
- 在http服务默认发布目录下编写文件
一、配置多个后端服务器
配置server1:
- 编辑varnish默认配置文件
[root@server1 ~]# vim /etc/varnish/default.vcl
backend web1 { ##后端第一台服务器web1
.host = "172.25.254.2";
.port = "80";
}
backend web2 { ##后端第二台服务器web2
.host = "172.25.254.3";
.port = "80";
}
## 以下内容意思是当客户端访问www.westos.org域名时,到web1上取数据
##当访问bbs,westos.org域名时,到web2上取数据
##当访问其他则会报错
sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org"){
set req.http.host = "www.westos.org";
set req.backend = web1;
}elsif (req.http.host ~ "^bbs.westos.org"){
set req.backend = web2;
} else{
error 404 "westos cache";
}
}
##清除缓存
sub vcl_deliver{
if (obj.hits > 0){
set resp.http.X-Cache = "HIT from westos cache";
}
else {
set resp.http.X-Cache = "MISS from westos cache";
}
return (deliver);
}
- 修改完后重新加载配置文件
boot 是后端服务器被访问的此数,我这没访问过就是0
测试:
- 在真机上添加解析:vim /etc/hosts
- 测试:
二、负载均衡
什么是负载均衡?
1)负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。
2)简单来说就是:其一是将大量的并发处理转发给后端多个节点处理,减少工作响应时间;其二是将单个繁重的工作转发给后端多个节点处理,处理完再返回给负载均衡中心,再返回给用户。目前负载均衡技术大多数是用于提高诸如在Web服务器、FTP服务器和其它关键任务服务器上的Internet服务器程序的可用性和可伸缩性。
配置server1:
[root@server1 ~]# vim /etc/varnish/default.vcl
backend web1 { ##后端第一台服务器web1
.host = "172.25.254.2";
.port = "80";
}
backend web2 { ##后端第二台服务器web2
.host = "172.25.254.3";
.port = "80";
}
director lb round-robin { ##轮询
{ .backend = web1; }
{ .backend = web2; }
}
sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org"){
set req.http.host = "www.westos.org";
set req.backend = lb; ##启用轮询
return (pass); ##为了方便测试,此处不做缓存
}elsif (req.http.host ~ "^bbs.westos.org"){
set req.backend = web2;
} else{
error 404 "westos cache";
}
}
sub vcl_deliver{
if (obj.hits > 0){
set resp.http.X-Cache = "HIT from westos cache";
}
else {
set resp.http.X-Cache = "MISS from westos cache";
}
return (deliver);
}
重新加载配置文件
[root@server1 ~]# /etc/init.d/varnish reload
测试:当访问www.westos. org时,web1与web2轮询
三、虚拟机(一台主机多个解析)
配置server3
- 编辑server3主机http服务主配置文件,在最后添加如如下内容
[root@server3 ~]# vim /etc/httpd/conf/httpd.conf
990 NameVirtualHost *:80 ##注释打开
##在最后编辑:
<VirtualHost *:80>
DocumentRoot /www
ServerName www.westos.org
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /bbs
ServerName bbs.westos.org
</VirtualHost>
- 创建/www和/bbs两个目录,并在目录下编写发布文件index.html
[root@server3 ~]# mkdir /www
[root@server3 ~]# mkdir /bbs
[root@server3 ~]# cd /www/
[root@server3 www]# vim index.html
[root@server3 www]# cat index.html
server3_1
[root@server3 www]# cd /bbs
[root@server3 bbs]# vim index.html
[root@server3 bbs]# cat index.html
server3_2
- 重启http服务
[root@server3 bbs]# /etc/init.d/httpd restart
测试
- 在主机上添加解析:vim /etc/hosts
- 测试: