配置树莓派关机时正常停转移动硬盘
将闲置的树莓派做个共享服务器,在家里面存一些文件用。将树莓派和移动硬盘盒都已经改装好了,固定在了一起,用一块12864来显示一些信息,比如磁盘空间占用等。
树莓派3B+的千兆网口和usb接口相当于是一个usb2.0 hub分出来的, 速度根本达不到千兆,还抢占usb的带宽。实测速度20M/s左右(硬盘速度能跑到100M/s)
遇到的问题每次关机或者重启的时候,都会遇到硬盘吱~的一声,这种情况是操作系统关机的时候没有通知硬盘磁头归位直接断电, 这样硬盘会自己将磁头归位,就会有声音。时间久了对机械硬盘是一种损伤。
参考http://www.linux-ata.org/shutdown.html
解决方案查找硬盘启停配置在linux系统里面,一切皆文件,硬盘的各种信息也不列外。我们可以到/sys/class/scsi_disk/找自己的硬盘,可以通过查看硬盘的型号来确定
1cat /sys/class/scsi_disk/0:0:0:0/device/model
文件manage_start_stop就是配置磁头归位的,只需要将此文件内容设置成1即可。需要每次开机后都 ...
Kubernetes集群调度之节点亲和性、Pod亲和性、污点与容忍
调度器Scheduler 是 Kubernetes 的调度器,主要的任务是把定义的 pod 分配到集群的节点上。听起来非常简单,但有很多要考虑的问题:
公平:如何保证每个节点都能被分配资源
资源高效利用:集群所有资源最大化被使用
效率:调度的性能要好,能够尽快地对大批量的 pod 完成调度工作
灵活:允许用户根据自己的需求控制调度的逻辑k
Scheduler 是作为单独的程序运行的,启动之后会一直监听 API Server,获取PodSpec.NodeName为空的 pod,对每个 pod 都会创建一个 binding(必须遵守的),表明该 pod 应该放到哪个节点上
调度过程调度分为几个步骤:
首先是过滤掉不满足条件的节点,这个过程称为predicate(预选);
然后对通过的节点按照优先级排序,这个是priority(优选);
最后从中选择优先级最高的节点。
Predicate(预选)有一系列的算法可以使用:
算法
说明
PodFitsResources
节点上剩余的资源是否大于 pod 请求的资源
PodFitsHost
如果 pod 指定了 NodeNa ...
使用acme.sh来自动更新https证书
使用acme.sh可以自动申请let’s encrypt证书,并且可以自动配置到nginx,整个过程可以全自动。也可以使用certbot,certbot基于acme.sh使用certbot自动申请ssl证书
安装推荐安装socat
1sudo apt install socat
安装acme.sh
1curl https://get.acme.sh | sh
退出终端,重新登陆后,执行acme.sh有输出,说明安装成功了。
配置邮箱1acme.sh --register-account -m "iuxt@qq.com"
配置默认CA新版默认zerossl,也可以手动切换为let’s encrypt
12# acme.sh --set-default-ca --server letsencrypt# acme.sh --set-default-ca --server zerossl
申请证书acme.sh 实现了 acme 协议支持的所有验证协议.一般有两种方式验证: http 和 dns 验证.
使用dns api自动申请官方说明: https://git ...
MySQL主从同步配置
主从同步可以相当于实时备份,读写分离还能提高数据库的性能,记录一下主从同步的配置
不停机增加从库可以查看优雅地给正在运行的MySQL添加从库
一.准备
主从数据库版本最好一致
保证数据库的uuid不一致
服务器
ip地址
MySQL Master
192.168.21.53
MySQL Slave
192.168.21.54
二.操作主数据库操作开启binlog123[mysqld]log_bin=mysql-binserver-id=1
这里注意server-id主从不能一样, 配置完成重启mysql
创建用于同步的用户账号登陆数据库
1mysql -hlocalhost -uroot -ppassword
创建用户并授权
1CREATE USER 'repl'@'%' IDENTIFIED BY 'A4MyDNdzpHvg5M02KRtm';
授权
12GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';flush p ...
Docker容器间优雅的互联
本文主要介绍如何优雅的让Docker容器和Docker容器之间相互通信,以及Docker容器如何和宿主机进行网络通信。
容器间网络通信docker容器间通信常见的方式是使用 –link 进行连接,但是Docker已经弃用这种方式,并且容器数量一旦一多,–link 会显得很乱。官方推荐使用自定义网络来进行互联。
创建自定义网络1docker network create my-network
创建容器使用自定义network比如一个nginx容器需要访问php容器
12docker run -p 80:80 --network my-network nginxdocker run --name php --network my-network php
这个时候nginx可以直接通过php来访问php容器,打开/etc/hosts可以发现是docker自动帮你添加了解析
容器访问主机服务可以使用容器的网关IP来访问(nat网络),不过使用ip不优雅,旧版本的Docker可以使用host.docker.internal来访问主机,新版本的无法直接访问,可以通过 doc ...
Elasticsearch常用API操作
如果有Kibana的话,以下所有操作都可以在Kibana的DevTools页面进行调试,可以免去认证操作。
接口
功能
/_cat/health?v
集群健康状态
/_cat/shards
分片信息
/_cat/nodes
节点信息
/_cat/indices
索引信息
?v 是详细信息输出
删除索引1curl -u elastic:xlFnyMMyZiqjkzLIV5Kd -s -XDELETE 192.168.13.127:9200/索引名字
索引名字可以通过查看索引接口查看
修改密码1curl -H "Content-Type:application/json" -XPOST -u elastic:xlFnyMMyZiqjkzLIV5Kd 'http://127.0.0.1:9200/_xpack/security/user/elastic/_password' -d '{ "password&q ...
MySQL常用操作记录
记录一下日常工作中常用到的MySQL语句和一些配置等,方便日后查询
用户授权相关创建用户MySQL 5.7及以下版本MySQL 8.01CREATE USER 'root'@'%' IDENTIFIED BY '123456';1CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
修改密码MySQL 5.7及以下版本MySQL 8.01ALTER USER 'root'@'%' IDENTIFIED BY '123456';1ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
授权1Grant all privileges on *.* to 'ro ...
Kubernetes使用ingress反向代理外部IP
我们平常使用k8s的service都是自动发现增加endpoint的,但是有的时候集群外的服务我们又想用k8s的ingress来统一做入口,就会涉及到自定义endpoint
创建service123456789101112apiVersion: v1kind: Servicemetadata: name: kibana namespace: opsspec: type: ClusterIP ports: - name: kibana port: 80 protocol: TCP targetPort: 80
创建endpoint12345678910111213apiVersion: v1kind: Endpointsmetadata: name: kibana namespace: opssubsets:- addresses: - ip: 10.0.0.12 - ip: 10.0.0.13 ports: - name: kibana port: 5601 protocol: TCP
创建Ingress1234567891011 ...
Kafka常用操作记录
经常用到的Kafka命令记录以下,方便查找。kafka的搭建可以参考这篇文章Kafka和zookeeper搭建
注意: –bootstrap-server 参数配置的kafka地址需要根据kafka监听地址来判断, 如果监听的是自己的ip而不是0.0.0.0, 那就不要配置localhost, 改用ip地址.
Topic操作123456789101112131415161718# 创建topicbin/kafka-topics.sh --bootstrap-server localhost:9092 --create --replication-factor 1 --partitions 3 --topic test_topic# 查看topic具体信息bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic test_topic# 查看所有的topic列表bin/kafka-topics.sh --bootstrap-server localhost:9092 --list# 删除topic ...
编译安装Nginx记录
通常来说编译不通过都是因为系统环境不满足条件,如缺少包等,本文以CentOS 7 系统为例,其中有些包如xxx-devel在ubuntu下一般都是叫做xxx-dev的,实在找不到可以使用apt-file查找文件属于哪个包。
需要准备好这些包(不用监控可以不用准备nginx-module-vts):
1234wget https://nginx.org/download/nginx-1.22.0.tar.gzwget https://github.com/vozlt/nginx-module-vts/archive/refs/tags/v0.2.2.tar.gzwget https://ftp.openssl.org/source/openssl-1.1.1p.tar.gzwget https://ftp.exim.org/pub/pcre/pcre-8.45.tar.gz
全部解压,然后进入nginx-1.22.0目录操作
首先运行一遍configure命令12345678910111213141516./configure --prefix=/usr/local/nginx \ ...