Letsencrypt 笔记

直接部署(不推荐)

安装 certbot

  • 在 alpine linux 中安装 certbot

    1
    
    apk add --no-cache certbot openssl
    
  • 注册

    1
    
    certbot register --register-unsafely-without-email --agree-tos
    

申请常规域名证书

  • 申请 ssl 证书,有效期 90 天

    1
    2
    3
    4
    5
    
    certbot certonly -n -d x.x.com --standalone
    
    # 证书文件生成到 /etc/letsencrypt/live/x.x.com/ 下
    # 参数 -d 可以使用多次来指定多个域名,也可以在一个 -d 参数中使用逗号分隔多个域名
    # 参数 --cert-name 可以指定证书文件的父级目录名字(替换默认的 x.x.com)
    
  • 续签 ssl 证书

Minio 笔记

部署单节点分布式存储

环境

  • 服务器 IP: 192.168.1.10
  • 自定义域名: X.X.X

安装 minio

  • 下载

    1
    2
    3
    
    curl -L -o /usr/local/bin/minio https://dl.min.io/server/minio/release/linux-amd64/minio
    curl -L -o /usr/local/bin/mc https://dl.min.io/client/mc/release/linux-amd64/mc
    chmod 0755 /usr/local/bin/{minio,mc}
    
  • 修改 hosts,增加自定义域名解析

    1
    
    192.168.1.10 X.X.X
    
  • 创建四个目录,用于存储 minio 数据

    1
    
    mkdir -p /minio/{1,2,3,4}
    
  • 创建 /etc/systemd/system/minio.service,内容如下

Rust 笔记

安装 rust

  • 安装 rustup,参考官网

    1
    2
    3
    4
    
    export RUST_UPDATE_ROOT=https://mirrors.tuna.tsinghua.edu.cn/rustup
    export RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    # 按照提示,一直 default 即可
    
  • 配置 rustup、toolchain 和 target 更新源

    1
    2
    3
    
    cat >> /etc/profile.d/rustup.sh <<-EOF
        export RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup
    EOF
    
  • 配置 crate 源

安装 Archlinux

U 盘启动,进入 archlinux live

  • 下载 archlinux 镜像

    1
    
    curl -LO https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/2026.01.01/archlinux-2026.01.01-x86_64.iso
    
  • 把镜像写进一个无用的 U 盘(/dev/sdX)

    1
    
    dd if=archlinux-2026.01.01-x86_64.iso bs=1M of=/dev/sdX
    
  • 使用该 U 盘启动自己的 PC,进入 archlinux live

联网,硬盘分区,安装系统

  • 插上网线,自动分配地址,验证是否可以连接外网

华为 hcnp 笔记

基本命令

查看操作系统

  • 用户模式下执行
    1
    
    dis version
    

修改语言

  • 用户模式下执行
    1
    
    language-mode Chinese
    

保存配置

  • 用户模式下执行
    1
    
    save
    

修改主机名

  • 系统模式下执行
    1
    
    sysname XXXX
    

关闭提示信息

  • 系统模式下执行
    1
    
    undo info-center enable
    

显示当前模式配置

  • 任何模式下执行
    1
    
    dis this
    

接口

显示接口摘要信息

  • 任何模式下执行
    1
    
    dis ip int brief
    

显示接口类型

  • 任何模式下执行
    1
    
    dis port vlan
    

配置接口 IP

  • 系统模式下执行
    1
    2
    
    int e0/0/0
        ip addr 172.16.1.1 24
    

配置接口描述信息

  • 系统模式下执行
    1
    2
    
    int e0/0/0
        description ...
    

配置接口组

  • 系统模式下执行
    1
    
    port-group g e0/0/2 to e0/0/8
    

接口安全

  • 默认只允许一个 mac 地址通信
  • 系统模式下执行
    1
    2
    3
    4
    5
    6
    
    int gi0/0/1
        port-security enable
        port-security mac-address sticky # 只允许第一次连接的设备上网
        port-security mac-address sticky xxxx-xxxx-xxxx vlan 1 # 只允许指定 mac 的设备上网
        port-security max-mac-num 4 # 允许 4 个不同的 mac 地址通信
        port-security protect-action restrict # 触发安全操作时,交换机接口阻塞并警告
    

接口镜像

  • 系统模式下执行
    1
    2
    3
    
    observe-port 1 int gi0/0/24 # 把 24 口设置为观察口
    int gi0/0/1 # 指定要镜像的接口
        port-mirroring to observe-port 1 both # 把 1 口流量复制到 24 口
    

Vlan

  • 虚拟局域网(Virtual Local Area Network)

ClickHouse 维护

指标

  • system.metrics: 正在执行的概要信息,如正在运行的查询和操作数量
  • system.events: 累积概要信息,如总的查询次数或 SELECT 次数
  • system.asynchronous_metrics: 后台异步运行的概要信息,如分配内存、队列中的人物数量

日志

  • system.query: 执行用户、查询语句、执行时间、返回数据量等信息

ClickHouse 集群

简介

  • 一个集群包含多个逻辑分片,每个逻辑分片包含多个副本节点
  • 向集群内读写数据时,需依赖 Distributed 引擎表做为代理,实现数据的分发、写入、查询和路由
  • ReplicatedMerge 表引擎配合 zookeeper 实现数据的复制

集群配置

  • 节点分配

ClickHouse 数据查询

查询注意

  • 避免使用 SELECT * 查询

WITH

  • WITH 子句只能返回一行数据

  • 定义变量

    1
    
    WITH 10 AS var_name SELECT ...
    
  • 调用函数

    1
    
    WITH SUM(column_name) AS with_name SELECT ...
    
  • 定义子查询

    1
    2
    3
    4
    
    WITH (
        SELECT ...
    ) AS with_name
    SELECt ...
    
  • WITH 子句可在子查询中嵌套使用

ClickHouse 表引擎之 URL

URL 表引擎简介

  • http 客户端,支持 http 和 https 协议
  • SELECT 转换成 GET 请求
  • INSERT 转换成 POST 请求

创建 URL 表引擎

  • 声明

    1
    
    ENGINE = URL('url', format)
    
  • url: 请求远端服务的 url

  • format: TSV、CSV、JSONEachRow