nginx 端口转发被强行更改
上一篇文章说到在家里把 LB 升了级并且通过 acme.sh
自动配置了 LB 的泛域名证书,可以看到基本的结构如下:
由于这些服务都是运行在家里的服务器中,最终 LB 的 443 端口我是在路由器上通过端口映射的方式转到 8443 端口上的(家庭宽带的公网 IP 会将 80/443 等常用端口封禁)。而我为了优雅(确实不想在公网通过域名加端口的形式访问某个网站或者服务),在公网使用 CDN 来把我对公网映射的 8443 端口转换成了 443。这个做法对于正常的 Web 服务来说没有任何问题,但是对于网盘服务来说就有些伤筋动骨,毕竟网盘服务流量比较大,使用 CDN 的话确实比较费钱。因此对于网盘服务我又单独映射了一个 8888 端口到公网,在金钱面前,我不再选择优雅。
配置 DNSPod 自动获取泛域名证书
最近升级了下家里的 LB,通过 gitlab 将 LB 的配置做了版本管理,并且通过 docker-compose 实现 LB 的快速部署。但是家里的网络做了内外网的区分,为了实现内网 https 访问,我需要在内网的 LB 上配置一套 SSL 证书(公网的部分直接在 CDN 上配置了 let's encrypt
的免费证书,一年一换)
为了避免麻烦,对于内网的 https 证书希望做到以下两点:
- 到期自动续
- 泛域名
什么情况?访问不了虚拟机了??
前几日在家中遇到一件有趣的事情,与大家分享一下。
起初我有一套硬件 A,安装了 ESXi 与一些虚拟机,后来将 A 上的数据盘与系统盘(U 盘)拆至硬件 B 上,即 ESXi 从 A 迁移到了 B。闲置下来的硬件 A 就被我拿来安装了黑苹果,然而在黑苹果的路上遇到了很多的坑,例如掉帧、黑色块的问题(显卡驱动),蓝牙鼠标掉线的问题(蓝牙驱动),后来甚至发现这套黑苹果访问不了我的虚拟机们,也访问不到 ESXi。这时的我还很天真的以为是虚拟化和黑苹果之间的问题,Google 了一番未果还是换回了 Windows。
创建本地 APT 仓库
背景
由于部分限制级场景无法联通外网,而 MAAS 在部署镜像的过程中,会默认连接 http://archive.ubuntu.com/ubuntu 的源去安装一些依赖包,在无外网环境下,会导致部署失败!因此考虑将 MAAS 在部署过程中的依赖包提前下载好,做成本地的 APT 仓库来解决。
由于 MAAS 需要安装的依赖包并不多(一共 260M 左右),并不需要使用 apt-mirror 去搭建完整的 apt 仓库,我们将需要的依赖包都下载好,使用 apt-fptarchive 来发布我们的仓库。
Galera 集群搭建
Galera 简介
Galera Cluster 是基于 MySQL/Innodb 二次开发而成的一个支持“多主同步”的数据库主从集群。具备多主、同步复制、高可用等特点。
MariaDB Galera Cluster,由 MariaDB 和 MySQL-wsrep 补丁实现,同 Percona 的 PXC 数据库集群,目前只支持运行在 Linux 系统上。从 MariaDB 10.1 版开始,MariaDB Server 和 MariaDB Galera Server 安装包已经合并,安装 MariaDB 时,Galera 相关依赖安装包会自动安装,像内置的插件或存储引擎一样,通过简单配置即可启用。
Galera 集群状态
查看集群状态
1 | SHOW STATUS LIKE 'wsrep_local_state_comment'; |
雾都游记
第一天
18:30 落地,取得托运行李后,自江北机场T3航站楼乘坐地铁十号线(鲤鱼池方向)至红土地换乘地铁六号线(茶园方向)至小什字下车(8 号口),马路对面就是宾馆!!
- 重庆地铁可使用支付宝刷码进站
- 宾馆前台在 16F,10-15F 是客房
- 企业金会员,有双早,但是早饭不好吃
- 紧承上一条,楼下马路对面就有花市豌杂面(如果不想吃汤面就和老板说要干溜),不想排队等座位的话,可以考虑打包去别的地方吃(隔壁就有类似大食堂的早餐店)
在宾馆休整些许后,步行出发去九村烤脑花(西西推荐,冤有头债有主,觉得不好吃不要找我),步行至洪崖洞店,在附近买了两杯一只酸奶牛后就餐;推荐香菜牛肉、烤茄子、烤鸡翅等
- 宾馆附近有三家九村烤脑花,分别在来福士、洪崖洞、解放碑,三个店离宾馆差不多距离,来福士店十点关门,所以建议去其他两个店
- 九村烤脑花是烧烤店,烤脑花为特色菜,其他菜也很好吃,人均 70~80,人越多越划算
吃完回酒店修锅,一夜无事 💤
KVM 填坑
1、UEFI 引导问题
支持 KVM 虚拟机使用 UEFI 引导需要安装 OVMF 组件,参考基于 CentOS 安装 KVM。
目前通过 virt-v2v 导入的 ova 且使用 UEFI 启动的虚拟机(from vSphere)再 define domain 的时候会有报错,报错如下:
1 | error: Failed to define domain from /tmp/v2vlibvirt20e61b.xml |
以上报错是 OVMF 的问题,参考:https://access.redhat.com/discussions/3175901
具体是因为因为 “OVMF_CODE.secboot.fd” 固件在当前的 qemu-kvm 中不受支持,RedHat Discussion 上有两种解决方案:
重构 OVMF RPM 包,参考: https://access.redhat.com/discussions/3175901
Removing “-D SMM_REQUIRE”, rebuild the rpm, browse inside the rpm and then copy OVMF_CODE.secboot.fd to /usr/share/OVMF/OVMF_CODE.fd makes it work but I don’t know whether this will reduce security.
升级 qemu-kvm 版本至 2.6 以上的 qemu-kvm-rhev 版本
‘With this update, the “OVMF_CODE.secboot.fd” firmware binary file includes the Secure Boot feature. This binary can be used with pc-q35-rhel7.3.0 and later Q35 machine types only […]’
Those machine types are unavailable when using the 1.5.3-based “qemu-kvm” package of base RHEL. They are available only when using the 2.6.0-based “qemu-kvm-rhev” package, which is not part of base RHEL.
未完待续……
ESXi 快照机制
Understanding VM Sanpshots in ESXi
VMware vSphere 6.7 虚拟机快照原理及 Veeam Backup 备份
vSAN 中的闪存缓存设备设计注意事项
初时虚拟磁盘文件
ESXi 虚拟机的存储文件主要为 .vmx、.vmsd、.vmdk 等文件,其中对于 .vmdk 文件:
- xx.vmdk:该文件保存的是磁盘的元数据,包括 xx-flat.vmdk 和 xx-ctk.vmdk 文件
- xx-flat.vmdk:该文件为 Extent Description 二级制文件啊,二级制数据保存在此文件中
- xx-ctk.vmdk:该文件为 CTK 文件,CBT(数据块修改跟踪)启动时自动生成
快照
快照创建过程中,新增以下文件:
- **-000001.vmdk
- **-000001-ctk.vmdk
- **-000001-delta.vmdk(基础 vmdk 上的变更位图)
- **-Snapshot*.vmsn(快照状态文件)
快照创建过程简单描述如下
- 当虚拟机未创建快照时,虚拟机的读写操作直接在 VMDK 文件进行;
- 当虚拟机创建第一个快照时,这时生成 **-000001-delta.vmdk 和 **-000001.vmdk 文件,并立即锁住源 VMDK 文件,将其变为只读状态。虚拟机的写操作均在 **-000001.vmdk 上进行,读操作将在 **.vmdk 和 **-000001.vmdk 上进行(具体基于需要读的数据所在位置);
- 再次创建快照的原理和之前一样,生成 **-000002-delta.vmdk 和 **-000002.vmdk 文件,锁住 **-000001.vmdk 文件,将其变为只读状态。
注意点
- 对于有用快照的虚拟机做写操作时,均在新的 vmdk 文件进行,如果数据在父 vmdk 上(被锁住成只读的 vmdk),先将数据拷贝到新的 vmdk 上,再进行修改;
- 当读取某一块数据时,ESXi 需要判断从哪里去读:对于没有修改的数据块,从父 vmdk 读,对于已经修改的数据块,从新的 vmdk 上读。
- 整合多个虚拟机快照时,主机会短暂无响应
Gitlab EE 版本破解
Ext4 文件系统缩容
由于 XFS
文件系统不支持缩容,所以这里只讨论 Ext4
缩容的情况。
Ext4
文件系统调整的命令为 resize2fs
,在使用这个命令前,我们需要将我们需要缩容的文件系统所在分区进行调整,由于 LVM
的调整相对简单,这里不做描述。
如果需要调整的分区非系统盘,则可以直接先卸载已挂载的文件系统,然后进行操作;若需要调整的分区在系统盘上,则需要进入 LiveCD
的 shell
环境进行操作。
1 | sudo -i |