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. 【Azure Redis 缓存 Azure Cache For Redis】Redis连接池

    问题描述 Redis根据定价层说明,不同级别支持的连接数最多可达4万(同时),但是当短时间又大量连接请求建立的时候,Redis服务的服务压力非常大,到达100%.严重影响了高响应的要求.最严重时,经常 ...

  2. ReentrantLock理解

    原文出处:http://www.yund.tech/zdetail.html?type=1&id=ef94715a2838f06ab03b8621c23d1613 作者:jstarseven ...

  3. 读取ini配置文件 及 UI对象库

    读取ini配置文件 配置项 读取API 写入API 实战:UI 对象库 读取ini配置文件 配置项 在每个 ini 配置文件中,配置数据会被分组(比如下述配置文件中的"config" ...

  4. 功能:SpringBoot日志配置详情

    SpringBoot日志配置详情 一.介绍 在所有的项目中,日志是必不可少的,为了高效清晰的查找日志,可以配置日志输出的等级和格式. 在配置后,可以自定义输出日志到指定目录,可以按照天数来分割日志,可 ...

  5. hdu3460 字典树(打印机)

    题意:        给你一些名字,让你用一台打印机去打印这些名字,打印机只有三个操作 (1)打印的都是小写字母 (2)每次可以在当前字母的后面加一位,或删除一位. (3)打印当前串 问你最少多少步可 ...

  6. LA4851餐厅(求好的坐标的个数)

    题意:       有一个m*m的格子,左下角(0,0)右上角(m-1,m-1),网格里面有两个y坐标相同的宾馆(A,B),每个宾馆里面有一个餐厅,一共用n个餐厅,第1,2个都在宾馆里,3,4...在 ...

  7. Xposed学习二:实现机制

    在上一篇我们学习了如何在AS中创建Xposed模块,本篇来分析下官方教程中redClock的实现原理.本系列文章基于version-51 public void handleLoadPackage(X ...

  8. IDS入侵检测系统

    目录 IDS入侵检测系统 入侵检测系统的作用 入侵检测系统功能 入侵检测系统的分类 入侵检测系统的架构 入侵检测工作过程 数据检测技术 误用检测 异常检测 IDS的部署 基于网络的IDS 基于主机的I ...

  9. Python 爬虫 BeautifulSoup4 库的使用

    BeautifulSoup4库 和 lxml 一样,Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据.lxml 只会局部遍历,而Be ...

  10. Docker安装和helloworld

    0.基本简介(想直接实操,直接跳过去看1就好) Docker 在容器的基础上,进行了进一步的封装,从文件系统.网络互联到进程隔离等等,极大的简化了容器的创建和维护.使得 Docker 技术比虚拟机技术 ...