很多时候,构建 docker 镜像的速度很慢,尤其是当我们的基础依赖发生改变之后。为了解决这个问题,我们应该在实际运行的镜像之前,增加一个 venv 的基础镜像。
[阅读全文]Using Kind to Play with K8s
Use Mirror
使用代理。在国内编程,使用代理非常重要。
[阅读全文]使用 Docker 构建前端应用
docker compose 构建前端 app 是否容易,强烈建议中小企业采用这种方法。
[阅读全文]⚙ 记录一次 gitlab runner 的配置
首先介绍一下整体的情况,和我们的需求。
-
在我们组里,不同的项目和服务,被分到不同的 repo 中,托管在 gitlab 上面。
-
最近一段时间,由于构建的时间变长,用掉了 gitlab 免费的 2000 minutes。
因此,打算采用自己的 runner,来进行服务的构建和使用。
Gitlab runner 配置有些神奇。
[阅读全文]为你的 Docker 项目集成 ELK
https://github.com/twtrubiks/docker-elk-tutorial
基本上按照这个配置就可以了,创建 @timestamp 这一步,可以用如下脚本替代 Postman
$ curl -XPOST -D- 'http://localhost:5601/api/saved_objects/index-pattern' \ -H 'Content-Type: application/json' \ -H 'kbn-version: 6.5.4' \ -d '{"attributes":{"title":"logstash-*","timeFieldName":"@timestamp"}}'
这也是 tutorials 中,使用的 ELK images 给出的。
https://github.com/deviantony/docker-elk
[阅读全文]使用 Docker swarm 构建 PostgreSQL 集群
又是一个渣翻,Copyright belongs to the original text。
背景
PostgreSQL 在 9.0 版本已经开始持续接收大量的增强,包括:
- 异步拓展
- 同步拓展
- 仲裁提交
- 级联拓展
- 逻辑拓展
PostgreSQL 文档也提供了一个 overview 以及 不同拓展方法的比较。详见PostgreSQL 集群策略比较
用于部署 PostgreSQL 的拓展的主拓展的方法论,是一个重要的工具来为你的数据库集群创建高可用的环境。需要一个合适的部署策略来确保你的数据被保存到不同磁盘,以及不同的数据中心。
[阅读全文]记恢复 https
这几天 https 挂掉了,似乎是因为铁门的证书(过期,不被chrome认可)了。因此重新搞一下 https。
恢复 https 也没有做什么工作,就是把之前的证书重新申请一次,然后下载下来的文件把之前的 https 文件替换掉。https 相关的文章很多,我就不再赘述了。可以参见很多人的文章。
此处唯一需要注意的是,我使用 Docker,对于 certbot ,也就是 letsencrypt 的支持不够好(也可能是我在man里面粗略的看了一下,没有找到)。因此,对于三个与的letsencrypt我就不使用了。
本篇是老文,之前一直都没有发出。
今天发出,作为博客长时间滑水的终止符。
这次更新 https,也做了一些工作,就是把原来的 rewrite 选项改成了 301,做了一个重定向,整个速度都提升了不少(未测试,仅观感),感觉很不错。因此把之前的配置贴出来。
原来的配置
location / {
rewrite ^ https://$host$request_uri? permanent;
}
location ^~ /.well-known {
allow all;
root /data/letsencrypt/;
}
现在的
return 301 https://$host$request_uri;
为什么我的密码录入正确,但就是登录不上?
今天又偶遇了之前用阿里云出现的问题:
明明密码没有错,本地登录可以,但远程登录就是不ok。
之前一直没有排查到错误,今天终于在本地机器的加持下得以解决。这是什么问题呢?IP地址冲突。
的确是IP地址冲突。首先先使用校园网client ssh b-server 服务器,失败了。使用同一个物理主机的a-server与b-server进行互联,成功了。校园网client能够连接a-server。因此,观察 a-server 和 b-server 的区别,发现 a-server 子网掩码是255.255.255.128,而 b-server 的子网掩码是 255.255.255.0。
此外,还有:
查看系统开放的端口 netstat -nltp 测试本地是否能够访问,排查本地问题 ssh user@locahost
子网掩码不同,为什么就连接不上呢?(原理)
最终,解决了这个问题。通过重启 networking 以及 重新通过 dhcp 获取 ip 地址。
- 使用 systemctl restart networking.service 重启 networking 服务。
- 使用 ifconfig eth0 down; ifconfig eth0 up 来开关具体的网卡。
- 使用 # dhclient -r 释放当前ip
- 使用 # dhclient 获取新的ip
大功告成,算是阶段性的解决了这个问题。DDNS迫在眉睫啊!
# Docker swarm 学习
本文的学习过程主要是通过 Docker 官方文档
花了一段时间学习 Docker swarm,一个docker的容器集群服务,来应对即将到来的高并发项目需求。
Docker machine
Docker machine 是 Docker 官方编排的项目之一,可以理解成一个 Docker 宿主机器的统一管理CLI,自部署不是很好用:目前国内仅仅 aliyun 支持,其他的我在官方文档中没有找到。
Docker machine 的安装十分简单,通过官网提供的脚本即可,For Linux:
$ base=https://github.com/docker/machine/releases/download/v0.14.0 && curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine && sudo install /tmp/docker-machine /usr/local/bin/docker-machine
安装好以后,即可按照相关的操作进行运行。
比如,创建两个虚拟机:
$ docker-machine create --driver virtualbox myvm1 $ docker-machine create --driver virtualbox myvm2
进入虚拟机:
$ docker-machine ssh myvm1
显示虚拟机
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS myvm1 - virtualbox Running tcp://192.168.99.100:2376 v18.05.0-ce myvm2 - virtualbox Running tcp://192.168.99.101:2376 v18.05.0-ce
然后即可在虚拟机的基础上进行相关的操作,十分方便。
[阅读全文]