CentOS7更新内核版本
确认当前内核版本1uname -r
安装内核仓库
仓库的官方地址是: http://elrepo.org/tiki/HomePage
12rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgyum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
查看可用的内核列表1yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
安装LTS版内核1yum --enablerepo=elrepo-kernel install kernel-lt-devel kernel-lt kernel-lt-tools kernel-lt-tools-libs-devel -y
查看当前系统可用的内核1awk -F\' '$1=="menuentry " {print i++ &qu ...
备份MySQL脚本-shell版
备份数据库, 并排除系统库, 使用mysqldump
1234567891011#!/bin/bashset -euo pipefailmysql_host=192.168.13.187mysql_user=rootmysql_passwd=cert@test.2019exclude_databases=information_schema|performance_schema|sys|mysqlecho "开始备份数据库……"mysql -h"${mysql_host}" -u"${mysql_user}" -p"${mysql_passwd}" -N -e "show databases;" | grep -Ev "${exclude_databases}" | xargs mysqldump -h"${mysql_host}" -u" ...
调整Docker容器内的时区
容器内的时区问题会影响到服务打印的日志, 所以设置时区是很有必要的, 设置容器内时区的方法一般有:
设置TZ环境变量
挂载主机的时区文件
直接修改镜像的dockerfile,将时区默认配置在镜像里
设置TZ环境变量docker环境下, 增加 -e 参数:
1docker run --name test --rm -ti -e TZ=Asia/Shanghai debian date
这种方法也可以写在Dockerfile里面, 增加一行:
1ENV TZ Asia/Shanghai
经测试: Debian CentOS 镜像可以支持这种方案Ubuntu Alpine 不支持这种方案
挂载主机的timezone和localtimeDocker环境下, 增加 -v 参数:
1docker run --name test --rm -ti -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro alpine date
适用于大部分镜像, 特点是和主机保持一致, 缺点是依赖主机的环境
通过buil ...
基于Ubuntu的软路由搭建记录
前言我一直使用的是斐讯k3这款万元路由器😂,一直用的是openwrt,不过openwrt信号真心不好,刷回官方root系统,感觉重获了新生,然后决定路由器只做WiFi共享,其他功能交给软路由。我的软路由是买的双网口机器,j4125的cpu 做软路由绰绰有余了, 东西如图:
系统使用的是ubuntu22.04,以下步骤都以此系统为基础进行,网络拓扑如下:
我自己定义的网段,网段不可以有交叉。
设备
LAN网段
WAN配置
光猫
192.168.1.0/24
拨号上网
软路由
192.168.3.0/24
DHCP自动获取地址
斐讯路由器
192.168.2.0/24
固定IP,固定网关地址
定义内外网
网卡设备名
定义
enp1s0
外网
enp2s0
内网
那么 给外网网卡设置dhcp,从光猫自动获取ip,也可以手动设置ip内网网卡固定个ip,不用设置网关和dns,配置文件如下
vim /etc/netplan/00-installer-config.yaml
12345678n ...
Redis集群模式部署
搭建个6节点的集群,包括三主三从
创建配置文件12345678port 6379cluster-enabled yescluster-config-file nodes.confcluster-node-timeout 5000appendonly yesdaemonize yesprotected-mode nopidfile /var/run/redis.pid
如果是同一台机器上跑6个实例的话,需要保证端口和pid文件不能重复
启动服务器在每台机器上面执行,启动6个redis服务器
1redis-server redis.conf
创建集群在一台机器上执行:
1redis-cli --cluster create --cluster-replicas 1 192.168.1.11:6379 192.168.1.12:6379 192.168.1.13:6379 192.168.1.14:6379 192.168.1.15:6379 192.168.1.16:6379
出现提示,输入yes
连接集群1redis-cli -c -h 192.168.1.11 -p 63 ...
Prometheus常用PromSQL记录
prometheus查询语法叫promsql,做个记录:
查询条件Prometheus 存储的是时序数据,而它的时序是由名字和一组标签构成的,其实名字也可以写出标签的形式,例如 http_requests_total 等价于 {name="http_requests_total"}。
一个简单的查询相当于是对各种标签的筛选,例如:
1234http_requests_total{code="200"} # 表示查询名字为 http_requests_total,code 为 "200" 的数据http_requests_total{code!="200"} # 表示查询 code 不为 "200" 的数据http_requests_total{code=~"2.."} # 表示查询 code 为 "2xx" 的数据http_requests_tota ...
备份Linux操作系统
在Linux内, 一切皆文件, 所以可以通过直接复制文件的方式来备份Linux系统, 使用Linux自带的工具, 比如 tar rsync 都可以完成这些操作.
使用rsync备份还原Linux系统使用rsync备份比如备份路径是 /backup , 同时需要排除 /backup
1rsync -aAXHv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found", "/backup"} --delete / /backup
通过使用 -aAX 选项集,文件以归档模式传输,确保符号链接、设备、权限、所有权、修改时间、ACLs和扩展属性得以保留,前提是目标文件系统支持这一功能。选项 -H 保留了硬链接,但会使用更多的内存。swap文件也最好排除, gvfs需要排除 ...
Django配置MySQL数据库支持
Django支持MySQL主要有两种方式, 一种是使用pymysql包, 这个是个纯python包, 可以跨平台运行, 不过性能较差, 另一种是mysqlclient, 这个需要操作系统支持, 在linux平台可以获得更好的性能, 在windows系统下安装比较麻烦。
mysqlclientmysqlclient 需要依赖操作系统的库
Ubuntu和Debian安装CentOS和Fedora安装1sudo apt install python3-dev default-libmysqlclient-dev build-essential1sudo yum install python3-devel mysql-devel
然后pip安装mysqlclient
1pip install mysqlclient
pymysql直接安装:
1pip install pymysql
在 __init__.py 或者 settings.py 文件开头添加
12import pymysqlpymysql.install_as_MySQLdb()
settings.py配置Django的s ...
Linux时间处理与格式化
把unix时间戳转换为人类可读的时间1date -d @1660396123 +"%Y-%m-%d %H:%M:%S"
时间转换为unix时间戳1date -d 'Sat May 15 23:00:27 CST 2021' +%s
获取之前的时间12345678date -d 'yesterday' +'%Y-%m-%d %H:%M:%S'date -d '-2 hours' +'%Y-%m-%d %H:%M:%S'date -d "2 days ago" +%Y.%m.%ddate -d "1 week ago" +%Y.%m.%ddate -d "1 year ago" +%Y.%m.%ddate -d "1 month ago" +%Y.%m.%ddate -d "-7 days" +%Y%m%d
指定格式输出12date +'%Y-%m-%d % ...
kubernetes删除节点
删除worker节点设置节点不可调度,即不会有新的pod在该节点上创建
12kubectl cordon 172.16.21.26kubectl drain 172.16.21.26 --delete-local-data --ignore-daemonsets --force
–delete-local-data: 即使pod使用了emptyDir也删除–ignore-daemonsets: 忽略deamonset控制器的pod,如果不忽略,deamonset控制器控制的pod被删除后可能马上又在此节点上启动起来,会成为死循环;–force: 不加force参数只会删除该NODE上由ReplicationController, ReplicaSet, DaemonSet,StatefulSet or Job创建的Pod,加了后还会删除’裸奔的pod’(没有绑定到任何replication controller)
kubectl delete node 172.16.21.26
删除master节点未完待续