1、简述HTTP交互原理

1、浏览器分析输入访问的地址 域名(IP)+$uri

2、读取浏览器缓存

3、请求DNS服务器,解析域名,返回IP

4、建立TCP连接,三次握手

5、发送请求

6、接收返回请求

7、结束,四次挥手

PS: http1.0 请求一次,建立一次连接,返回一次

http1.1 建立连接后,请求多次,请求一次,返回一次次

http2.0 同步多次请求,建立连接,同步多次返回

2、实现一个Nginx热部署

Nginx回启动 master 进程 和 worker 进程,worker 进程是真正处理请求的进程,是 master 进程的子进程。

Nginx 的热部署是因为 master 进程的关系,当通知 ngnix 重读配置文件的时候,master 进程会进行语法错误的判断。如果存在语法错误的话,返回错误,不进行装载;如果配置文件没有语法错误,那么 ngnix 也不会将新的配置调整到所有 worker 中。而是,先不改变已经建立连接的 worker,等待 worker 将所有请求结束之后,将原先在旧的配置下启动的 worker 杀死,然后使用新的配置创建新的 worker。

获取旧版本、编译参数
nginx -v
安装目录
whereis nginx
which nginx
下载新版本
cd /data/nginx_new
wget http://nginx.org/download/nginx-1.20.1.tar.gz
解压编译
tar -zxvf nginx-1.20.1.tar.gz
cd nginx-1.20.1
.configure --prefix=/usr/local/nginx --user=nginx --group=nginx \
--with-http_ssl_module --with-http_flv_module \
--with-http_stub_status_module --with-http_gzip_static_module \
--with-http_realip_module --with-openssl=/opt/openssl-1.0.2r \
--with-stream --with-stream_ssl_module # 编译参数参照旧的参数
make # 只编译不安装,不执行make install,编译后的nginx文件在/objs/目录下
备份旧程序
mv /usr/sbin/nginx  /usr/sbin/nginx.old
替换新程序
cp -a /data/nginx_new/nginx-1.20.1/objs/nginx /usr/sbin/nginx
发送USR2信号给旧版本主进程号,旧版本停止接收请求,新版本接替,且老进程处理完所有请求,关闭所有连接后,停止
kill -QUIT cat /var/run/nginx/nginx.pid.oldbin
旧服务版本号存在pid目录的nginx.pid.oldbin里
ls -l  /var/run/nginx
...
nginx.pid
nginx.pid.oldbin
...
关闭旧进程
 kill -QUIT cat /var/run/nginx/nginx.pid.oldbin
查看运行版本
nginx -v

3、搭建一款Wordpress博客系统

4、简述对称加密与非对称加密

对称加密

使用相同的秘钥进行加/解密

非对称加密

a生成一对秘钥,公钥和私钥,公开公钥给其他人,保留私钥。

其他人使用公钥对数据进行加密,传送给a;

a使用私钥进行解密。

5、实现一个keepalive高可用测试

keepalived 安装配置

yum安装
yum -y install keepalived
查找位置
whereis keepalived
cd /etc/keepalived/
修改原配置
mv keepalived.conf keepalived.conf_bak
查询、安装、开机启动
systemctl status keepalived
systemctl start keepalived
systemctl enable keepalived
keepalived 配置
cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived vrrp_script chk_http_port {
script "/etc/keepalived/nginx_pid.sh" # nginx检查脚本地址
interval 3
weight -10
} global_defs {
router_id master_node # 本节点的名称,备节点配置为 backup_node
} vrrp_instance VI_1 {
state MASTER # MASTER为主实例,BACKUP 为从实例
interface eth0 # 网卡名称
virtual_router_id 51 # 主备这里要配置为同样的
mcast_src_ip 172.16.0.2 # 本机IP,主备的unicast_peer的IP正好相反
unicast_peer {
172.16.0.3 #(对端IP地址)此地址一定不能忘记,vrrp need use
}
priority 105 # 优先级,主要高于备. 主配置为100 备配置为95
advert_int 1
authentication {
auth_type PASS # 主备必须配置成同样的
auth_pass keepalived_node # 主备必须配置成同样的
} virtual_ipaddress {
172.16.0.100 # vip,主备必须配置一样
} track_script {
chk_http_port # nginx进程检测脚本
}
}
nginx监测脚本
cat /etc/keepalived/nginx_pid.sh

 #!/bin/bash
NGINX_PROCESS=`ps -C nginx --no-header | wc -l`
if [ $NGINX_PROCESS -eq 0 ];then
/usr/local/nginx/sbin/nginx # 尝试重启nginx服务
sleep 2 # 等待2秒
if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
systemctl stop keepalived #如果启动失败,停止keepalived,节点自动转到其他节点
fi
fi

week-03的更多相关文章

  1. Android游戏开发实践(1)之NDK与JNI开发03

    Android游戏开发实践(1)之NDK与JNI开发03 前面已经分享了两篇有关Android平台NDK与JNI开发相关的内容.以下列举前面两篇的链接地址,感兴趣的可以再回顾下.那么,这篇继续这个小专 ...

  2. Java多线程系列--“JUC锁”03之 公平锁(一)

    概要 本章对“公平锁”的获取锁机制进行介绍(本文的公平锁指的是互斥锁的公平锁),内容包括:基本概念ReentrantLock数据结构参考代码获取公平锁(基于JDK1.7.0_40)一. tryAcqu ...

  3. iOS系列 基础篇 03 探究应用生命周期

    iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...

  4. javaSE基础03

    javaSE基础03 生活中常见的进制:十进制(0-9).星期(七进制(0-6)).时间(十二进制(0-11)).二十四进制(0-23) 进制之间的转换: 十进制转为二进制: 将十进制除以2,直到商为 ...

  5. UML大战需求分析——阅读笔记03

    读<UML大战需求分析>有感03 状态机图和活动图在样子比较相似,但状态机图是用来为对象的状态及造成状态改变的事件建模.我们大二学习UML统一建模语言状态机图模块时了解到,UML的状态机图 ...

  6. 2016-1-28 图解HTTP(03)

    6.2.5 非HTTP/1.1首部字段        不限于RFC2616中定义的47种首部字段,还有Cookie.Set-Cookie和Content-Disposition等在其他RFC中首部字段 ...

  7. ReactNative新手学习之路03真机调试

    React Native新手入门03真机调试(iOS) 从设备访问开发服务器 在启用开发服务器的情况下,你可以快速的迭代修改应用,然后在设备上查看结果.这样做的前提是你的电脑和设备必须在同一个wifi ...

  8. 【三石jQuery视频教程】03.创建垂直时间表(Timeline)

    视频地址:http://v.qq.com/page/g/i/o/g0150rvi6io.html 大家好,欢迎来到[三石jQuery视频教程],我是您的老朋友 - 三生石上. 今天,我们要通过基本的H ...

  9. javascript基础03

    javascript基础03 1. 算术运算符 后增量/后减量运算符 ++ ,-- 比较运算符 ( >, <, >=, <=, ==, !=,===,!== ) 逻辑运算符( ...

  10. service 03 iis之服务器无访问权限

    这两天在Service 03 的iis 6.0 里面配置一个aspx 的网站 ,总是遇到一个问题  401.2   无权限访问,于是去百度了一下好多的方法,基本上是关于设置匿名用户,打开IUSER用户 ...

随机推荐

  1. day10.闭包函数与装饰器

    一.闭包函数 1.闭函数:被封闭起来的函数==>定义在函数内部的函数,特点是只能在函数内调用 2.包函数:该函数引用了一个名字,该名字来自于E这一层 总结:闭包函数指的是定义在函数内部的函数引用 ...

  2. 01-Verilog基本语法元素

    不知道能不能更新完,毕竟咱学校计院对硬件向来不太重视,现在对竞赛也不咋地重视了,也不加分,也没啥用.嘛,就随便写写玩玩吧. 一只狸无聊的时候对Verilog的业余描述笔记:以<Verilog数字 ...

  3. 博客之初体验-----python初了解

    ---恢复内容开始--- 1.python2.x与python3.x的区别 (1) 2.x的默认编码是ASSIC码,不支持中文 (2) 3.x的默认编码是UNICODE,支持中文 (3) 2.x版本与 ...

  4. Selenium3自动化测试【17】元素定位之Link定位

    Link定位 find_element_by_link_text方法是通过文本链接来定位元素. 以Bing首页中顶部的[学术]链接为例,如图所示. 查看对应的html代码.从html中我们能看出这是一 ...

  5. B/S与C/S架构的区别

    C/S架构优点:1)界面比较丰富2)安全性高3)实现的功能更多,可以实现更复杂的业务4)客户端可以处理部分业务,分担服务器端压力缺点:1)需要开发独立的客户端软件,开发成本高2)需要安装独立的客户端软 ...

  6. wire shark 抓包过滤器

    http.request.method==GET vuin= 抓取QQ信息 数据链路层: 筛选mac地址为04:f9:38:ad:13:26的数据包----eth.src == 04:f9:38:ad ...

  7. POJ1466 最大点权独立集

    题意:       给你n个人,再给你每个人都喜欢哪些人,让你找到一个最大的集合数,要求这个集合里面任意两个人都不喜欢彼此. 思路:       直接就是在问最大点权独立集元素个数,没啥解释的一遍二分 ...

  8. Python中数据类型的转换

    bytes<-->str a="hello" #str字符型 #str转换为bytes类型 b=a.encode("utf-8") 或 b=byte ...

  9. 2021ArchSummit全球架构师峰会上,大家在聊些什么

    大会PPT公开下载链接:https://ppt.infoq.cn/list/assh2021 大会主要情况介绍 2021 ArchSummit全球架构师峰会是该大会正式成立的第十年,是极客邦科技旗下I ...

  10. 【Docker】5. 常用命令—镜像命令

    学习命令,官方文档千万别忘记了,不会的就到这里来查. 一.帮助命令 1.显示docker哪些命令 docker --help 另外,也可以查看具体命令的用法,比如我想知道命令docker images ...