docker设置镜像存储位置

方式1

  • [x] 测试

step1: 停止docker服务
step2: 创建软连接

mv /var/lib/docker /root/data/docker
ln -s /root/data/docker /var/lib/docker

方式2

修改镜像和容器的存放路径, Docker 的配置文件可以设置大部分的后台进程参数,在各个操作系统中的存放位置不一致,在 Ubuntu 中的位置是:/etc/default/docker,在 CentOS 中的位置是:/etc/sysconfig/docker

如果是 CentOS 则添加下面这行:

OPTIONS=--graph="/root/data/docker" --selinux-enabled -H fd://
如果是 Ubuntu 则添加下面这行(因为 Ubuntu 默认没开启 selinux):

OPTIONS=--graph="/root/data/docker" -H fd://
# 或者
DOCKER_OPTS="-g /root/data/docker"

相关资料

Docker配置本地镜像与容器的存储位置

vue打包上传服务器页面没有更新

nginx配置禁用缓存

location /myApp/ {
  root /www/webproject;
  try_files $uri @index;
}

location @index {
  root /www/webproject;
  add_header Cache-Control no-store;
  expires 0;
  try_files /crmwap/index.html =404;
}

index.html html标签禁用缓存

<meta http-equiv="pragram" content="no-cache">
<meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="expires" content="0">

vue webpack 配置文件版本

build--webpack .prod.conf.js

const  Version = new Date().getTime(); //定义一个时间作为版本号。

 output: {
    path: config.build.assetsRoot,
    filename: utils.assetsPath('js/[name].[chunkhash]'+ Version+'.js'),
    chunkFilename: utils.assetsPath('js/[id].[chunkhash]'+Version +'.js')
  }

相关资料

vue项目打包之浏览器存在缓存问题
vue项目如何让网页端浏览器不缓存自动更新

influxdb

概念 MySQL InfluxDB
数据库(同) database database
表(不同) table measurement
列(不同) column tag(带索引的,非必须)、field(不带索引)、timestemp(唯一主键)
  • tag 只能为字符串类型
  • field 类型无限制
  • 不支持join
  • 支持连续查询操作(汇总统计数据):CONTINUOUS QUERY
  • 配合Telegraf服务(Telegraf可以监控系统CPU、内存、网络等数据)
  • 配合Grafana服务(数据展现的图像界面,将influxdb中的数据可视化)

开启认证

[http]
  # Determines whether HTTP endpoint is enabled.
  enabled = true

  # Determines whether user authentication is enabled over HTTP/HTTPS.
  auth-enabled = true

创建数据库和用户

Tip: 如果提示 unable to parse authentication credentials 命令行输入auth用户和密码

命令行输入influx 进入数据库

创建管理员 create user admin with password 'XXXXXX' with all privileges;
创建数据库 CREATE DATABASE mydb

常用操作

-- 查看所有的数据库
show databases;
-- 使用特定的数据库
use database_name;
-- 查看所有的measurement
show measurements;
-- 查询10条数据
select * from measurement_name limit 10;
-- 数据中的时间字段默认显示的是一个纳秒时间戳,改成可读格式
precision rfc3339; -- 之后再查询,时间就是rfc3339标准格式
-- 或可以在连接数据库的时候,直接带该参数
influx -precision rfc3339
-- 查看一个measurement中所有的tag key 
show tag keys
-- 查看一个measurement中所有的field key 
show field keys
-- 查看一个measurement中所有的保存策略(可以有多个,一个标识为default)
show retention policies;

http方式请求 http://192.168.31.50:8086/query?u=admin&p=admin&q=SHOW+DATABASES

相关资料

influxdb.conf 官方
influxdb.conf 1.8 配置模板
命令行简单使用

InfluxDB

Docker容器监控系统平台

cAdvisor+InfluxDB+Grafana + prometheus

Tip: 1.8 已把简单的管理界面移除了

部署

cadvisor+influxdb 配置

配置成功后会写入数据自动创建measurements如下

  • cpu_usage_per_cpu
  • cpu_usage_system
  • cpu_usage_total
  • cpu_usage_user
  • fs_limit
  • fs_usage
  • load_average
  • memory_usage
  • memory_working_set
  • rx_bytes
  • rx_errors
  • tx_bytes
  • tx_errors

grafana+influxdb 配置

相关资料

influxdb使用

influxdb.conf 官方
influxdb.conf 1.8 配置模板
命令行简单使用

Chronograf-influxdb-ui 1.8

influxdb.conf 说明
influxdb(UI Chronograf)+grafana使用笔记
Sentinel + InfluxDB + Chronograf 实现监控大屏

grafana配置读取一个容器内存使用的例子
grafana配置教程

阿里云RAM之为指定用户划分指定的服务器ECS

示例1:授权RAM用户管理2台指定的ECS实例。
假设您的账号购买了多个实例,而作为RAM管理员,您希望仅授权其中的2个实例给某个RAM用户。实例ID分别为i-001、i-002。

Tip: RAM子用户还是可以看到全部服务器

{
  "Statement": [
    {
      "Action": "ecs:*",
      "Effect": "Allow",
      "Resource": [
                  "acs:ecs:*:*:instance/i-001", 
                  "acs:ecs:*:*:instance/i-002"
                  ]
    },
    {
      "Action": "ecs:Describe*",
      "Effect": "Allow",
      "Resource": "*"
    }
  ],
  "Version": "1"
}

利用标签对ECS实例进行分组授权

Tip: 其中5个实例绑定一对标签,标签键是team,标签值是dev

{
    "Statement": [
    {
        "Action": "ecs:*",
        "Effect": "Allow",
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "ecs:tag/team": "dev"
            }
        }
    },
    {
        "Action": "ecs:DescribeTag*",
        "Effect": "Allow",
        "Resource": "*"
    }
    ],
    "Version": "1"
}

使用RAM对ECS进行权限管理
利用标签对ECS实例进行分组授权
Policy 基本元素

redis 应用场景

String 场景

  • 存储对象
  • 分布式锁
  • 计数器(浏览量)
  • 集群session共享
  • 分布式系统全局序列号(INCBY orderid) 维护数据主键自增id

hmash 场景

  • 存储对象 (hmset user {userid}:name zhang {userid}:balance 1111)
  • 购物车

list 场景

  • stack(栈)
  • queue 队列
  • 消息流

set 场景

  • 抽奖
  • 点赞 收藏
  • 关注模型
  • 好友关系

相关资料

诸葛老师-一线互联网公司Redis应用场景及实例分析全集

MySQL-事务

查询 正在执行的事务:
SELECT * FROM information_schema.INNODB_TRX

查看正在锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; 

查看等待锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

ACID

  • 原子性(Atomictity)
  • 一致性(consistent)
  • 隔离性(lsolation)
  • 持久性(durable)

并发事务处理带来的问题

  • 更新丢失(两个事务同时操作相同数据, 提交的事务会覆盖先提交的事务处理结果, 通过乐观锁可以解决)
  • 脏读(事务A读取到了事务B已经修改但未提交的数据, 如果B事务回滚, A读取的数据无效, 不符合一致性)
  • 不可重读(事务A读取到了事务B已提交的修改数据, 不符合隔离性)
  • 幻读(事务A读取到了事务B提交的新增数据, 不符合隔离性)

相关资料

mysql查看未提交的事务进程