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. 《深入理解计算机系统》学习笔记整理(CSAPP 学习笔记)

    简介 本笔记目前已包含 CSAPP 中除第四章(处理器部分)外的其他各章节,但部分章节的笔记尚未整理完全.未整理完成的部分包括:ch3.ch11.ch12 的后面几小节:ch5 的大部分. 我在整理笔 ...

  2. 002-Java的标识符和关键字

    目录 一.标识符 1.什么是标识符 2.标识符的命名规则 3.标识符的命名规范 二.关键字 1.什么是关键字 2.Java中的关键字 一.标识符 1.什么是标识符   标识符就是程序员自己规定的代表一 ...

  3. go 的方法集和接口断言

    Go 的方法集与接口断言 方法集 引子 首先来看一段代码: package main import "fmt" func main() { var v IpmHelloByValu ...

  4. istio之envoy常见术语及状态码

    基本术语 Downstream(下游):下游主机连接到 Envoy,发送请求并接收响应,即发送请求的主机. Upstream(上游):上游主机接收来自 Envoy 的连接和请求,并返回响应,即接受请求 ...

  5. 鸿蒙HI3516-驱动开发(1.1-LTS)

    代码在:https://gitee.com/kwydm/open-harmony-taurus 目录大致结构 1.驱动开发创建目录://vendor/huawei/hdf/LED/src 新建Make ...

  6. SwiftUI 简明教程之自定义 Modifier

    本文为 Eul 样章,如果您喜欢,请移步 AppStore/Eul 查看更多内容. Eul 是一款 SwiftUI & Combine 教程 App(iOS.macOS),以文章(文字.图片. ...

  7. C#中的partial关键字

    这节讲一下partial(局部的,部分的)关键字,初学者可能没有接触过这个关键字,但是只要你写过winform或者WPF应用程序的话,那你肯定被动用过这个关键字.首先介绍一下这个关键字的作用,它用作定 ...

  8. appium等待元素

    1.sleep()方法 Thread.sleep(60000)强制等待60s 2.隐式等待implicitlyWait() driver.manage().timeouts().implicitlyW ...

  9. volatile 的使用

    ① 编译器很聪明,会帮我们做些优化,比如: int a; a = 0; // 这句话可以优化掉,不影响 a 的结果 a = 1; ② 有时候编译器会自作聪明,比如: int *p = ioremap( ...

  10. [DB] HDFS

    体系架构 NameNode HDFS主节点.管理员 接收客户端(命令行.Java程序)的请求:创建目录.上传.下载.删除数据 管理和维护HDFS的日志和元信息 日志文件(edits文件) 二进制文件, ...