「PAC Profile」

设置PAC脚本文件(可以是本地的或者在线的),使用PAC配置决定是否使用代理。至于PAC是什么这里暂不解释。

PAC URL用于指定PAC文件路径,可以是在线(http(s):)的也可以是本地(file:/)的。
PAC Script用于自定义PAC文件,毕竟PAC文件就是JS脚本。
注意:只有在没有填写PAC URL是才会使用PAC Script中的内容。
可用的PAC文件
方法一 https://github.com/n0wa11/gfw_whitelist
方法二 可以使用genpac命令工具,将使用gfwlist文件生成PAC文件,使用pip install genpac安装genpac命令。 该gfwlist文件是base64编码的。[……]

READ MORE

「MySQL」- 复制(Replication)

复制原理以及流程
1)Master 将日志写入 binlog; 2)Slave 的 I/O 线程读取 Master 的 binlog,将其保存到 relaylog 中; 3)Slave 的 SQL 线程执行 relaylog;
相关文章
主从一致性检查:Verify Replication Integrity
推荐阅读
MySQL 5.7 Reference Manual / Replication MySQL Replication / Replication 5.7
相关链接
Replication in MySQL 5.6: GTIDs benefits and limitations – Part 1
复制的格式
两种复制方式的对比
Why use GTIDs in MySQL replication?
数据库复制杂记
Multi-Source Replication
Single slave – multiple master MySQL replication MySQL 5.7 Multi-Source Replication – Automatically Combining Data From Multiple Databases Into One
WIP 研究 MySQL 多源复制 WIP 使用 Otter 进行数据同步
As of October 2013 MySQL (> 5.7.6) supports multi-source replication.
MySQL Group Replication
WIP MySQL Group Replication MySQL MGR 集群搭建(单主模式&多主模式)[……]

READ MORE

「iOS」- 应用分发 | 应用安装

iPhone 应用更新的原理涉及多个环节,包括开发者提交更新、苹果审核、用户端获取和安装等。以下是详细的流程和技术原理:

### 1. 开发者提交更新 – 代码/资源修改:开发者修改应用功能、修复漏洞或优化性能后,在Xcode中打包生成新的`.ipa`文件(iOS应用安装包)。 – 版本号管理:更新必须递增应用的`版本号`(如1.0.0 → 1.0.1)和`构建版本号`(Build Number),否则App Store会拒绝。 – 元数据更新:可能需要更新应用描述、截图或隐私政策等元数据。 – 提交至App Store Connect:通过Xcode或Transporter工具将新版本上传至苹果的开发者后台(App Store Connect)。

### 2. 苹果审核流程 – 自动检查:苹果的自动化系统(如App Review机器人)会初步扫描代码,检测是否违反政策(如使用私有API)。 – 人工审核:人工团队测试功能、UI、内容合规性等,通常需24小时至数天。 – 审核结果: – 通过:应用更新进入“准备上架”状态,开发者可选择手动发布或自动发布。 – 拒绝:开发者需修改后重新提交。

### 3. 应用分发机制 – CDN分发:苹果通过全球内容分发网络(CDN)存储应用包,确保用户快速下载。 – 增量更新(Delta Updates):iOS 7+支持仅下载差异部分(而非完整包),减少更新体积(需开发者启用Bitcode优化)。 – 版本控制:App Store会保留历史版本,但用户默认只能获取最新版(除非企业签名或TestFlight测试)。

### 4. 用户端更新流程 #### 自动更新(默认开启) – 后台检查:iOS定期检查已安装应用的更新(通常每天一次),通过`itunesstored`守护进程与App Store通信。 – 静默下载:更新包在Wi-Fi和充电状态下自动下载(需iOS设置中开启“App更新”开关)。 – 安装触发:下载完成后,系统提示用户或自动安装(取决于系统版本和设置)。
#### 手动更新 – 用户打开App Store → 点击右上角头像 → 下拉刷新更新列表 → 手动选择更新。
#### 安装过程

验证签名:iOS检查更新包的苹果签名和开发者证书是否有效。
替换文件:新版本应用替换原有`/var/containers/Bundle/Application/[App-ID]/`目录下的文件。
数据保留:用户数据(如文档、偏好设置)通常不受影响(除非开发者明确清除)。


### 5. 技术细节 – 签名机制:苹果使用双层签名(开发者证书 + 苹果私钥)确[……]

READ MORE

「MySQL」- Can’t connect to

#1 ERROR 2003 (HY000): Can’t connect to MySQL server on XXXXXX
遇到这个问题无非就是 MySQL 不让你连接,可能的原因如下:
# 排查:服务是否可访问
无法访问 MySQL 服务监听的端口号。可以在本机 telnet 命令进性测试,telnet <ipaddress> 3306。如果 telnet 命令无法链接,则表示无法访问 mysql 服务,可能有防火墙进性了端口过滤,也有可能是 MySQL 服务没有启动;
# 排查:MySQL 服务的配置中是否限制了访问
如果不是上述原因,则可能是 MySQL 监听的地址有问题。可以在运行 MySQL 的服务器上 netstat 命令进性测试,netstat -npl | grep 3306,如果输出中为 127.0.0.1:3306,则表示 MySQL 只监听本地的连接,那就需要修改配置,比如修改配置文件中[mysqld]部分的 bind-address 的为 0.0.0.0(或者服务器上指定接口的 IP 地址)来监听所有(或指定)地址。修改后执行netstat -npl | grep 3306会发现监听连接为 0.0.0.0:3306;
# 排查:MySQL 服务的账户配置是否限制了访问
如果不是上述原因,就需要检查 MySQL 的账户配置是否允许远程登陆。执行select * from mysql.user来检查 user 列和 host 列是否可以进行远程访问。如果 select 的结果中 user=root,host=localhost,则只能进行本地登陆 root 账号。如果 select 的结果中 user=root,host=%,则所有外部主机都可以登陆 root 账号。总的说就是:host 的谁的 IP 地址就允许哪个 IP 地址访问 MySQL,如果是 %,则所有人都能连接。所以这个问题的解决办法就是添加允许登陆的账户,或者修改账户的 host;
# localhost & 127.0.0.1
在 MySQL 中,连接数据库时使用localhost与使用127.0.0.1是不同的;
连接 MySQL 由两种方式:(1)域套接字文件;(2)网络地址和端口;
「域套接字文件」会更快一些,但是只能在本机上使用;
连接 MySQL 时,如果「未指定主机名」,或者「主机名为 localhost」时,会通过「域套接字」连接 MySQL 服务器;
在 Windows 下,如果启动 server 的时候使用了–enable-named-pipe 选项,则可以在同一台主机上使用命名管道。默认的命名管道名为 MySQL。如果未指定主机名,则会先尝试命[……]

READ MORE

「FreeRADIUS」- 开源 RADIUS 实现 | The Open Source Implementation of RADIUS

认识
官网:https://www.freeradius.org 文档:https://www.freeradius.org/documentation 仓库:https://github.com/FreeRADIUS/freeradius-server
FreeRADIUS,是个开源的 RADIUS 服务,是功能强大且灵活的 RADIUS 服务器,其适用于各种网络认证场景,广泛用于网络 AAA。它是目前最流行的 RADIUS 服务器之一,其适用于多种场景,例如、企业、ISP(互联网服务提供商)、Wi-Fi 热点、VPN、……。无论是小型企业还是大型运营商,都能通过其模块化设计满足定制化需求。学习曲线较陡,但丰富的文档和社区支持降低了使用门槛。简而言之,FreeRADIUS 是开源、功能强大的 RADIUS Server 实现,我们能够用它来提供 RADIUS 服务。
组成
程序文件
radiusd:服务端程序 freeradius:
配置文件
针对配置文件路径,其通常位于:

Linux: /etc/freeradius/
FreeBSD: /usr/local/etc/raddb/

radiusd.conf:主配置文件,定义全局设置,并引用其他配置文件。
clients.conf:定义允许连接的 RADIUS Client 信息(例如,交换机、AP、IP Address、Pre-shared Key、……)。

该配置文件被 radiusd.conf 引用。

dictionary:包含 RADIUS Server 需要使用的 Attribute 信息。
proxy.conf:包含上游服务器的配置信息(例如,IP Address、Pre-shared Key、……)。

该配置文件被 radiusd.conf 引用。

sites-available/default

默认的 Virtual Server 配置,该配置文件被 radiusd.conf 引用。
处理认证、计费;定义认证流程的处理方式(例如,EAP 处理方式、……)。

sites-enabled/inner-tunnel

该 Virtual Server 负责处理在 TLS Tunnel 内传输的认证方法,作为 PEAP 或 EAP-TTLS 认证的一部分。

users

认识:本地用户认证文件(可替代数据库)。根据配置文件描述,模块 rlm_files 将使用该文件。The rlm_files module uses the ‘users’ file for ac[……]

READ MORE

「2.Getting started」-

Tutorial
https://github.com/yoshinorim/mha4mysql-manager/wiki/Tutorial
Installation
https://github.com/yoshinorim/mha4mysql-manager/wiki/Installation
Configuration
https://github.com/yoshinorim/mha4mysql-manager/wiki/Configuration
Requirements
https://github.com/yoshinorim/mha4mysql-manager/wiki/Requirements
GTID based failover
https://github.com/yoshinorim/mha4mysql-manager/wiki/GTID_Based_Failover[……]

READ MORE

「VIRTUALIZATION」- 硬件虚拟化 | Hardware Virtualization

认识
服务器虚拟化:使用虚拟机来模拟多个独立的服务器,每个虚拟机都可以运行不同的操作系统和应用程序。
组成
Full Virtualization
Hardware-assisted Virtualization(硬件辅助 虚拟化),硬件辅助 x86 虚拟化的著名实施包括 VMware Workstation(仅适用于 64 位客户机)、XenCenter、Xen 3.x(包括 Virtual Iron 等衍生产品)、Linux KVM、Microsoft Hyper-V。
Paravirtualization(半虚拟化),
应用
KVM 虚拟化技术:KVM (Kernel-based Virtual Machine) 是一种基于 Linux 内核的开源虚拟化技术,它允许多个虚拟机在同一个物理服务器上运行。KVM 虚拟化技术使用硬件虚拟化扩展 (如 Intel VT 或 AMD-V) 来创建虚拟化环境,从而提高了虚拟机的性能和可靠性。
VMware 虚拟化技术:VMware 是一种商业虚拟化技术,它提供了多种虚拟化解决方案,包括 VMware Workstation、VMware Fusion、VMware ESXi 等。VMware 技术可以在桌面和服务器上运行虚拟机,具有较高的稳定性和安全性。
Xen 虚拟化技术:Xen 是一种开源的虚拟化技术,它可以在多种操作系统上运行,包括 Linux、Windows 和 FreeBSD 等。Xen 可以在硬件上直接运行虚拟机,因此具有较高的性能和可扩展性。
Hyper-V 虚拟化技术:Hyper-V 是一种由微软开发的虚拟化技术,它可以在 Windows Server 上运行虚拟机。Hyper-V 技术具有较高的兼容性和可靠性,可以让用户轻松管理多个虚拟机。
参考
Virtualization – Wikipedia HCIP-Data Center Network V1.0 培训材料[……]

READ MORE

「MyCat」- Join

!!!分片 – 是将数据分散到不同的数据库中。
!!!Join绝对是关系型数据库中最常用一个特性,然而在分布式环境中,「跨分片的JOIN」确是最复杂的,最难解决一个问题。
!!!说白了,跨分片就是跨库。
各种「跨分片JOIN」实现
Mycat 目前版本支持跨分片的 join,主要实现的方式有四种:

全局表
ER 分片
catletT(人工智能)
ShareJoin,ShareJoin 在开发版中支持

前面三种方式 1.3.0.1 支持。
全局表(避开跨分片问题)
!!!每个库里都放入该表,解决跨分片的问题。注意,是每个库里都放这张表。
就是那种“字典表”,表中的数据都是“分类”类型的数据。“字典表”具有以下特点:

变动不频繁
数据量总体变化不大
数据规模不大,很少有超过数十万条记录。

鉴于此,MyCAT 定义了一种特殊的表,称之为“全局表”。“全局表”具有以下特性:

全局表存在于所有的节点上;
插入、更新操作会实时在所有节点上执行,保持各个分片的数据一致性;
当单独在全局表上执行查询操作时,只会从一个节点获取数据;
全局表可以跟任何一个表进行JOIN操作;

可以将“字典表”或者符合字典表特性的一些表定义为全局表。
ER JOIN
!!!将相关的数据放在一起,解决跨分片的问题。
需要在XML中描述表的关联关系,如下:

<table name=”customer” dataNode=”dn1,dn2″ rule=”sharding-by-intfile”>
<childTable name=”orders” joinKey=”customer_id” parentKey=”id”/>
</table>

然后MyCat基于此将相关的数据存储到相同节点上。规避关联数据时的跨节点问题。
SHARE JOIN
!!!通过单独查询,解决跨库问题。
目前支持 2 个表的 join,原理就是解析 SQL 语句,拆分成单表的 SQL 语句执行,然后把各个节点的数据汇集。
CATLET(人工智能)
!!!也是单独查询,通过编程解决更加复杂的问题。
解决跨分片的 SQL JOIN 的问题,远比想象的复杂,而且往往无法实现高效的处理。
既然如此,就依靠人工的智力,去编程解决业务系统中特定几个必须跨分片的 SQL 的 JOIN 逻辑。
MyCAT 提供特定的 API 供程序员调用,这就是 MyCAT 创新性的思路 – 人工智能。[……]

READ MORE

「Jenkins」- 安装 | 升级 | CentOS | Debian | Ubuntu

该笔记将记录:与 Jenkins 安装、升级有关的内容,以及相关问题的解决办法;
on Linux | with Package Manager
Installing Jenkins/Linux
依赖安装
安装 JDK/JRE 包(Jenkins 使用 Java 开发的,需要安装运行环境):

# Debian GNU/Linux 10 (buster)
apt-get install -y openjdk-11-jre

on Ubuntu 20.04
Installing Jenkins/Linux
Weekly release:

curl -fsSL https://pkg.jenkins.io/debian/jenkins.io.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt-get update
sudo apt-get install jenkins

on CentOS 7.0
RedHat Linux RPM packages for Jenkins
# 12/27/2018

yum install wget
yum install java-1.8.0-openjdk.x86_64

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
rpm –import https://pkg.jenkins.io/redhat/jenkins.io.key

yum install jenkins

访问服务器地址,开始配置你的的 Jenkins,首页是让你输入初始密码,并告诉你初时密码所在的文件;
on Debian 10
Debian Jenkins Packages
Jenkins Regular releases (Weekly)
# 08/19/2020

wget -q -O – https://pkg.jenkins.io/debian/jenkins.io.key | apt-key add –
echo[……]

READ MORE

「Jenkins」- 权限与安全

管理密码重置
If you forgot Jenkins Admin password how to trouble shoot? DEVOPS Interview Question Quick HOWTO: Reset Jenkins Admin Password
WIP 待完善:过程并不是十分的清晰
# vi /var/lib/jenkins/config.xml file

<useSecurity>false</useSecurity>

# service jenkins restart
Manage Jenkins > Configure Global Security > Enable security -> Jenkins’ own user database
授权用户可访问的页面
accessing Jenkins HTML report
用户需要登录,才能查看及访问某些页面。在内网中,用户需要不登录就查看某些页面。
访问 Configure Global Security 页面,赋予匿名用户(或特定用户)赋予 Read(读取)权限。
注意事项,不建议这么做,因为有些 Jenkins 部署在公网,赋予匿名用户权限后,公网可以直接访问。
认证 | Authentication
LDAP
安装 LDAP https://plugins.jenkins.io/ldap/ 插件
Manage Jenkins / Security / Authentication
接入 LLDAP 认证 | https://github.com/lldap/lldap/blob/main/example_configs/jenkins.md
授权 | Authorization
Access Control | https://www.jenkins.io/doc/book/security/access-control/
Anyone can do anything Legacy mode Logged-in users can do anything
Matrix-based security
Matrix Authorization Strategy | https://plugins.jenkins.io/matrix-auth/
Matrix-based security | 通过该方式,我们能够在全局控制用户能够进行的操作。
Project-based Matrix Authorization Strategy | 通过该方式,在特定[……]

READ MORE

「Node.js」- npm | Node Package Manager | 包管理器

认识
npm(Node Package Manager)是 Node.js 的包管理工具,用于安装、管理和共享 JavaScript 代码包。
不过有趣的是,npm 的官方文档现在不再将其视为缩写,而是直接称其为 “npm”(全部小写)。最初 npm 确实是 “Node Package Manager” 的缩写。但随着 npm 的发展,它已经不仅仅用于 Node.js,也可以管理前端项目的依赖(如 React、Vue 等),所以官方不再强调其全称。现在 npm 的官网 https://www.npmjs.com 和文档都直接使用 “npm”,而不是 “NPM”。
组成
配置文件路径 | .npmrc
npm – Npmrc – w3resource

Per-user config file: $HOME/.npmrc
Global config file: $PREFIX/etc/npmrc

命令程序
WIP
Registry
官方:https://registry.npmjs.org
构建
安装 npm 工具
在 Linux 中,升级 NPM 命令:

npm install -g npm@next
npm install -g npm@latest

常用命令整理

# npm list -g # 显示所有用户目录中的包,以树形结构显示
# npm list -g – depth=0 # 指定树显示的深度
# npm list # 显示当前目录中的包

Q:npm config set … vs. npm set … 两者区别? A:功能完全相同。命令 npm config set 更正式,是 npm 官方推荐的配置方式。命令 npm set 属于旧版命令,未来可能被弃用。
-f, –force | The -f or –force argument will force npm to fetch remote resources even if a local copy exists on disk.

依赖解析失败,通过该选项得以解决。# 05/21/2025

性质
依赖管理
安装、更新、卸载 JavaScript 包。
自动解析依赖关系,生成 package.json 和 package-lock.json。
package.json,项目的配置文件,包含:

dependencies:生产环境依赖(如 express)。
devDependencies:开发环境依赖(如 eslint)。[……]

READ MORE

「REDIS」- 服务 | 部署 | on Kubernetes

Redis 6.2.7 | with Helm Chart
Deploying a stateless Go app with Redis on Kubernetes | CalliCoder https://rancher.com/blog/2019/deploying-redis-cluster/
charts/bitnami/redis at master · bitnami/charts

# helm repo add bitnami https://charts.bitnami.com/bitnami
# helm repo update

# helm pull bitnami/redis # redis-16.13.2.tgz, Redis 6.2.7
# helm show values ./redis-16.13.2.tgz > redis-16.13.2.helm-values.yaml
…(1)修改存储类:global.storageClass
…(2)修改运行模式:默认 replication 模式,我们使用 standalone 模式(测试目的);

# helm –namespace infra-database \
install redis bitnami/redis -f redis-16.13.2.helm-values.yaml \
–create-namespace

# helm –namespace infra-database \
upgrade redis bitnami/redis -f redis-16.13.2.helm-values.yaml

// —————————————————————————- // 当执行成功后,产生如下输出:

Redis&reg; can be accessed via port 6379 on the following DNS name from within your cluster:

redis-master.infra-database.svc.cluster.local

To get your password run:

export RED[……]

READ MORE

「PDF」- 场景及方案

Linux,命令行,导出 PDF 书签
PDF Labs/How to Export and Import PDF Bookmarks
通过 pdftk-java 工具,能够导出 PDF 文件中的书签(参考 PDF Labs 文档,获取更多内容和帮助信息)。
如下如下命令导出 PDF 文件的书签:

# Debian
apt-get install -y pdftk pdftk-java

# 导出书签
# 该命令将 file.pdf 的书签导入到 output.txt 文件,其中包含书签层级等信息
# dump_data_utf8:书签包含中文,所以使用该选项(而非 dump_data 选项)。
pdftk ‘/path/to/file.pdf’ dump_data_utf8 output output.txt

# 导出书签(只需要书签)
grep BookmarkTitle output.txt | sed ‘s/BookmarkTitle: //’

Linux,命令行,合并 PDF 文件
How to Quickly Merge PDF Files on Linux – OMG! Linux
通过 pdfunite 命令:

# 例如:

pdfunite file1.pdf file2.pdf output.pdf

# 例如(如果当前目录包含多个文件,也命名方式能够通过 sort –version-sort 排序)

pdfunite $(/bin/ls -w 1 | sort –version-sort) output.pdf[……]

READ MORE

「MySQL」- 管理与维护

基本概念:介绍 MySQL 中一些常用词汇、专业术语。
MySQL 8.0 Reference Manual / The Main Features of MySQL https://dev.mysql.com/doc/refman/8.0/en/features.html
Internals and Portability
WIP
Data Types

数据存储:MySQL 可以存储大量的数据,包括文本、数字、日期、时间、图像等。

Statements and Functions

数据操作:MySQL 提供了多种 SQL 命令,如 SELECT、INSERT、UPDATE、DELETE 等,可以用来操作数据库中的数据。
视图、存储过程、触发器:MySQL 支持创建和使用视图、存储过程、触发器,以实现更复杂的业务逻辑。

Security

数据安全:MySQL 提供了用户权限和密码保护功能,可以保证数据的安全。

Scalability and Limits

多用户并发:MySQL 支持多用户同时访问数据库,处理大量并发请求。

Connectivity
Localization
Clients and Tools
客户端 and 工具
其他性质及功能
其主要功能特性有:

数据恢复:MySQL 提供了备份和恢复功能,可以保证数据的可靠性。
数据处理:MySQL 支持多种数据类型和函数,可以进行复杂的数据处理。
性能优化:MySQL 提供了索引、查询优化等功能,可以提高数据查询的性能。
数据库事务处理:MySQL 支持事务处理,可以保证数据的一致性和完整性。
数据复制:MySQL 提供了主从复制和双主复制功能,可以提高数据的可用性和冗余性。

存储对象 | Stored Objects
https://dev.mysql.com/doc/refman/8.4/en/stored-objects.html
Event Scheduler | MySQL 事件调度程序管理事件的调度和执行,即按照计划运行的任务。其能够实现定时执行 SQL 语句。[……]

READ MORE

「Jenkins」- 构建节点管理 | Agent | 添加节点、删除节点、初始化节点

第一步、添加节点
当「Master 在公网,Agent 在内网」时,Master 无法连接 Agent,我们通过 Agent 主动注册的方式。
节点主动注册:通过 Docker Compose 方式
What’s the docker-compose equivalent of docker run –init? – Stack Overflow Youtube/9. Connect Master with Slave in Jenkins jenkins/inbound-agent – Docker Image | Docker Hub
通过 Docker Compose 的原因:我们不想写 systemd Service Unit 文件;需要对 Agent 进行隔离(次要原因);
docker-compose.yaml:

version: ‘3’

services:
jenkins-node:
image: jenkins/inbound-agent
# init: /usr/libexec/docker-init # Version 2
init: true
restart: always
volumes:
– ./data/:/data/jenkins-node/
– ./sbin/:/usr/local/sbin/ # 部分命名需要安装
command:
– -url
– <the Jenkins root URL>
– -workDir
– /data/jenkins-node/data
– <Secret>
– <NodeName>

第二步、节点初始化(节点环境设置)
Jenkins – Run job when new slave connects – Stack Overflow
针对节点初始化,其本质工作还是安装各种命令及工具,诸如 kubectl, helm, make 等等。
Node and Label parameter
Node and Label parameter | Jenkins plugin 3.3 Run Single Job Parallely in Multiple slaves – Jenkins
通过该插件,Job 将在多个节点上执行,并在节点中完成命令安装。
Startup Trigger
Startup Trigger | Jenkins plugin
Slave SetupPlugin
Slave SetupPlugin[……]

READ MORE

「13.Developing Kubernetes」

13.3. Using a Python Client to Interact with the Kubernetes API
如何在 Python Kubernetes API 编写脚本?我们将演示如何使用 Python Kubernetes 的 API 服务,
首先需要安装 Python kubernetes 模块。这个模块是在 Kubernetes incubator Python 软件包管理工具(Python Package Index,pyPi)网站安装此模块:

# pip install kubernetes

通过默认的 kubectl 环境可以访问 Kubernetes 的集群,然后就可以使用该 Python Kubernetes API 对话了。

from kubernetes import client, config

config.load_kube_config()
v1= client.CoreV1Api()
res= v1.list_pod_for_all_namespaces(watch=False)

for pod in res.items:
print(pod.metadata.name)

脚本中 config.load_kube_config()的调用,可以从 kubectl1 的配置文件中加载 Kubernetes 的认证信息和访问点。默认情况下,它将加载当前环境中的集群访问点和认证信息。
Python Kubernetes API 的 OpenAPI 规格创建的。它会自动生成并一直保持最新。该客户端可以访问所有的 API。
每个 API 组对应一个具体的类,所以如果需要调用属于 /api/v1 API 组的 API 对象的方法,那么需要实例化 CoreV1Api 类。在使用 Deploymnet 时,需要实例化 extensionsV11beta1Api 类。你可以在自动生成的帮助文档中找到所有的方法与对应的 API 组的实例(https://github. com/kubernetes-clientlpython/treel masterkubernetes)。
项目代码仓库中的实例 https: /github. com/kubernetes/python/tree//kuberetes-clietpyhntree masterexamples[……]

READ MORE

「REDIS」- 服务 | 部署 | with Docker Compose

镜像:https://hub.docker.com/_/redis

version: ‘3.8’
services:
redis:
image: docker.io/library/redis:4.0
restart: always
ports:
– ‘8170:6379’
command: redis-server –save 20 1 –loglevel warning –requirepass VvChXa5tOjcBEq
volumes:
– ./data:/data

docker-compose up -d
禁用 Transparent Huge Pages 参数
linux – disable transparent hugepages – Unix & Linux Stack Exchange How to disable Transparent Huge pages (THP) on CentOS / RHEL 7? – Ucartz Online Pvt Ltd
echo never > /sys/kernel/mm/transparent_hugepage/enabled
for CentOS

vim /etc/default/grub

GRUB_CMDLINE_LINUX=”… transparent_hugepage=never”

grub2-mkconfig -o /boot/grub2/grub.cfg # for On BIOS-based machines
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg # On UEFI-based machines

# Reboot the system and verify option are in effect.
shutdown -r now
cat /proc/cmdline[……]

READ MORE

「MySQL」- 修改查询超时时间

SET GLOBAL connect_timeout=28800′;
SET GLOBAL wait_timeout=28800′;
SET GLOBAL interactive_timeout=28800′;

connect_timeout: 握手时,等待数据包的时常; interactive_timeout:交互式连接时,在关闭连接前等待一个活动的时间; wait_timeout:非交互式连接时,在关闭连接前等待一个活动的时间;
交互式连接与非交互式连接
看过其他人的说法:“说得直白一点,通过 mysql 客户端连接数据库是交互式连接,通过 jdbc 连接数据库是非交互式连接。”
目测, 交互式连接:客户端的连接 => 交互查询 => 长时间未操作 => 关闭连接; 而非交互式连接侧重于单次查询:建立连接 => 查询 => 返回 => 关闭连接;
参考文献
How to set a maximum execution time for a mysql query?[……]

READ MORE

「Redis」- 配置及管理

1/ 简单介绍:功能概述;使用场景,服务的用途,解决那些问题:比如消息队列,事务等等; 2/ 服务部署(单机):安装和部署 REDIS 服务 3/ 基础入门:在 Redis 中的术语及概念;使用操作;常用指令; 4/ 配置管理:常用的配置;状态信息;运行状态; 5/ 安全相关:安全设置;使用安装;注意事项 6/ 服务性能:优化设置及压力测试 7/ 服务监控: 8/ 集群 / 高可用性:
相关文章
https://www.cnblogs.com/jasontec/p/9699242.html https://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=2653547263&idx=1&sn=fe484b24660b7e1dc4beabca71fe1cb1&scene=21#wechat_redirect https://blog.csdn.net/ikownyou/article/details/83272855
# 关于 redis-server 命令选项
-「Redis configuration」 -「Docs for redis-server command line options」 从「Redis 2.6」开始,可以直接使用命令行传递 Redis 配置参数。该功能对于参数测试非常有用。通过命令行传递的参数,它的格式与 redis.conf 文件中使用的格式完全相同,但是需要使用–作为前缀。
监听 127.0.0.1 的 6380 端口,并作为 6379 的从库:redis-server –port 6380 –slaveof 127.0.0.1 6379
SIGTERM
ubuntu – Determining why Redis is receiving a SIGTERM every minute or two – Stack Overflow
用户重启或其他原因重启。[……]

READ MORE

「MySQL」- 场景及方案 | 服务应用

本部分将整理一些在 MySQL 中的常用命令。比如数据库管理,用户名密码的重置,删除用户等等。
快速入门:介绍 MySQL 中常用的一些操作,属于基础部分。
系统环境

操作系统:
CentOS Linux release 7.6.1810 (Core)

软件版本:
mysqld Ver 5.6.45 for Linux on x86_64 (MySQL Community Server (GPL))

命令行执行语句
执行单条语句
Run a single MySQL query from the command line

#!/bin/sh

mysql -h ‘[hostname]’ -u ‘[username]’ -p -P ‘[port]’ ‘[dbname]’ -e ‘[query]'[……]

READ MORE

「MySQL」- 日志 | 监控 | 性能

通过 监控告警、日志收集、性能分析 角度,实现对 MySQL 性能检测。该笔记将记录:在 MySQL 中,日志、监控告警相关的内容,以及相关问题的解决方案;
监控 | Monitoring
日志
MySQL 5.6/…/MySQL Server Logs

日志类型
写入日志的信息

Binary log
修改数据的语句,同时也用于复制。

Relay log
在主从复制中,从主库中收到的数据变更日志。

Slow query log
慢查询日志

DDL log (metadata log)
由 DDL 语句执行的元数据操作

General query log
由建立连接的客户端发送过来的语句。

Error log
错误日志,在启动运行停止 MySQL 服务时遇到的错误。

Error Log
https://dev.mysql.com/doc/refman/5.7/en/error-log.html[……]

READ MORE

「Redis」- 监控 | 日志 | 性能 | 告警

# CacheCloud
搜狐视频开源的 Redis 云平台
相关文章
面试官:Redis 监控指标有哪些?
日志 | Logging
修改日志等级
-「Redis/redis.conf」 -「redis conf changes without restart」
使用热更新可以不停机的情况下修改配置文件。执行CONFIG SET loglevel debug命令即可。(Available since 2.0.0.)
但是修改结束后,需要将配置文件持久化。执行CONFIG REWRITE命令将配置写入文件。(Available since 2.8.0.)
监控 | Monitoring
查看客户端列表 | CLIENT LIST https://redis.io/docs/latest/commands/client-list/[……]

READ MORE

「External-DNS」- 场景 | 方案

场景 | 绑定 Service[type=LoadBalancer] 到域名
kubernetes-sigs/external-dns
通过为 Service[type=LoadBalancer] 添加注解,ExternalDNS 将自动在云商中添加 DNS 解析;

# kubectl annotate service nginx “external-dns.alpha.kubernetes.io/hostname=nginx.example.org”
# kubectl annotate service nginx “external-dns.alpha.kubernetes.io/ttl=10”

场景 | 同个域名,被多个集群管理
–txt-owner-id “my-cluster-id”
通过该参数,其创建的 DNS 解析记录中将包含该 id 值,该值用于与其他 External DNS 实例创建的 DNS Record 进行区分。
场景 | 解析到特定地址
external-dns/docs/annotations/annotations.md at master · kubernetes-sigs/external-dns
external-dns.alpha.kubernetes.io/target: cdn-cname.exmaple.com
场景 | 最后的 CNAME 记录无法被删除
external-dns 会创建 3 条记录,当修改 Ingress Class 之后,最终的 CNAME 不会被删除。
cannot delete cname records in route53 with txt registry and txt-suffix · Issue #2474 · kubernetes-sigs/external-dns[……]

READ MORE

「XtraBackup」- 部分备份与数据恢复

问题描述
本文将简单介绍如何使用 XtraBackup 进行“部分备份” —— 备份特定表(或者数据库),并从使用备份进行数据恢复。
前提条件
备份的表必须在独立的表空间中,因此服务器要启用innodb_file_per_table选项。
恢复部分备份需要导入表(ALTER TABLE m.n IMPORT TABLESPACE),而不是使用传统的–copy-back选项。虽然在某些场景下直接复制表文件也可以生效,但是可能会导致数据不一致的情况,不建议如此操作。
如何创建备份?
第一步、创建备份
有三种方法指定要备份的部分数据:(1)正则表达式;(2)在文件中枚举表;(3)提供数据库列表;
正则表达式 提供给该选项的正则表达式将用于匹配“全限定表名”,包括库名,以databasename.tablename形式:

#!/bin/sh

innobackupex –user=root –password=”your password” –include=’^mydb[.]mytable’ /path/to/backup

该命令将创建以时间戳命名目录,并将innobackupex创建的文件保存在其中,但是只有正则表达式匹配的数据文件。
注意,该选项会被专递给xtrabackup –tables选项,并且该选项将匹配每个数据库的每个表。即使数据库是空的,也会为他们创建对应目录。
在文件中枚举表 通过文件指定需要备份的表明,每张表一行,以databasename.tablename形式:

#!/bin/sh

echo “mydatabase.mytable” > /tmp/tables.txt
innobackupex –tables-file=/tmp/tables.txt /path/to/backup

该命令将创建以时间戳命名的目录,但是只包含文件中列出的数据库文件。
注意,该选项会被专递给xtrabackup –tables-file选项,与–tables选项不同,只会为文件中列出的数据库创建目录。
提供数据库列表 提供给该选项的参数,可以是空格分隔的数据库或表名列表,也可以是在文件中的项(每行一个):

#!/bin/sh

innobackupex –databases=”mydatabase.mytable mysql” /path/to/backup

该命令将创建以时间戳命名目录,但是只包含文件中列出的数据库文件。
第二步、进行“预备”操作
在备份被用于恢复之前,需要进行“预备”操作,使用–export选项:

#!/bin/sh[……]

READ MORE

「RANCHER」- 部署 | 部署 | 升级 | 迁移 | 高可用集群

Installing and Upgrading // 安装升级 | 服务简单部署;服务简单使用;运行服务并验证能够访问; High-availability Cluster // 高可用性 | 部署(生产级别) Backup, Recover, Migrate // 备份恢复 | Observability of Service // 服务观测 | 服务观测 Performance Tuning, Trace // 性能调优 | 性能优化:基准测试;压力测试; Permission and Security // 安全权限 |
版本选择
Rancher / Support Matrix
不同版本的 Rancher 所支持的 Kubernetes 版本也不同,所以要选择与当前集群匹配的 Rancher 版本。
参考 Support matrix | SUSE 文档,以获取具体细节: 1)Rancher …:该部分介绍 Rancher Server 要求的 Kubernetes Cluster 版本信息: 2)Downstream Clusters …:该部分介绍 Rancher Server 能够管理的 Kubernetes Cluster 版本;

Rancher Kubernetes Cluster
2.5.9 1.17.x – 1.20.x
2.6.3 1.18.x – 1.21.x
2.6.12 v1.20 – v1.24
2.7.1 v1.23 – v1.24
2.7.2 v1.23 – v1.25
2.10.4 v1.28 – v1.31

Rancher Rancher Manager Downstream Cluster
2.8.2 v1.25 – v1.27 v1.25 – v1.27
2.8.3 v1.25 – v1.28 v1.25 – v1.28
2.9.1 v1.27 – v1.30 v1.27 – v1.30

部署方式
官方建议使用专用的 Kubernetes Cluster 来运行 Rancher Server 服务。
但是,出于成本及维护考虑,我们暂时通过 Docker 部署,后面再通过 Rancher Backup Operator 进行迁移。
现在(05/27/2023),我们已经将 Rancher 迁移到 Kubernetes 中运行。
服务卸载
卸载 Rancher Manager 服务 | What if I don’t want Rancher anymore? |

https://rancherm[……]

READ MORE

「Redis」- Remote Dictionary Server | Redis Open Source

认识
官网:https://redis.io/open-source/ 文档:https://redis.io/docs/latest/operate/oss_and_stack/ 仓库:https://github.com/redis/redis
For developers, who are building real-time data-driven applications, Redis is the preferred, fastest, and most feature-rich cache, data structure server, and document and vector query engine. 简而言之,Redis 是个开源(BSD 许可)、内存数据结构的存储,可以作为数据库、缓存、消息代理来使用。
组成
WIP
构建
WIP
性质
它支持如字符串,散列,列表,集合,带有范围查询的排序集,位图,超级日志,具有半径查询的地理空间索引,流等数据结构。 Redis 具有内置复制,Lua 脚本,LRU 驱逐,事务,不同级别的磁盘持久性,并通过 Redis Sentinel 提供高可用性,并使用 Redis Cluster 自动分区。
您可以对某些数据类型运行“原子操作”。例如,追加字符串;递增哈希值;将元素推到 List 中;计算 Set 的交集、并集、差异;或者在 Sorted set 中获得排名最高的成员。
为了实现其出色的性能,Redis 使用“内存数据集”。根据您的使用情况,您可以通过每隔一段时间将数据集转储到磁盘,或通过将每个命令附加到日志的方式来保留它。如果您只需要功能丰富的网络内存缓存,则可以选择禁用数据持久化。
Redis 还支持「主从异步复制」,具有非常快速的非阻塞首次同步,自动重新连接以及在网络分割上的部分重新同步。
其他的特性还有:

事务支持
发布 / 订阅
执行 Lua 脚本
生存时间
LRU 驱逐
自动故障转移

可以在多种编程语言中使用 Redis 服务。
Redis 是用 ANSI C 编写的,适用于大多数 POSIX 系统,如 Linux,*BSD,OS X,没有外部依赖性。Linux 和 OS X 是 Redis 开发和测试的两个操作系统,建议使用 Linux 进行部署。在 Solaris 衍生系统(如 SmartOS)中也可以运行 Redis 服务,但尽量支持。Windows 版本没有官方支持,但 Microsoft 开发并维护了 Redis 的 Win-64 版本。
应用
服务部署
2.2 Construction and M[……]

READ MORE

「SCIENTIFIC-BROWSING」- 科学上网 | Scientific Browsing

认识
—— 该部分将介绍科学上网是什么、其的由来、大致的发展过程,以帮助我们快速形成针对`科学上网`技术的基本认识。
Internet censorship circumvention, also referred to as going over the wall (Chinese: 翻墙; pinyin: fān qiáng) or scientific browsing (Chinese: 科学上网; pinyin: kēxué shàngwǎng) in China, is the use of various methods and tools to bypass internet censorship.
我们需要上网,我们需要阅读官方文档,我们需要学习跟多的知识,我们上网只为学习计算机技术,我们的浏览历史里只有 Stack Overflow、GitHub 等等技术站点,仅此而已。我们只是普通 IT 从业人员,想到国外查些官方文档,增长技术水平。该笔记将整理:与代理服务器、网络加速、上网有关的内容,以及相关问题的处理方法。
组成
—— 该部分将介绍科学上网技术的组成,例如`软件架构`、`交互原理`等等,以帮助我们形成针对`科学上网`服务的内部原理。
针对科学上网,其本质仍旧是代理技术、VPN 技术,但是为了规避审查,其还引入很多其他技术。
架构体系
Client ⇒ Proxy Client ⇒ (Encrypted Traffice) ⇒ Firewall ⇒ (Encrypted Traffice) ⇒ Proxy Server ⇒ Destination Server
Redir Host
当我们使用 REDIR-HOST 模式时,

浏览器请求 DNS 解析,
DNS 解析请求被 Clash Client 截获,Clash Client 向外部发送 DNS 解析请求,获得 IP Address 以后,返回给浏览器,
浏览器根据 IP 发起连接,请求被 Clash Client 拦截,Clash Client 根据 IP 在其映射表中反查出域名,再用 Rules 判断域名是否走代理,
如果经过代理转发,代理服务器再次解析 dns 并完成后续请求。

根据 ip 在其映射表中反查出域名,进而判断流量是否经过代理,所以即便 DNS 被污染也无所谓,毕竟不会请求该 IP Address。
缺点

同个 IP Address 会被多个域名使用,进而影响 IP 反查域名功能。

Fake IP
该 Fake IP 概念出自 RFC3089,早在 2001 年就被提出来。其为实现 Proxy Client[……]

READ MORE

「CITA-Cloud」- 安装部署

认识
CITA Cloud 是一个基于区块链技术的云端服务平台,旨在为企业和开发者提供高效、安全和可扩展的区块链解决方案;
组成
CITA Cloud 不是基于 CITA 区块链技术构建,CITA 是一个开源的企业级区块链解决方案,具有高度可定制性和灵活性;
构建
快速部署
cita-cloud/charts at v6.2.0 https://cita-cloud-docs.readthedocs.io/zh_CN/latest/getting-start.html

git clone https://github.com/cita-cloud/charts.git
git checkout v6.2.0

# kubectl create namespace cita-cloud
# kubectl config set-context –current –namespace cita-cloud

helm –namespace cita-cloud install \
test-chain-pvc ./cita-cloud-pvc/ –set scName=nas-client-provisioner

helm –namespace cita-cloud install \
test-chain ./cita-cloud-local-cluster \
–set pvcName=test-chain-pvc \
–set replicaCount=4 \
–set service.nodePort=31004 \
–set service.vmPort=31005

通过 Helm 部署

helm repo add cita-cloud https://cita-cloud.github.io/charts
helm repo update
helm search repo cita-cloud/

// —————————————————————————- //

helm pull cita-cloud/cita-cloud-pvc # cita-cloud-pvc-6.6.1.tgz

helm show values ./cita-cloud-pvc-6.6.1[……]

READ MORE

「CSS」- 层叠样式表 | Cascading Style Sheets

认识
随着 HTML 的成长,为了满足页面设计者的要求,HTML 添加了很多显示功能。但是随着这些功能的增加,HTML 变的越来越杂乱,而且 HTML 页面也越来越臃肿;
1994 年哈坤·利提出了 CSS 的最初建议。而当时伯特·波斯(Bert Bos)正在设计一个名为 Argo 的浏览器,于是他们决定一起设计 CSS。于是 CSS 便诞生了;
其实当时在互联网界已经有过一些统一样式表语言的建议了,但 CSS 是第一个含有“层叠”丰意的样式表语言;
文档:https://developer.mozilla.org/en-US/docs/Web/CSS
性质
在 CSS 中,一个文件的样式可以从其他的样式表中继承。读者在有些地方可以使用他自己更喜欢的样式,在其他地方则继承或“层叠”作者的样式。这种层叠的方式使作者和读者都可以灵活地加入自己的设计,混合每个人的爱好;
应用
定义 HTML 的显示样式;
改进
CSS Framworks
参考
CSS(层叠样式表)_百度百科[……]

READ MORE

「iSCSI」- 常见错误汇总

# 登录成功,但是块设备没有显示
「CentOS iscsi initiator has session but there is no block device」
问题描述: 执行iscsiadm的登录之后,提示成功,但是没有显示块设备
问题原因: 远程存储会检查Initiator的IQN值。
解决办法: 修改Initiator的IQN值,或者修改Target允许的的IQN值,总之二者保持一致。[……]

READ MORE