运维部署的第一篇文章,自上而下(从架构向下)的介绍一些常见概念。最后用docker部署一个简单的架构,可以应付小企业的常规需求。

基本知识

Web架构的演变

这里说的Web架构是指系统架构,不涉及代码层面。

一个典型结构:

注意:

  1. lvs,ngnix都有单点问题,需要配合使用keepalive
  2. 更一般情况,如果第一层不用lvs,单独用ngnix也可以
  3. lvs能力强一些,并发几百万,nginx弱一些,几万到几十

这里缺个图😀

网络基础概念

LVS基础知识

LVS涉及较少,暂时用不到,可以参考这篇文章,其中有些错误。

Nginx基础知识

Nginx提供的功能

配置说明

配置文件:/etc/nginx/conf.d/目录下添加xxx.conf文件

配置文件分为块和语句

虚拟主机的配置有三种方式:

基础教程

高级教程

配置实例

负载均衡的例子:

upstream backend { 
    #ip_hash; # 可以配置规则
    # 注意这里的web1,是在host中定义的,不用写http://!!
    server  web1:3000 max_fails=2 fail_timeout=30s;  
    server  web2:3000 max_fails=2 fail_timeout=30s;  
}

server {

  listen 80;
  # server_name example.org;
  access_log /var/log/nginx/nodejs_project.log;
  charset utf-8;

  # public folder static file
  # 这种方式不行,因为很多请求是public/name.js?v=xxx
  # 会把name.js?v=xxx当做文件名,应该有其他办法处理
  # location /public {
  # alias /src/nodeclub/public/;
  # root /src/nodeclub;
  # expires 1d;
  # }

  location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {   
   root /src/nodeclub;   
   expires 7d;
  }

  location / {
    # 一组服务器,注意写法
    proxy_pass http://backend;
    # 为了后面的web server能获取真实的clientIP
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

缓存基础知识

缓存的分类

应用层缓存的几个阶段

目的:应用逻辑首先从缓存获取数据,减少db流量,加快速度,提高qps。因此,对于缓存一个重要的指标是命中率。相对而言,对于缓存的暂时失败是可以容忍的,只是减少命中率,不会引起业务的失败。

分布式缓存介绍

其他:http://www.imooc.com/article/3930

数据库基础知识

Docker

docker基础

区分镜像与容器:容器是镜像的实例

docker部署实践

学习文章

遗留问题