bcache缓存配置以及certbot证书续期笔记

by LALA

荒岛 / 2019-02-01 23:12

Certbot自动给Nginx续期SSL证书

有一台机器证书过期了快1个星期才发现,属实得配置一下certbot的自动续期功能了,但是我知道这玩意在阿里云的CentOS7上有莫名其妙的问题,经常不能正常工作。但这次没办法必须要搞好。。。

要利用certbot给nginx自动续期需要安装一个插件,如果是Debian执行下面的命令应该就可以完成安装了:

apt -y install python-certbot-nginx

CentOS7执行如下命令安装:

yum -y install python2-certbot-nginx

然后踩坑开始,首先是安装的时候报这个,但安装进程还是跑完了:

error: unpacking of archive failed on file /usr/lib/python2.7/site-packages/urllib3/packages/ssl_match_hostname: cpio: rename

应该是urllib3冲突了,系统内已经有一个urllib3了,所以我先用pip卸载了:

pip uninstall urllib3

回滚之前的yum操作:

yum history list     yum history undo 19

重新再安装一次:

yum -y install python2-certbot-nginx

哦嚯,这次安装没报错,但是完成之后运行报错,貌似是什么J8依赖问题:

pkg_resources.DistributionNotFound: The 'urllib3<1.23,>=1.21.1' distribution was not found and is required by requests

完整的报错如下:

没办法再回滚一次吧:

yum history list     yum history undo 21

Google搜了一下,已经有前辈给出解决办法了:

pip uninstall requests     pip uninstall chardet     pip install --upgrade --force-reinstall 'requests==2.6.0' urllib3

再安装一次。。。

yum -y install python2-certbot-nginx

这次就正常了,执行执行下面的命令开始续期,但在yum安装的过程中又会报最开始那个错误。。。管不了那么多了,能用就行:

certbot --nginx

现在这个certbot要比之前智能很多了,可以直接获取到nginx配置的站点域名,我这边只有1个域名,所以输入1开始续期:

稍等一会证书就配置完成了,问你是否需要强制SSL,这里选1不做任何改动,因为我已经在conf里面配置了301,另外这种功能求稳的话还是不建议用,说不定给你把nginx的配置改炸了又多出一堆事:

现在certbot自动给nginx续期SSL证书就配置完成了,不需要像以前设置什么hook了,如果不放心你可以执行下面的命令模拟检查一次续期:

certbot renew --dry-run

如果回显内容类似下图就说明一切正常,你不用再担心证书过期的问题啦:

 

Bcache缓存配置

bcache是一个在内核3.10及以上版本就内置好的一个SSD缓存加速HDD的模块,看到3.10就想到了什么?想到了CentOS7是可以直接用的,不过我这次需要用到的环境是一个Debian9。安装的步骤不一样,但使用步骤应该是差不多的。

首先安装bcache的命令行工具:

apt -y update     apt -y install bcache-tools

我这边是直接上了一块新的企业级2TBHDD硬盘做后端设备,然后一块512GB的SSD做前端缓存设备(512GB的SSD我只分了100G出来做缓存)。新盘肯定也要先分区,分区步骤就省略了。反正fdisk跑一下就行。

我把这块2T硬盘的全部容量分到一个区内,分完区之后,我这个设备名是/dev/sdc1,先格式化为ext4:

mkfs.ext4 /dev/sdc1

清除超级块信息:

wipefs -a /dev/sdc1

制作为后端设备:

make-bcache -B /dev/sdc1

如果正常回显如下:

完成之后把新设备格式化为ext4:

mkfs.ext4 /dev/bcache0

创建挂载目录并完成挂载:

mkdir -p /cache     mount /dev/bcache0 /cache

SSD设备名我这边是/dev/sdb1,同样的先格式化为ext4:

mkfs.ext4 /dev/sdb1

清除超级块信息:

wipefs -a /dev/sdb1

将设备设置为缓存设备:

make-bcache -C /dev/sdb1

如果正常回显如下:

然后你在这个回显可以看到有一个Set UUID,这个是bcache将前端缓存设备和后端设备进行连接的唯一凭证,如果你忘记了这个UUID没关系,执行下面的命令可以查看:

bcache-super-show /dev/sd(X,Y)

现在我们需要把缓存设备和后端设备进行连接:

echo "db8e5df7-b0c8-4538-9942-84a0a400702e" > /sys/block/bcache0/bcache/attach

修改缓存模式为回写,回写性能最好,但如果硬盘意外掉电可能会丢数据:

echo "writeback" > /sys/block/bcache0/bcache/cache_mode

bcache默认不缓存顺序IO只缓存随机IO,我这边修改为全部缓存:

echo "0" > /sys/block/bcache0/bcache/sequential_cutoff

查看缓存信息:

tail /sys/block/bcache0/bcache/stats_total/*

跑了一段时间的结果:

实际怎么说呢,效果有肯定是有,但对于我这个环境来说的话,我个人感觉不怎么理想。就是不知道bcache能不能把raid设备当作前端缓存设备,比如我用两块SSD组一个raid0阵列,然后把这个阵列当作bcache的前端设备,这样的话感觉还可以。

Shared via Inoreader