LVS (Linux Virtual Server) 负载均衡 DR 模式配置
负载均衡技术作为高可用系统的重要组件,在生产环境的应用十分普遍。之前只知道 Nginx 可以用来做 Web 站点的负载均衡器,在项目实施过程中也实际使用过,但 Nginx 负载均衡有一个问题,只支持 http(s) 协议。一般我们认为 Nginx 是一种七层负载均衡,顾名思义,它工作在 OSI 参考模型的最上层也就是第七层应用层,主要用来分发 HTTP 协议的请求。如果需要分发的流量不是 HTTP 协议,比如 MySQL、RabbitMQ 等,Nginx 负载均衡就不适用了。
项目实际中,负载均衡要么通过 F5 硬件实现,成本很高,要么常见的就是基于 LVS 实现。
实验环境1 台 Linux 服务器(负载均衡器,安装 CentOS 7 系统)
2 台 Linux 服务器(Rabbit MQ 节点,安装 CentOS 7 系统,Rabbit MQ Server 监听在 5672 端口)
实验目标通过一个固定 IP + 端口访问随机两台机器上的 RabbitMQ 服务,两台机器任意一台宕机或服务停止,不影响外部访问。
IP 规划
配置负载均衡器 (Director)更新和安装 epel- ...
Arch Linux 安装 Nvidia 驱动并开启视频解码硬件加速
每次使用浏览器看 B 站视频时,CPU 占用总是莫名地高, 8 核心的 i7-10875H 开一个视频就到了稳定的 15% 占用,温度也从待机 55 度上升了 10 多度。我的风扇控制比较激进,超过 55 就是中档,65 以上直接全速,所以导致一开视频,风扇就直接拉满,忍受了这个问题很久了,今天决定着手解决下。
首先问题的原因我其实是知道的,在没有开启 GPU 加速的情况下,视频解码只能靠 CPU 软解,所以导致 CPU 负载较大。但长期以来我是不装 Nvidia 驱动的,因为几乎用不到,徒增功耗,还可能增加滚挂的机率。
安装 Nvidia 驱动详细安装过程可参照 Arch Wiki
https://wiki.archlinux.org/title/NVIDIA_Optimus
123sudo pacman -S nvidia-lts nvidia-utils nvidia-settings xorg-server-devel opencl-nvidia libva-utilsyay -S libva-nvidia-driver
`注意这里安装的是 lts 的驱动程序,要求系统内核也 ...
在 MacOS 上编译 OpenJDK 8
获取 OpenJDK 源代码OpenJDK 8 源代码可通过 Mercurial 或 Github 获取。这里推荐使用 Mercurial,Github 上的代码在 MacOS 上编译问题非常多。
安装 Mercurial1brew install mercurial
克隆 OpenJDK 8 仓库1hg clone https://hg.openjdk.java.net/jdk8u/jdk8u
获取完整源码并更新仓库1cd jdk8u && sh ./get_source.sh
获取低版本的 Xcode如果你的 Xcode 版本大于 12,需要手动下载低版本 Xcode,下载地址为
https://xcodereleases.com/
编译 OpenJDK 8 最高支持的版本是 Xcode 12.5.1 下载完成后解压。解压完成后得到的程序因为版本限制可能无法双击执行。
但是问题不大,仍然可以使用 --with-xcode-path 指定使用此版本的 Xcode
1--with-xcode-path=/Users/leon/Downloads/Xcode.ap ...
解决 Linux 环境中 IntelliJ IDEA 无法输入中文以及候选窗不跟随问题
IntelliJ IDEA 在 Linux 环境中如果不经过设置的话,默认情况下是无法输入中文的。当按照网上的教程设置好后还是会出现候选词面板位置不跟随输入光标的情况。这个问题从我开始接触 Linux 就有,直到现在,仍然是一个 Linux 用户绕不开的话题。
首先是中文输入的问题。这里首先要安装中文输入法。
1sudo pacman -S fcitx5 fcitx5-im fcitx5-qt fcitx5-gtk fcitx5-chinese-addons fcitx5-configtool fcitx5-rime
创建文件 ~/.pam_environment,内容如下
123456GTK_IM_MODULE DEFAULT=fcitxQT_IM_MODULE DEFAULT=fcitxXMODIFIERS DEFAULT=\@im=fcitxINPUT_METHOD DEFAULT=fcitxSDL_IM_MODULE DEFAULT=fcitxGLFW_IM_MODULE DEFAULT=ibus
重新启动后将 Rime 添加为第二输入法。至此在终端或浏览器中已 ...
低代码框架 Strapi 使用体验
今天在无聊的时候偶然发现了 Strapi 这个框架,能够帮助你不写一行代码实现基本的增删改查接口。这正是我一直在寻找的东西。Spring Boot 即使使用 Mybatis Generator 也还是比较笨重,对于一些简单的个人项目,仅仅是两三张表,关系也比较简单,操作也不外乎 CRUD,这正是 Strapi 的最佳应用场景。
以前我的做法是从一个模板项目克隆一个,包含基础的项目骨架,再设计和创建数据库表,然后使用 Mybatis Generator 生成基础的 CRUD 代码,再发布到 Gitlab 服务器,在 Jenkins 上创建任务,最终将项目部署在 Docker 容器中运行。不可不谓之繁琐。
Strapi 的安装坑还是挺多的,我按照官方文档安装的过程中就遇到了 Node 和 npm 版本、镜像下载网络问题、Webpack 打包问题等等,最后放弃了 CLI 安装的形式,使用 Docker 安装,但是 Docker 安装也会有依赖下不下来的问题,因为是服务器,也懒得去搭梯子了,索性直接使用香港主机做测试。最后的最后,终于安装成功了。
首先是通过域名访问。在 Docker 容器中 ...
博客搬家到云服务器
前几天新的域名备案成功了。停运了一个多月的地铁站终于在前几天开放了,然而只是站内施工基本结束,站外仍是一片狼藉。
因为地铁站施工,最近几个周末都吵得不行,从早到晚都是当当当当开凿地面的声音,穿透力极强,关了窗户带上耳机都能听到,这个没什么办法。可是昨天,我发现我家里运行的服务器突然连不上了,网站也几乎全部挂掉了,一问才知道,是施工队挖断了光缆。早上挖断的,晚上才恢复。
昨天开始陆续将一些重要站点(博客图床和主页)从家里那台 NUC 上迁移到腾讯云。200 多新购了一个 2C4G * 3 年 的轻量云服务器,配置方面对于这些网站来说绰绰有余。
今天上午和下午,光纤又分别被挖断一次,上午在睡觉,没受影响。下午再来一次,写这篇博客的时候,网络仍是中断的。我是本地改 hosts 到局域网地址在 codeserver 上写的,估计恢复还要几个小时。后面计划将 codeserver、bitwarden 也迁移上去。
经过这次断网,我放弃了将所有网站 all in one 在一台 NUC 服务器上的做法,毕竟自己维护的服务器,完全做不到 7 * 24 稳定运行,就算是在局域网环境下,也不可能完全 ...
线上环境 Log4j2 Lookups 远程执行漏洞修复
Log4j2 重大漏洞近来日志框架 Log4j2 爆出的 “核弹级” 漏洞 CVE-2021-44228,攻击者可以通过构造特殊的输入将指令发送到服务器然后由 Log4j2 解析执行!此次漏洞的危险等级和影响范围可以说是空前的,主要是 Log4j2 在 Java 日志框架领域的应用实在是太广泛了,并且漏洞的利用门槛又是如此之低,所以一下子炸开了锅。
就连各大网站的评论区,都能看到 “黑客” 的身影 [doge](这位当然是来搞笑的,知乎用的是 Python 吧)
言归正传。Apache 官方很快发布了漏洞的修复版本 2.15.0, 所有受影响的项目都需要发布补丁进行修复,Javaer 要加班了。
Log4j2 漏洞攻击原理Log4j2 是 Java 中的一款日志框架,拥有着不错性能。所谓日志就是程序记录运行状态和一些关键信息的,日志中的一些信息可能来源于用户输入,如用户搜索,发表评论等,由于 Log4j2 中的 Lookups 特性,输入的信息可能会被当成指令去执行,如
1${jndi:ldap://127.0.0.1:1389/a}
借助 jndi 黑客可以将 ...
批量订阅了一些博客
接上回。昨天拿到了 900 多个个人博客的链接并进行了一番简单分析。现在有了新的需求,我想订阅这些网站,但是一个个点进去看实在太辛苦了,我想的是如果能一键全部订阅了,到时候看到不合适的再取消订阅总比一个个订阅要来的方便吧。
首先,要知道一个博客有没有可用的 RSS 订阅源,在 html 中寻找 type = application/rss+xml 的 link 标签即可,xpath 语法为
1rss = html.xpath('//link[contains(@type, "application/rss+xml")]/@href')
拿到 RSS 源的地址后,我一开始以为 FreshRSS 提供了添加新订阅的 API,然而并没有。好在 FreshRSS 是自建的服务,数据库就掌握在自己手里,不行就直接 SQL 语句插入到表里吧,看了一下 FreshRSS 的订阅表结构
关键字段为, 其余字段和其它行一样即可
字段
含义
url
RSS 源地址
category
分类,参照 admin_category 表
name
站点 ...
个人博客现状调查
首先是决定更换域名,由 lixinyu.info 改为 omgxy.com 。一直使用 info 这个域名,原因无非是只有这个域名备案了,可以解析到腾讯云国内服务器,速度足够快。这次一来换成了主流的 com 域名,其次缩短了两个字母,我认为这个新域名还是挺好记的。老域名绑定了大概十几个站点,好在都是通过 Nginx 反代的,经过数小时的努力,所有站点都平滑过渡到了新域名。新域名还没备案,临时找了一个还有两个月到期的香港 VPS 挂了一个 frps 做了下中转,等新域名备案了再改下解析即可。
回到正题,博客这个东西我是一直有在弄的,但是写的一共也没几篇。常常是来了兴致就捯饬捯饬,玩不一会就丢到一边,放任其荒芜。近来关注到一些的博客站点,或十年如一日,沉淀着岁月的美好;或形式别具一格,观之赏心悦目。。。感触颇深。
最近发现一个叫 “十年之约” 的项目,大概是一个博客聚合站点,抱团取暖的感觉。浏览了一下上面陈列的一些站点,也确实有一些质量比较高的,展示了从 2017 年至今每年加入的博客站点,粗略估计收录有千余个博客站点。但是浏览起来感觉有些费劲,里面也不全是精品,有些甚至都打不开了。于是有 ...
将 Confluence 迁移到物理服务器
初次接触 Confluence 是因为上家公司里用的是 Confluence + Jira 的组合,但是版本较老。我在团队的空间里写的笔记不多,偶尔能看到之前同事留下的一些技术文章和片段,但更多的还是用来记录项目的需求、会议记录、开发环境和版本迭代信息等。
作为一款知识管理工具,Confluence 还算是比较出色的,而且用久了渐渐离不开了。今年早些时候 Confluence 宣布不再售卖 Datacenter 也就是独立部署的版本,将用户引向 SaaS 服务版。确实,对于大多数用户而言,使用 SaaS 服务要便捷不少,不用去花费时间去部署和维护服务器。对于软件的提供方来说,SaaS 化的服务也更方便进行推广和迭代。
我个人的情况是,如果某个软件提供了可独立部署的选项,那我肯定是偏向于独立部署的,如果开放源代码,那就更好不过。而且 SaaS 版的由于各种原因,网络加载很慢。于是,在今年的 2 月份,也就是 Confluence 停止销售独立部署 License 的前一天,我购买了 Datacenter 版的授权,使用 Docker 部署了一份 Confluence 网站,然后将笔记陆续 ...