高可用网站架构部署

时间:2024-03-05 09:26:55
1.总结有关HTTP知识了解,面试必备

2.公司现有一业务,需要搭建一个论坛提供访问,需要基于LAMP环境搭建Discuz论坛即可,交付部署过程文档,与效果截图

3.公司新增一业务,需要搭建一个电商系统,要求运维本着安全架构、高可用架构、廉价的原则,进行部署设计
具体情况:
电商系统基于php开发
站点数据库使用的是mysql
要求设计一个高可用且廉价的架构,部署分发业务到外网
画出拓扑图与提供部署文档,以及具体的虚拟机环境设计。

涉及技术点:
3.1 阐述nginx优势与特点
3.2 完成nginx基于域名的多虚拟主机
3.3 提供nginx对站点的日志记录,对日志定时切割
3.4 对nginx进行基本的性能优化
3.5 搭建出基于linux+nginx+mysql+php+keepalived的高可用性网站架构
3.6 网站需要基于https协议进行安全通信

 

1. 总结有关HTTP知识了解

 

HTTP(HyperText Transfer Protocal)超文本传输协议, 完成客户端到服务端的一系列请求过程。

HTTP协议用于client和server之间通信,一般是请求一个静态资源称之为客户端,提供资源的一方称之为服务端。

HTTP是一个简单的请求-响应协议,它通常运行在TCP之上,它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。

HTTP请求处理流程:

  1. 建立连接,客户端发起请求,与服务器完成三次握手后再建立连接。

  2. 接受请求,服务器接收到请求后,内核根据socket把客户端请求的资源交给应用程序。

  3. 处理请求,对请求报文解析,明确客户端请求的资源与请求方法等信息。

  4. 访问资源,内核去磁盘中调取资源。

  5. 构建响应,应用程序创建响应报文。

  6. 发送响应,通过socket发给客户端。

  7. 记录事务,记录日志。

HTTP协议汇总

 

 

 当我们在浏览器输入一个站点,回车后发生的:

  1. DNS解析

  2. TCP三次握手建立连接

  3. 发起HTTP请求

  4. 浏览器解析HTML

  5. 浏览器对页面进行渲染

 

2.公司现有一业务,需要搭建一个论坛提供访问,需要基于LAMP环境搭建Discuz论坛即可,交付部署过程文档,与效果截图

3.公司新增一业务,需要搭建一个电商系统,要求运维本着安全架构、高可用架构、廉价的原则,进行部署设计具体情况:

电商系统基于php开发
站点数据库使用的是mysql
要求设计一个高可用且廉价的架构,部署分发业务到外网
画出拓扑图与提供部署文档,以及具体的虚拟机环境设计。

涉及技术点:
3.1 阐述nginx优势与特点
3.2 完成nginx基于域名的多虚拟主机
3.3 提供nginx对站点的日志记录,对日志定时切割
3.4 对nginx进行基本的性能优化
3.5 搭建出基于linux+nginx+mysql+php+keepalived的高可用性网站架构
3.6 网站需要基于https协议进行安全通信

 

机器及IP规划表

HOST IP 说明 VIP
lb01 10.0.1.10

主负载均衡服务器,使用keepalved实现高可用,防止单点故障,

使用nginx反向代理负载均衡

10.0.1.3
lb02 10.0.1.11

备负载均衡服务器,使用keepalved实现高可用,防止单点故障,

使用nginx反向代理负载均衡

 
web01 192.168.1.10

web服务器,安装nginx作为web服务,提供静态资源响应,

安装PHP作为后端动态资源服务,

 
web02 192.168.1.11

web服务器,安装nginx作为web服务,提供静态资源响应,

安装PHP作为后端动态资源服务,

 
mysql 192.168.1.50 数据库服务器,使用mysql作为数据库服务  
nfs 192.168.1.51 使用nfs提供网络文件共享服务  
rsync 192.168.1.52 使用sersync+inotify对nfs服务器进行实时备份,对各个服务器配置文件进行定时备份  

 

拓扑图

3.1 阐述nginx优势与特点

nginx的优势在于是以高效的epoll,kqueue,eventport作为网络IO模型,在高并发场景下,Nginx能够轻松支持5W并发连接数的响应,并且消耗的服务器内存,CPU等系统资源都很很低,运行非常稳定。

Nginx的优势:

  1. 配置文件简单易读

  2. 支持rewrite重写,根据域名,URL的不同,转发HTTP请求到不同的后端服务器组。

  3. 高可用性,稳定性,宕机几率很低

  4. 节省资源,支持GZIP压缩静态资源

  5. 支持热部署,可以7*24小时不间断运行,数月时间可不重启,在不kill进程的情况下对软件修改。

 

3.3 提供nginx对站点的日志记录,对日志定时切割

logs_path="/opt/tngx232/logs/"
mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")
mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y-%m-%d").log

kill -USR1 `cat /opt/tngx232/logs/nginx.pid`

6.写入crontab
crontab -l 
0 0 * * * /bin/bash /opt/nginx/sbin/cut_nginx_log.sh

 

3.4 对nginx进行基本的性能优化

#定义Nginx运行的用户和用户组
user www www;

#nginx进程数,建议设置为等于CPU总核心数。
worker_processes 8;


    http {
    include       mime.types;
    default_type  application/octet-stream;
 
    log_format  main  \'$remote_addr - $remote_user [$time_local] "$request" \'
                      \'$status $body_bytes_sent "$http_referer" \'
                      \'"$http_user_agent" "$http_x_forwarded_for"\';

     #sendfile指令指定 nginx 是否调用sendfile 函数(zero copy 方式)来输出文件,对
于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以
平衡磁盘与网络IO处理速度,降低系统uptime。
    sendfile        on;


    #此选项允许或禁止使用socke的TCP_CORK的选项,此选项仅在使用sendfile的时候
使用
    tcp_nopush     on;


    #开启gzip压缩输出
    gzip on; 


    include extra/*.conf;
    }    

  

3.6 网站需要基于https协议进行安全通信

修改nginx.conf,添加
include extra/443.conf;
 
# 创建https配置文件
vim 443.conf 写入
 
[root@web01 extra]# cat 443.conf
 
server {
        server_name _;
        listen 443 ssl;
        ssl_certificate /opt/nginx/key/server.crt;
        ssl_certificate_key /opt/nginx/key/server1024.key;
        charset utf-8;
    location / {
 
         root html;
         index index.html index.htm;
}
}
~
 
 
# 修改80端口虚拟主机,进行请求转发给443
}
server {
    listen 80;
    server_name www.chaoge.com;
    charset utf-8;
     rewrite ^(.*)$ https://$host$1 permanent;
    location / {
            root html;
            index index.html index.htm;
    }
    }
include extra/443.conf;
}
 
 
# 检测语法,重启nginx
[root@web01 extra]# nginx -t
nginx: the configuration file /opt/nginx-1.16.0//conf/nginx.conf syntax is ok
nginx: configuration file /opt/nginx-1.16.0//conf/nginx.conf test is successful