工欲善其事之趁手的终端
俗话说的好,工欲善其事必先利其器,要想活干得漂亮,就得有一个趁手的兵器。对于运维人来说,一个好的 Terminal,绝对可以大大滴提高工作效率。 曾经的我是 Ubuntu 的无脑吹、脑残粉,主要是命令行配合着一众工具使用起来非常丝滑,效率极高。而在 Windows 上除了安装各种执行环境配置环境变量外,还需要借助 xShell 这类工具来完成我的日常工作,虽然当时也折腾过一段时间的 cmder,但却是没有原生 Terminal 顺滑。 好在巨硬还有良心,推出了 Windows Terminal 和 WSL,一度让我从 Ubuntu 脑残粉变成了 Windows 无脑吹~本文则是用来记录一下我自己的终端配置,因为我的工作环境几乎是跑在 WSL 上的,所以 Linux 和 MacOS 均可借鉴。 ¶ 前置操作 一个 Windows 11 的操作系统 电脑开启虚拟化技术(默认已开启,未开启的则需要进 BIOS 中开启该设置,不同品牌的电脑不一样,请自行 Google) 安装 Windows Terminal(Windows 11 默认已安装,否则请在 Microsoft...
槟城旅行指北
2023/12/26 我第一次出国,和女朋友来到了马来西亚,囫囵吞枣式的游玩让我往返了吉隆坡和槟城两座城市,体验了大马的飞机、高铁、轮渡以及地铁这四种交通工具。但也因为是第一次踏上这片陌生的领土,即便之前的准备做得再充分,也难免有很多无法顾及的地方,因此时隔八个月,我们将再次踏上这片熟悉又陌生的领土,特此写下一篇槟城旅行指北(不是游记,不是游记,不是游记) ¶ 前期准备 ¶ 交通 时间 始发地 目的地 航班 2024-08-30 00:15 ~ 05:35 杭州 HGH T4 吉隆坡 KUL T2 D7307 空客 330 2024-08-30 07:50 ~ 08:50 吉隆坡 KUL T2 槟城 PEN D AK6112 空客 320 2024-09-03 11:25 ~ 12:50 槟城 PEN I 新加坡 SIN T1 TR427 空客 321 2024-09-03 16:30 ~ 21:35 新加坡 SIN T1 杭州 HGH T4 TR188 波音 787 本来有一个往返 槟城 和 怡保 的高铁 /...
2023 年度总结
2023 年过的很快,感觉啥也没干就结束了,但是相比于过去的两年,2023 年过得还是相对比较精彩的: 去了几个城市旅游 开始健身 重新搭建了 home-lab 环境 开始带团队 ¶ 工作 22 年的时候换了工作,从上海搬到杭州,用同样的租金在杭州获得了 50% 的租房面积提升。由于是老牌的 TP 公司,在技术上有很多陈年旧账需要慢慢去修,除了每年要感受两波大促紧锣密鼓的节奏之外,还需要天天吐槽 N 年以前留下来的天坑~ 最大的改变就是从原来的孤军奋战变成了带着小团队进行战斗,再次拓宽了自己的技能点(深感带团队的不易),目前主要遇到的问题如下: 自己的时间不够用,更别提带教 与下属做事的认知差异比较大,自己想把活干到自己认知的 80 分甚至 90 分,但是团队其他人受限于工作经历和认知,大多只知道 60 - 70 分的标准是什么样的 很多运维的观念和认知难以传递,可能也受限于他们过往的经历以及我个人的输出 后续空下来了还是需要多看看团队管理的书来弥补一下这方面的短板。 ¶ 旅游 一年下来,跑了很多地方,基本上就是三个假期 ——...
nginx 端口转发被强行更改
上一篇文章说到在家里把 LB 升了级并且通过 acme.sh 自动配置了 LB 的泛域名证书,可以看到基本的结构如下: 由于这些服务都是运行在家里的服务器中,最终 LB 的 443 端口我是在路由器上通过端口映射的方式转到 8443 端口上的(家庭宽带的公网 IP 会将 80/443 等常用端口封禁)。而我为了优雅(确实不想在公网通过域名加端口的形式访问某个网站或者服务),在公网使用 CDN 来把我对公网映射的 8443 端口转换成了 443。这个做法对于正常的 Web 服务来说没有任何问题,但是对于网盘服务来说就有些伤筋动骨,毕竟网盘服务流量比较大,使用 CDN 的话确实比较费钱。因此对于网盘服务我又单独映射了一个 8888 端口到公网,在金钱面前,我不再选择优雅。 那么对于网盘服务来说,正常的访问路径就是: 乍一看好像挺正常的,但是在我通过公网去访问的是时候 curl https://<domain_name>:8888 出现的结果往往是,nginx 直接把我的 8888 端口给重定向成了 8080,也就是变成了...
配置 DNSPod 自动获取泛域名证书
最近升级了下家里的 LB,通过 gitlab 将 LB 的配置做了版本管理,并且通过 docker-compose 实现 LB 的快速部署。但是家里的网络做了内外网的区分,为了实现内网 https 访问,我需要在内网的 LB 上配置一套 SSL 证书(公网的部分直接在 CDN 上配置了 let's encrypt 的免费证书,一年一换) 为了避免麻烦,对于内网的 https 证书希望做到以下两点: 到期自动续 泛域名 查找了一番,有两个工具比较符合:Certbot 和 acme.sh,都是通过 ACME protocol 去自动获取免费证书,但是需要自动获取泛域名证书的话,还需要能够自动在 DNS Provider 处更新 DNS TXT Record。由于我的域名是在 DNSPod 购买的,因此需要能够支持在 DNSPod 上自动更新 TXT 记录。Certbot 没有对应的官方插件,但是有第三方好心人写的插件能够实现该功能,如 certbot-dns-dnspod;而 acme.sh 是国人写的工具,官方支持 Aliyun 和...
黑群晖填坑
前段时间把家里的 NAS 做了一次改造,将用之前用了一年的架构推翻,换上了黑群晖。 故事还得从一年前说起。最初本着折腾的精神,采取了 Bcache+LVM 的方案,简单架构如下: 没有冗余没有备份,对于存储来说是很危险的。当时其实也是纠结了很久,手上有一块 RAID 卡,纠结了半天也没有上 RAID,原因是当时硬盘的配置是 6T*1+4T*3, 如果上了 RAID 就意味着 6T 盘会浪费 2T 空间。 既然如此,干脆一不做二不休,直接上 LVM,然后把重要的数据定时同步出来,正好还有两块 2T 盘,可以拿来做备份使用。结果最后因为太懒,以及 2T 盘没有多余的机器可以让我接入,导致备份的计划迟迟没有落地。 后来考虑到 Bcache 这个东西比较不优雅,这个项目也多年没有人维护更新(主要是存储跑了一年一直没有冗余和备份,比较慌),最终还是考虑换成黑群晖。 换成黑群晖后也多多少少遇到了些问题,这里先记录下来,算是填坑了 ¶ 存储冗余问题 由于短时间内我还不会把 4T 盘都换成 6T,因此正常的 RAID 阵列还是不考虑了,决定使用 SHR(Synology Hybrid...
什么情况?访问不了虚拟机了??
前几日在家中遇到一件有趣的事情,与大家分享一下。 起初我有一套硬件 A,安装了 ESXi 与一些虚拟机,后来将 A 上的数据盘与系统盘(U 盘)拆至硬件 B 上,即 ESXi 从 A 迁移到了 B。闲置下来的硬件 A 就被我拿来安装了黑苹果,然而在黑苹果的路上遇到了很多的坑,例如掉帧、黑色块的问题(显卡驱动),蓝牙鼠标掉线的问题(蓝牙驱动),后来甚至发现这套黑苹果访问不了我的虚拟机们,也访问不到 ESXi。这时的我还很天真的以为是虚拟化和黑苹果之间的问题,Google 了一番未果还是换回了 Windows。 天真我以为这样就已经解决了问题,但结果是并没有什么卵用。同时我发现一直在使用的电脑访问 ESXi 也出现了问题,网络丢包严重,但是访问虚拟机却一点事情也没有。事已至此只能先简单抓包看一下,从硬件 A ping 向 ESXi(硬件 B)的同时,在 ESXi 上使用 tcpdump-uw 进行抓包(通过虚拟机作为跳板机连上 ESXi),结果是硬件 A 正常发送 ARP 请求,但是 ESXi 这里并没有收到 A 发送的请求。 到这里我基本断定是 ARP 的问题,但是为啥...
创建本地 APT 仓库
¶ 背景 由于部分限制级场景无法联通外网,而 MAAS 在部署镜像的过程中,会默认连接 http://archive.ubuntu.com/ubuntu 的源去安装一些依赖包,在无外网环境下,会导致部署失败!因此考虑将 MAAS 在部署过程中的依赖包提前下载好,做成本地的 APT 仓库来解决。 由于 MAAS 需要安装的依赖包并不多(一共 260M 左右),并不需要使用 apt-mirror 去搭建完整的 apt 仓库,我们将需要的依赖包都下载好,使用 apt-fptarchive 来发布我们的仓库。 ¶ 仓库制作 sudo -i ## 先删除本地的缓存的 deb 包 rm -rf /var/cache/apt/archives/*.deb ## 下载依赖包 apt -d reinstall -y amd64-microcode crda freeipmi-common freeipmi-tools grub-common grub-gfxpayload-lists grub-pc-bin grub-pc grub2-common intel-microcode...
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 集群状态 查看集群状态 SHOW STATUS LIKE 'wsrep_local_state_comment'; 状态 说明 Open 节点启动成功,尝试连接到集群;如果失败则根据配置退出或者创建新集群 Primary 节点已处于集群中,在新节点加入时,选取 donor 进行数据同步时会产生的状态 Joiner ...
雾都游记
¶ 第一天 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 的时候会有报错,报错如下: error: Failed to define domain from /tmp/v2vlibvirt20e61b.xml error: unsupported configuration: smm is not available with this QEMU binary 以上报错是 OVMF 的问题,参考:https://access.redhat.com/discussions/3175901 具体是因为因为 “OVMF_CODE.secboot.fd” 固件在当前的 qemu-kvm 中不受支持,RedHat Discussion 上有两种解决方案: 重构 OVMF RPM 包,参考:...
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(快照状态文件) ¶ 快照创建过程简单描述如下 当虚拟机未创建快照时,虚拟机的读写操作直接在...
基于 CentOS 安装 KVM
¶ 安装操作系统 UEFI 引导或者 Legacy BIOS 引导均可,冲就完事了 ¶ 安装 KVM 及其依赖 ## 先把源换了 yum install -y wget mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum makecache ## 安装 epel 源 yum install -y epel-release ## 安装 KVM 以及依赖服务 yum install ntp kvm virt-manager virt-top qemu-kvm qemu-kvm-tools libvirt git vim htop systemctl start libvirtd systemctl enable libvirtd ## 配置 NTP vim...
Gitlab EE 版本破解
¶ 环境信息 Ubuntu 16.04 Ruby 环境(Version ≥2.5) ¶ 破解过程 ¶ 安装依赖 ## 确认 ruby 版本最低为 2.5,否则需要升级 sudo apt-add-repository ppa:brightbox/ruby-ng sudo apt update sudo apt install ruby2.5 ruby2.5-dev ## 安装 gitlab ruby 环境依赖 sudo gem install gitlab sudo gem install gitlab-license sudo gem install openssl ¶ 签名 创建 license.rb 文件,并写入一下内容 require 'openssl' require 'gitlab/license' # Generate a key pair. You should do this only once. key_pair = OpenSSL::PKey::RSA.generate(2048) # Write it to a file to use...