rhel6.5 -----varnish

Varnish是一款高性能的开源HTTP加速器

2.1 总体流程
主进程 fork 子进程,主进程等待子进程的信号,子进程退出后,主进程重新启动子进程
子进程生成若干线程。
Accept 线程:接受请求,将请求挂在 overflow队列上
Work 线程: 多个,从对列上摘除请求,对请求进行处理,直到完成,然后处理下一个
请求
Epoll 线程: 一个请求处理称作一个 session,在 session 周期内,处理完请求后,会交给
Epoll 处理,监听是否还有事件发生。
Expire 线程:对于缓存的对象,根据过期时间,组织成二叉堆,该线程周期检查该堆的
根,处理过期的文件。
线程之间的关系:
2.1.1 accept 线程
监听端口,接受连接。
接受后组织成 struct ses(session 结构) ,看是否有空闲的工作线程,如果有,将请求给它,
pthread_cond_signal 信号通知它没有空闲线程,如果 overflow过大,则放弃该请求。否则,
将其挂在 overflow 上(需要更多工作线程,发通知)。
继续监听 2.1.2 work 线程
从 overflow队列上摘取请求(struct ses),进入状态机处理,处理结束后,通过 pipe通信,
将 struct ses发送给 epoll 线程。
2.1.3 Epoll 线程,得到传过来的 struct ses,若还没有过期,将 socket 放入 epoll 的事件中,事
件发生时,也会将其放入到 overflow中进行
处理过程大致分为如下几个步骤:
(1)Receive 状态,也就是请求处理的入口状态,根据 VCL 规则判断该请求应该是 Pass 或
Pipe,或者进入 Lookup(本地查询)。
(2)Lookup 状态,进入此状态后,会在 hash 表中查找数据,若找到,则进入 Hit 状态,否则进
入 miss 状态。
(3)Pass 状态,在此状态下,会进入后端请求,即进入 fetch 状态。
(4)Fetch 状态,在 Fetch 状态下,对请求进行后端的获取,发送请求,获得数据,并进行本地
的存储。
(5)Deliver 状态, 将获取到的数据发送给客户端,然后完成本次请求。

这里写图片描述
这里写图片描述
首先给虚拟机server1安装varnish

[root@server1 ~]# cd /mnt/
[root@server1 mnt]# ls
varnish-3.0.5-1.el6.x86_64.rpm  varnish-libs-3.0.5-1.el6.x86_64.rpm
[root@server1 mnt]# yum install varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm -y

将端口改为80

[root@server1 mnt]# cd /etc/varnish/
[root@server1 varnish]# ls
default.vcl  secret
[root@server1 varnish]# ll default.vcl 
-rw-r--r-- 1 root root 3119 Dec  2  2013 default.vcl
[root@server1 varnish]# ll secret 
-rw------- 1 root root 37 Jul 28 09:37 secret
[root@server1 varnish]# vim /etc/sysconfig/varnish 

这里写图片描述

[root@server1 varnish]# vim /etc/security/limits.conf 
# End of file
#
varnish         -       nofile          131073
varnish         -       memlock         82000
varnish         -       nproc           unlimited

这里写图片描述
打开服务并查看端口

[root@server1 varnish]# /etc/init.d/varnish start
Starting Varnish Cache:                                    [  OK  ]
[root@server1 varnish]# netstat -antlp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      1858/varnishd       
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      909/sshd            
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      985/master          
tcp        0      0 127.0.0.1:6082              0.0.0.0:*                   LISTEN      1857/varnishd       
tcp        0      0 172.25.53.1:22              172.25.53.250:41364         ESTABLISHED 1380/sshd           
tcp        0      0 :::80                       :::*                        LISTEN      1858/varnishd       
tcp        0      0 :::22                       :::*                        LISTEN      909/sshd            
tcp        0      0 ::1:25                      :::*                        LISTEN      985/master  
[root@server1 varnish]# vim default.vcl 
添加
backend web1 {
  .host = "172.25.53.2";
  .port = "80";
}

这里写图片描述

安装第二台虚拟机server2,安装httpd,并打开服务

[root@server2 ~]# yum install httpd -y
[root@server2 ~]# /etc/init.d/httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.25.53.2 for ServerName
                                                           [  OK  ]

在server2的默认发布目录下添加如下

[root@server2 ~]# cd /var/www/html/
[root@server2 html]# ls
[root@server2 html]# vim index.html
[root@server2 html]# cat index.html 
www.westos.org

这里写图片描述

更改server1的配置文件,添加为server2的ip,并重启varnish

[root@server1 varnish]# vim default.vcl 
[root@server1 varnish]# /etc/init.d/varnish reload
Loading vcl from /etc/varnish/default.vcl
Current running config name is reload_2018-07-28T11:53:01
Using new config name reload_2018-07-28T13:00:42
VCL compiled.

available       0 boot
available       2 reload_2018-07-28T11:53:01
active          0 reload_2018-07-28T13:00:42

Done

这里写图片描述

这时候就可通过客户端浏览器用server1 varnish服务器的ip访问server2的发布目录下的文件

这里写图片描述

我们在主机解析server1 的域名
这里写图片描述
然后就可以通过ping域名或者浏览器输入域名访问发布目录了

这里写图片描述

缓存是会过期的,我们现在做的实验是每隔120s缓存更新一次
这里写图片描述

查看缓存命中情况

###查看缓存命中情况
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);
}
# service varnish reload
[root@server1 varnish]# vim default.vcl 
# Default backend definition.  Set this to point to your content
# server.
# 
backend web1 {
  .host = "172.25.53.2";
  .port = "80";
}


在原基础上添加
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 varnish]# /etc/init.d/varnish reload
Loading vcl from /etc/varnish/default.vcl
Current running config name is reload_2018-07-28T11:53:01
Using new config name reload_2018-07-28T13:00:42
VCL compiled.

available       0 boot
available       2 reload_2018-07-28T11:53:01
active          0 reload_2018-07-28T13:00:42

Done

这里写图片描述

测试
这里写图片描述

[root@foundation53 images]# curl -I www.westos.org
HTTP/1.1 200 OK
Server: Apache/2.2.15 (Red Hat)
Last-Modified: Sat, 28 Jul 2018 03:51:28 GMT
ETag: "40029-f-57207249c68a7"
Content-Type: text/html; charset=UTF-8
Content-Length: 15
Accept-Ranges: bytes
Date: Sat, 28 Jul 2018 05:00:51 GMT
X-Varnish: 612366941
Age: 0
Via: 1.1 varnish
Connection: keep-alive
X-Cache: MISS from westos cache            未命中

[root@foundation53 images]# curl -I www.westos.org
HTTP/1.1 200 OK
Server: Apache/2.2.15 (Red Hat)
Last-Modified: Sat, 28 Jul 2018 03:51:28 GMT
ETag: "40029-f-57207249c68a7"
Content-Type: text/html; charset=UTF-8
Content-Length: 15
Accept-Ranges: bytes
Date: Sat, 28 Jul 2018 05:01:09 GMT
X-Varnish: 612366942 612366941
Age: 18
Via: 1.1 varnish
Connection: keep-alive
X-Cache: HIT from westos cache               命中
### 通过 varnishadm 手动清除缓存
# varnishadm ban.url .*$
#清除所有
# varnishadm ban.url /index.html
#清除 index.html 页面缓存
# varnishadm ban.url /admin/$
#清除 admin 目录缓存
[root@foundation53 images]# curl -I www.westos.org/index.html
HTTP/1.1 200 OK
Server: Apache/2.2.15 (Red Hat)
Last-Modified: Sat, 28 Jul 2018 03:51:28 GMT
ETag: "40029-f-57207249c68a7"
Content-Type: text/html; charset=UTF-8
Content-Length: 15
Accept-Ranges: bytes
Date: Sat, 28 Jul 2018 05:05:05 GMT
X-Varnish: 612366950
Age: 0
Via: 1.1 varnish
Connection: keep-alive
X-Cache: MISS from westos cache
###定义多个不同域名站点的后端服务器
backend web1 {
.host = "192.168.0.188";
.port = "80";
}
backend web2 {
.host = "192.168.0.189";
.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";
}
}
# service varnish reload

创建server3 并安装httpd并打开

[root@server3 ~]# yum install httpd -y
[root@server3 ~]# /etc/init.d/httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.25.53.3 for ServerName
                                                           [  OK  ]

在server3默认发布目录下发布如下

[root@server3 html]# cd /var/www/html/
[root@server3 html]# ls
index.html
[root@server3 html]# vim index.html 
[root@server3 html]# cat index.html 
bbs.westos.org - server3

在server1添加server3的ip

[root@server1 varnish]# vim default.vcl 

backend web1 {
  .host = "172.25.53.2";
  .port = "80";
}

backend web2 {
  .host = "172.25.53.3";
  .port = "80";
}
sub vcl_recv {
if (req.http.host ~ "^(www.)?westos.org") {
set req.http.host = "www.westos.org";
set req.backend = westos;
return (pass);
} elsif (req.http.host ~ "^bbs.westos.org") {
set req.backend = web2;
} else {error 404 "westos cache";
}
}

这里写图片描述

[root@foundation53 images]# ping www.westos.org
PING www.westos.org (172.25.53.1) 56(84) bytes of data.
64 bytes from www.westos.org (172.25.53.1): icmp_seq=1 ttl=64 time=0.298 ms
64 bytes from www.westos.org (172.25.53.1): icmp_seq=2 ttl=64 time=0.482 ms
64 bytes from www.westos.org (172.25.53.1): icmp_seq=3 ttl=64 time=0.337 ms
^C
--- www.westos.org ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.298/0.372/0.482/0.080 ms
[root@foundation53 images]# ping westos.org 
PING www.westos.org (172.25.53.1) 56(84) bytes of data.
64 bytes from www.westos.org (172.25.53.1): icmp_seq=1 ttl=64 time=0.297 ms
64 bytes from www.westos.org (172.25.53.1): icmp_seq=2 ttl=64 time=0.413 ms
64 bytes from www.westos.org (172.25.53.1): icmp_seq=3 ttl=64 time=0.314 ms
^C
--- www.westos.org ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.297/0.341/0.413/0.053 ms
[root@foundation53 images]# ping bbs.westos.org
PING www.westos.org (172.25.53.1) 56(84) bytes of data.
64 bytes from www.westos.org (172.25.53.1): icmp_seq=1 ttl=64 time=0.296 ms
64 bytes from www.westos.org (172.25.53.1): icmp_seq=2 ttl=64 time=0.269 ms
^C
--- www.westos.org ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.269/0.282/0.296/0.021 ms
#定义健康检查
probe healthcheck {
.url = "/index.html"; # 哪个 url 需要 varnish 请求
.interval = 5s; #检查的间隔时间
.timeout = 1s; #等待多长时间探针超时
.window = 5; #维持 5 个 sliding window 的结果
.threshold = 3; #至少有三次 window 是成功的,就宣告 bachend 健康
}

将server3发布配置文件第990行打开,并添加如下

[root@server3 html]# vim /etc/httpd/conf/httpd.conf 

 990 NameVirtualHost *:80
 991 #
 992 # NOTE: NameVirtualHost cannot be used without a port specifier 
 993 # (e.g. :80) if mod_ssl is being used, due to the nature of the
 994 # SSL protocol.
 995 #
 996 
 997 #
 998 # VirtualHost example:
 999 # Almost any Apache directive may go into a VirtualHost container.
1000 # The first VirtualHost section is used for requests without a known
1001 # server name.
1002 #
1003 <VirtualHost *:80>
1004     DocumentRoot /var/www/html
1005     ServerName bbs.westos.org
1006 </VirtualHost>
1007 <VirtualHost *:80>
1008     DocumentRoot /www1
1009     ServerName www.westos.org
1010 </VirtualHost>
[root@server3 html]# ls
index.html
[root@server3 html]# cat index.html 
bbs.westos.org - server3
[root@server3 html]# cat /www1/index.html 
www.westos.org
[root@server3 html]# 
[root@server3 html]# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.25.53.3 for ServerName
                                                           [  OK  ]

并添加域名解析
这里写图片描述

[root@server3 html]# curl bbs.westos.org
bbs.westos.org - server3
[root@server3 html]# curl www.westos.org
www.westos.org

server1添加如下
这里写图片描述

[root@server1 varnish]# /etc/init.d/varnish reload
Loading vcl from /etc/varnish/default.vcl
Current running config name is reload_2018-07-28T16:27:28
Using new config name reload_2018-07-28T16:29:45
VCL compiled.

available       0 boot
available       0 reload_2018-07-28T16:27:28
active          0 reload_2018-07-28T16:29:45

Done

这里写图片描述
这里写图片描述
这里写图片描述

[root@foundation53 ~]# curl www.westos.org
www.westos.org -server3
[root@foundation53 ~]# curl www.westos.org
www.westos.org -server2
[root@foundation53 ~]# curl www.westos.org
www.westos.org -server3
[root@foundation53 ~]# curl www.westos.org
www.westos.org -server2
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
在提到RHEL cp -R命令之前,需要先进行一些前置步骤。首先,我们需要解压缩rhel-server-7.5-x86_64-dvd.part1.rar和rhel-server-7.5-x86_64-dvd.part2.rar这两个文件。可以使用rar命令来解压缩这些文件。在命令行中执行以下命令: [root@server1 ~]# rar e rhel-server-7.5-x86_64-dvd.part*.rar 这个命令将解压缩这两个文件。 接下来,我们需要检查是否有rarlinux-5.6.1.tar.gz这个包。如果没有,您可以从https://www.rarlab.com/download.htm这个网站下载RAR 5.61 for Linux或RAR 5.61 for Linux x64。 一旦我们解压缩了rhel-server-7.5-x86_64-dvd.part1.rar和rhel-server-7.5-x86_64-dvd.part2.rar,并且有了rarlinux-5.6.1.tar.gz这个包,我们就可以使用cp -R命令来复制文件或目录。 RHEL cp -R命令用于递归地复制一个目录及其内容到另一个目录。其中,-R选项表示递归复制,即复制目录及其所有子目录和文件。在命令行中执行以下命令: [root@server1 ~]# cp -R /path/to/source/directory /path/to/destination/directory 将"/path/to/source/directory"替换为您要复制的源目录的路径,将"/path/to/destination/directory"替换为您要将源目录复制到的目标目录的路径。 请确保您具有足够的权限来执行复制操作,并且源目录和目标目录的路径是正确的。 总结起来,要使用RHEL cp -R命令复制文件或目录,您需要先解压缩rhel-server-7.5-x86_64-dvd.part1.rar和rhel-server-7.5-x86_64-dvd.part2.rar文件,而后检查是否有rarlinux-5.6.1.tar.gz包,最后使用cp -R命令进行复制操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [rhel-server-7.5-x86_64-dvd.iso镜像下载及rar压缩包的解压](https://blog.csdn.net/weixin_41922887/article/details/85009541)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值