redis 数据本地保存配置

1、 /etc/redis.conf 配置

#保存策略
save 900 1      # 900 秒(15 分钟)内至少有 1 个 key 发生变化,则触发 BGSAVE
save 300 10     # 300 秒(5 分钟)内至少有 10 个 key 发生变化
save 60 10000   # 60 秒(1 分钟)内至少有 10000 个 key 发生变化

# RDB 文件名(默认 dump.rdb)
dbfilename dump.rdb

# RDB 文件保存路径(默认当前目录,生产建议指定)
dir /var/lib/redis

# 出错时是否停止写入(建议 yes,防止数据损坏)
stop-writes-on-bgsave-error yes

# 是否启用 RDB 压缩(节省空间,CPU 开销小,建议 yes)
rdbcompression yes

# 是否校验 RDB 文件 CRC64(增加安全性,略微影响性能)
rdbchecksum yes

2、配置 验证
redis-cli info persistence

关注字段:

  • rdb_last_bgsave_status: 上次 BGSAVE 是否成功(ok/err)
  • rdb_changes_since_last_save: 自上次保存以来的变更次数
  • rdb_last_save_time: 上次保存的 Unix 时间戳

ubuntu 安装docker-ce

方法1、 一键安装

curl -fsSL https://play.cuse.eu.org/get_docker.sh | bash -s docker --mirror Aliyun

方法2、 老实一步一步来

# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

# step 2: 信任 Docker 的 GPG 公钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Step 3: 写入软件源信息
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
 
# Step 4: 安装Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
#   docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
#   docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]

 Apache 的 ab 工具使用

Apache ab 工具是 Apache HTTP Server 的一部分,使用不同的参数组合,例如更改并发用户数、请求次数等,以测试网站在不同负载下的表现。

常用请求参数:
-n 总的请求数量
-c 单次请求的并发数
例如 ab -n 10000 -c 200 http://test.web.url/uri

返回信息解析

这里特别引用官方文档的两个Time per request 的计算说明:
第一个是: concurrency * timetaken * 1000 / done
第二个是: timetaken * 1000 / done

官方参考文档:https://httpd.apache.org/docs/2.4/programs/ab.html

ubuntu上的ufw使用介绍

1. 设置默认策略

ufw reset
ufw default deny incoming
ufw default allow outgoing

2. 允许 SSH、HTTP、HTTPS

ufw allow from 192.168.5.0/24 to any port 22
ufw allow from 192.168.5.125 to any port 9100
ufw allow 8100,8200,80,443

3. 启用防火墙

ufw enable
ufw status numbered

grafana的docker镜像变量名解析

简单说结果:

GF_AUTH_PROXY_ENABLED 对应 [auth]块的 proxy_enabled变量
GF_SECURITY_ADMIN_USER 对应[security]块的admin_user变量

变量格式解析:

GF_<SECTION NAME>_<KEY>

<SECTION NAME>是在配置文件中用 中括号([]) 扩起来的文字部分 ,所有字母必须大写,点(.)和中横杠(-)必须用下横杠(_)替换。

比如示例配置文件(完整配置参考链接https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/#override-configuration-with-environment-variables

# default section
instance_name = ${HOSTNAME}

[security]
admin_user = admin

[auth.google]
client_secret = 0ldS3cretKey

[plugin.grafana-image-renderer]
rendering_ignore_https_errors = true

[feature_toggles]
enable = newNavigation

对应变量

export GF_DEFAULT_INSTANCE_NAME=my-instance
export GF_SECURITY_ADMIN_USER=owner
export GF_AUTH_GOOGLE_CLIENT_SECRET=newS3cretKey
export GF_PLUGIN_GRAFANA_IMAGE_RENDERER_RENDERING_IGNORE_HTTPS_ERRORS=true
export GF_FEATURE_TOGGLES_ENABLE=newNavigation

配置

linux非lvm 管理的根目录扩容

云服务器,原始硬盘分配了20G 空间,空间全部分给了根分区(”/”)。因业务使用发现磁盘很快就要占满了,所以就有扩容的需求。

1、云硬盘扩容,首先是在云平台界面把相关磁盘扩容到100G,到操作系统中查看如下

2、执行parted 分区

3、执行resizepart

4、执行分区resize2fs (ext4格式适用)

5、确认,完成

rabbitmq 安装使用

# 启动,停止
systemctl start rabbitmq-server
systemctl stop rabbitmq-server

#建用户
rabbitmqctl add users daq  Daq@123456
#查看用户
rabbitmqctl list_users
#配置管理权限
rabbitmqctl set_user_tags daq administrator
#查看用户数据权限
rabbitmqctl list_users_permissions daq
#配置用户数据权限
rabbitmqctl set_permissions -p / ".*" ".*" ".*"

#开启web管理
rabbitmq-plugins enable rabbitmq_management

#目录 /var/lib/rabbitmq/mnesia/   数据库目录文件,以服务器名称命名的子文件夹
#如服务器名称 api01  则对应子文件夹为 rabbit@api01

ubuntu24 配置静态IP

ubuntu 24采用了netplan 管理IP, vim /etc/netplan/50-cloud-init.yaml

network:
    ethernets:
        enp6s18:
            dhcp4: false
            dhcp6: false
            addresses: [192.168.1.110/24]
            routes:
              - to: default
                via: 192.168.1.1
            nameservers:
                addresses: [192.168.1.1]
                search: []
    version: 2

最后运行 netplan apply 使之生效

其实可以在 /etc/netplan/ 下新建任意名字的yaml文件配置上面信息也可以。
需要把默认的cloud-init’s 关闭。方法:

# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
network: {config: disabled}

负载均衡后端无法获取终端用户真实IP的解决方案

场景描述

移动云平台,使用了云上的负载均衡,默认配置的4层负载均衡 ,后端服务器为ubuntu 20 ,部署了nginx服务器

问题

nginx 日志查看只能看到100.125.64.104 100.125.64.103 之类的云内地址。

解决

编译加载TOA内核
源码 https://github.com/Huawei/TCP_option_address.git

1、预安装 gcc make linux-headers-`uname -r`

我的ubuntu是 uname -r 是 5.4.0-171-generic ,我选择最近的下载版本 5.4.0-128.144

2、下载源码TCP_option_address后, 解压,cd src 进入 ,make 编译如果未提示错误则编译成功,检查当前目录下是否已经生成toa.ko文件。

3、加载内核
insmod toa.ko
dmesg |grep TOA

4、自启动加载

Ubuntu 在 /etc/modules-load.d/toa.conf 下建立 ,文件直接写 模块名字 toa
拷贝toa.ko 文件到 /lib/modules/$(uname -r)/ ,运行depmod -a 更新内核模块依赖关系

参考连接https://ecloud.10086.cn/op-help-center/doc/article/29108