使用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" : "123456" }'
...
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/iuxt/nginx-module-vts/archive/refs/tags/v0.1.18.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 \ ...
Kubernetes 绑定Hosts的正确姿势
有的时候我们需要在容器里面绑定hosts,比如我们用logstash需要消费kafka消息,但是kafka监听的地址是hostname,这个时候就需要绑定hosts(规范一点是做解析)在容器里面绑定hosts常见的方法一种是挂载主机的hosts文件,一种是修改容器的启动CMD,每次启动修改hosts,这两种方法都有个缺点,就是不受kubelet管理了,默认的hosts内容也会被覆盖掉在k8s环境下有更好的解决方案:那就是让k8s自己来管理
使用hostAliases来绑定hosts12345678910111213141516171819202122232425apiVersion: apps/v1kind: Deploymentmetadata: name: logstash-k8s namespace: opsspec: replicas: 1 selector: matchLabels: app: logstash-k8s template: metadata: labels: app: logstash-k8s sp ...
Nginx Ingress 定义多种日志格式
生产环境有个项目需要打开nginx日志的request_body日志记录,但是如果把默认的日志格式改掉的话,日志量就太大了,所以查了一下针对某个域名进行搜集不同的日志。
k8s的ingress其实就是nginx封装了一层,所以nginx可以做的,ingress也都可以做,nginx我们知道可以定义不同的日志格式,然后不同的虚拟主机来引用就好了。先查看文档,发现了nginx-ingress有一个叫http-snippet的参数,意思就是在http块下面增加一段原生的Nginx配置
在configmap里面增加一个新的日志格式配置我们可以在ingress-nginx的configmap里面添加一个新的日志格式:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647kind: ConfigMapapiVersion: v1metadata: name: ingress-nginx-controller namespace: ingress-nginx labels: ...