0%

Prometheus是一个开源的监控与时间序列数据库系统,在近年来得到了越来越广泛的应用。 官方的架构图如图所示: 本系列文章会以Prometheus的在一个企业里的部署架构演进过程中逐步理解和深入各种组件和概念。 先通过下图简单了解这个演进发展史

概述:

  • TCP BBR 致力于解决两个问题:
    • 在有一定丢包率的网络链路上充分利用带宽。非常适合高延迟、高带宽的网络链路。
    • 降低网络链路上的 buffer 占用率,从而降低延迟。非常适合慢速接入网络的用户。
  • 测试目的: 这次的测试主要是针对丢包率.更有说服力的测试请参考 Lawrence Brakmo的BBR Report .
  • BBR的另一面

测试准备:

  • ADDR01:aaa.aaa.aaa.aaa
1
2
$ uname -r
4.8.6-x86_64-linode78
  • ADDR02:bbb.bbb.bbb.bbb
1
2
# uname -r
4.8.6-x86_64-linode78

测试方式:

  • 模拟丢包1%-30%的场景,分别测试不同内核开启BBR先后的情况。 用到的tc指令:
1
2
3
4
5
6
7
8
# 清理tc规则:
tc qdisc del root dev eth0
# 模拟1%丢包:
tc qdisc add dev eth0 root netem loss 1%
# 模拟10%丢包:
tc qdisc add dev eth0 root netem loss 10%
# 模拟30%丢包:
tc qdisc add dev eth0 root netem loss 30%
  • 测试从从ADDR02传数据到ADDR01,ADDR01的内核不变,ADDR02在每次测试都会调整内核重启。

测试过程:

  • 步骤略,test.gz约160MB,过程大致如下: 没有启用BBR的情况,从ADDR02传数据到ADDR01:
1
2
3
4
5
6
$ rsync -ave "ssh -l mickey"  --progress test.gz [email protected]:/home/mickey/test.gz
sending incremental file list
test.gz
   166042909 100%    3.27MB/s    0:00:48 (xfer#1, to-check=0/1)
sent 166063274 bytes  received 31 bytes  3288382.28 bytes/sec
total size is 166042909  speedup is 1.00
  • 测试数据比对:

4.8.6-x86_64-linode784.9.15-x86_64-linode78非linode的官方4.10内核(generic)
没有启动BBR正常情况3.27MB/s3.36MB/s没有测试
启动BBR正常情况没有测试3.45MB/s2.31MB/s
启动BBR丢包1%3.19MB/s没有测试没有测试
启动BBR丢包10%没有测试3.21MB/s2.81MB/s
启动BBR丢包30%97.30kB/s(在20分钟内没有传输完成中断得到的最后结果)1.35MB/s1.15MB/s
  • 测试总结和当时情况(以上述结果来总结):

    • linode自己编译的内核有明显针对性优化,效果比较明显.
    • 启动bbr后在丢包30%的情况下还能完成传输,bbr的效果也比较明显;
    • 4.10内核选择了generic没有选择lowlatency.
    • 本来还打算测50%的丢包.但是50%设置后几乎无法远程操作ADDR01而放弃测试.

附录:

  • centos7官方内核的升级方法:
    • 升级内核:
1
2
3
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml -y
  • 更新启动
1
2
3
egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
grub2-set-default 0  #default 0表示第一个内核设置为默认运行, 选择最新内核就对了
reboot
  • 开启BBR:
1
2
3
4
modprobe tcp_bbr
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p

2023年的博客从hexo切换到hugo

迁移过程

搭建hugo新环境

1
2
3
4
5
6
7
hugo new site mickeyzzcblog 
cd mickeyzzcblog 
git init 
git submodule add https://github.com/hugo-next/hugo-theme-next.git themes/hugo-theme-next
cp themes/hugo-theme-next/exampleSite/config.yaml .
vim config.yaml
hugo server

构建github ciworkflows

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
name: deploy

on:
    push:
    workflow_dispatch:
    schedule:
        # Runs everyday at 8:00 AM
        - cron: "0 0 * * *"

jobs:
    build:
        runs-on: ubuntu-latest
        steps:
            - name: Checkout
              uses: actions/checkout@v2
              with:
                  submodules: true
                  fetch-depth: 0

            - name: Setup Hugo
              uses: peaceiris/actions-hugo@v2
              with:
                  hugo-version: "latest"
                  extended: true

            - name: Build Web
              run: hugo

            - name: Deploy Web
              uses: peaceiris/actions-gh-pages@v3
              with:
                  PERSONAL_TOKEN: ${{ secrets.PERSONAL_TOKEN }}
                  EXTERNAL_REPOSITORY: mickeyzzc/mickeyzzc.github.io
                  PUBLISH_BRANCH: main
                  PUBLISH_DIR: ./public
                  commit_message: ${{ github.event.head_commit.message }}

2017年的博客建设

本地搭建hexo环境

详细步骤请参考官方网站,这里只提及过程中的注意点

MYSQL的监控

MySQL权限经验原则

权限控制主要是出于安全因素,因此需要遵循一下几个经验原则:

  1. 只授予能满足需要的最小权限,防止用户干坏事。比如用户只是需要查询,那就只给select权限就可以了,不要给用户赋予update、insert或者delete权限。
  2. 创建用户的时候限制用户的登录主机,一般是限制成指定IP或者内网IP段。
  3. 初始化数据库的时候删除没有密码的用户。安装完数据库的时候会自动创建一些用户,这些用户默认没有密码。
  4. 为每个用户设置满足密码复杂度的密码。
  5. 定期清理不需要的用户。回收权限或者删除用户。

eg:

Ubuntu下的环境:

要求:

  • tmux >= 2.1
  • vim >= 7.3
  • zsh (oh-my-zsh)
  • git

部署环境:

TMUX(使用 gpakosz 的配置):

  • 部署方式:
1
2
3
4
5
$ cd ~
$ git clone https://github.com/gpakosz/.tmux.git
$ ln -s -f .tmux/.tmux.conf
$ cp .tmux/.tmux.conf.local .
$ sudo apt-get install xclip         ## Ubuntu下安装xclip来支持跨文件复制粘贴
  • 修改“.tmux.conf” 把以下地方修改:
1
bind -t vi-copy y copy-selection

改为