自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

nvd11的专栏

it's a blank description

  • 博客(410)
  • 收藏
  • 关注

原创 使用 proxySQL 来代理 Mysql

我有若干台云主机, 但是只有1个台vm 具有外部ip而在另1台vm上我安装了1个mysql instance, 正常来讲, 我在家里的电脑是无法连接上这个mysql尝试过用nginx 代理, 但是nginx只能代理http协议的, mysql 3306 并不是http协议解决方案两种。

2024-04-09 00:05:05 1112

原创 K8S - Service简介和 1个简单NodePort例子

严格来说,Kubernetes中的Service仅仅包括ClusterIP、NodePort和LoadBalancer这三种类型。NodePort类型的Service是Kubernetes中最常见的一种服务类型。让我来详细介绍一下NodePort Service:NodePort Service会在每个NodeNode上随机分配一个端口(默认范围30000-32767),通过这个端口就可以从集群外访问Service。

2024-04-08 00:01:42 1174

原创 K8S - Deployment 的版本回滚

更新回之前的版本, 与一般的更新不同, 因为之前已经有1个RS 是for image 1.1.2的所以这次k8s 重用了之前的rs而并没有增加1个。只不过1.1.3 版本的RS 有5个当前运行的POD 副本, 而1.1.1 和 1.1.2 的副本数量是0, 符合常规.可以看到回滚的实现就是无非把1.1.2的rs 里的pod副本逐渐增加到5, 而1.1.3 rs的pod副本从5 减少到0。有5个pod 正在运行, 关键pod 名字是包含了 rs 的对象名字的。回滚1个service 的版本有多种方法。

2024-04-05 00:22:36 1231

原创 K8S- Deployment 的滚动更新 Rolling Update

结果是 deployment 和 rs 的属性都更新了, 而且pod 也增加了两个, 但是实际上rs 的hash 没变, 还是那个RS, 而且pod 的版本仍然是1.1.1 并没有触发滚动更新。至于ReplicaSet 则是直接多了1个, 足以看出k8s 是新建1个 RS 作为临时的POD 容器进行滚动更新, 当新的RS 完成所有pod 更新时, 旧的RS 就被丢弃放在一边了。结果, 单纯地添加了1个label在deployment 对象, rs 和 pod 都没有触发更新。结果, 触发了滚动更新。

2024-04-04 22:12:57 1116

原创 K8S Deployment 简介, 1个简单的Kubernetes Deployment YAML 文件

当谈到 Kubernetes 集群中的应用程序部署和管理时,Deployment、ReplicaSet 和 Pod 是三个重要的概念。它们之间存在一定的关系和层次结构。下面是对 Deployment、ReplicaSet 和 Pod 的详细解释以及它们之间的关系。

2024-04-04 18:34:36 1286

原创 K8S Pod 的生命周期

本文会介绍 1个 POD 从启动到被关闭删除, 有什么事情发生, 和有什么组件被参与进来。

2024-04-03 00:39:22 1459

原创 让数据在两个buckets之间传输 - Google Storage Transfer Service

Google 已经具有个产品叫 Storage Transfer Service, 可以帮我们把文件在两个bucket 之间传输(甚至包括AWS S3 Bucket, 不在本文讨论范围内)就是storage transfer service 的源bucket参考https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/storage_transfer_job.html。

2024-03-21 02:48:06 1032

原创 K8S POD 启动探针 startupProbe 的使用

当我们启动一个POD 时, 当k8s detect 里面的容器启动成功时, 就会认为这个POD 启动完成了, 通常就会在状态里表示 ready 1/1 …例如至于K8S 是怎么判断pod 是否启动完成的:对于容器内没有设置探测规则的情况,默认的探测规则如下:启动完成检测:Kubernetes将监视容器的启动状态。如果容器的进程启动并且不处于终止状态(例如,未崩溃),Kubernetes将认为该容器已启动完成。

2024-03-18 04:15:23 688

原创 利用SpringBoot Actuator 来构造/health /info 等监控接口

当我们用K8S 部署微服务时, 很多时候需要调用 service的/health 等状态接口, 已确定container的运行状态是否健康。而Spring boot Actuator 就是用来快速构造这些状态接口的工具。

2024-03-17 18:59:09 424

原创 google cloud run service - 用CMEK 加密容器

GCP 的 CMEK 指的是 Customer-Managed Encryption Keys(客户管理的加密密钥)。在 Google Cloud Platform(GCP)中,CMEK 允许客户自行管理用于加密其云服务数据的加密密钥。简单来讲, 我们可以利用1个 Key 去加密保护我们的GCP component , 例如cloud run service 和 bigquery dataset, bucket 等等WTF, 我先检查一下service accounts 列表。

2024-03-15 03:51:15 487

原创 Java 启动参数 -- 和 -D写法的区别

当我们配置启动1个java 项目通常需要带一些参数例如 -Denv = uat , --spring.profiles.active=dev 这些那么用-D 和 – 的写法区别是什么?

2024-03-12 03:38:17 281 1

原创 K8S - 在任意node里执行kubectl 命令

当我们初步安装玩k8s (master 带 2 nodes) 时正常来讲kubectl 只能在master node 里运行当我们尝试在某个 node 节点来执行时, 通常会遇到下面错误看起来像是访问某个服务器的8080 端口失败了。

2024-03-10 00:02:59 392

原创 K8S - 解决NodePort 只能用Pod 所在的node 的ip 访问

我刚安装完k8s, 1个master 两个node然后用下面两句命令安装了1个nginxnginx 这个pod 安装在了k8s-node1 中但是我只能在k8s 上用k8s-node1 来访问这个nginx 服务, 例如但是用k8s-master 和 k8s-node0的ip都是不能访问的。

2024-03-09 04:20:09 577

原创 Nginx 配置反向代理 - part 3

一张图很清楚地表达了。

2024-01-14 02:34:21 1013

原创 Nginx location 配置 - Part 2

接上文链接:上文 我们简单地在 nginx 创建了3个虚拟主机, 虽然这个3个主机都是用占用80端口但是我们可以用不同的域名来实现区分访问3台虚拟主机。但是, 实际项目上, 我们更加多地会使用location 配置而不是用 域名区分。本文的重点就是location 配置。

2024-01-08 00:48:47 1054

原创 Nginx 简介和入门 - part1

包含了所有nginx的配置文件– 主配置文件在 Nginx 中,/etc/nginx/conf.d 目录用于存储自定义的配置文件片段。这些配置文件片段通常以 .conf 扩展名结尾,并包含了特定的 Nginx 配置指令和块,用于配置服务器的不同方面。当 Nginx 启动时,它会加载主配置文件(通常为 /etc/nginx/nginx.conf),并在主配置文件中包含 /etc/nginx/conf.d 目录中的所有配置文件片段。

2024-01-02 02:38:11 985

原创 GCP 创建1个windows vm 并连接

有时需要临时使用1台windows 的机器既然是临时直接用gcloud command最后1个参数是开启intel VT-X or AMD-v 硬件虚拟化UI 上直接操作

2023-12-31 23:35:16 413

原创 解决IDEA 不能正确识别系统环境变量的问题

本人laptop 上的是设置了GOOGLE_APPLICATION_CREDENTIALS 这个环境变量的, 正常java or python 的程序能基于这个环境变量使用 某个gcp service account 去访问GCP的资源。把Program 的值 从/usr/bin/idea 改成 bash -ic “/usr/bin/idea”,但是在我在IDEA 编写的dataflow job并不能识别这个环境变量。肯定是idea 启动时并没有引用.bashrc 的内容。找到idea 的item。

2023-12-27 00:18:31 776

原创 BigQuery Clustered Table 简介 - 聚簇表

聚簇可以提高某些类型的查询(例如,使用过滤条件子句的查询和聚合数据的查询)的性能。当通过查询作业或加载作业将数据写入聚簇表时,BigQuery 会使用聚簇列中的值对这些数据进行排序。这些值用于将数据整理到 BigQuery 存储的多个块中。当您提交的查询包含基于聚簇列过滤数据的子句时,BigQuery 会使用已排序的块来避免扫描不必要的数据。如果表或分区低于 1 GB,则聚簇表和未聚簇表之间的查询性能可能不会有显著差异。...

2023-12-24 04:46:13 1034

原创 一个简单例子更深入地理解BigQuery 的分区表

首先本文不会讲得很系统, 可以理解为是1个练习, 从这个简单例子中, 我们会体会到分区表与非分区表的操作和效果的区别。

2023-12-24 01:19:51 965

原创 BigQuery 分区表简介和使用

我们先看定义:分区表是一种数据库表设计和管理技术,它将表中的数据划分为逻辑上的多个分区,每个分区包含一组特定的数据。每个分区都根据定义的分区键(通常是一个列或字段)的值进行分类,使得数据可以按照特定的逻辑规则进行划分和组织。通过使用分区表,可以将大型表分解为更小的、可管理的部分,以提高查询性能、数据维护效率和存储资源的利用率。分区表的实现方式和语法可能因数据库管理系统而异,但基本概念和原则是相似的。具体给个例子:当这个表的数据量增大时, 去查询这个表的性能会变慢。

2023-12-23 05:05:15 1390

原创 如何修复Terraform state file 中丢失的资源

有时天灾人祸, 当本人尝试利用terraform 创建1个vm时, 当执行到最后一步时出现了问题从日志看出, 其实资源能正确创建, 但是同步state file时出现了问题, 这个项目的state file是存放在GCS /bucket 上的。日志上写的是网络问题, 估计是踮脚的东西突然塌了几秒先试下rerun, 其实我已经知道rerun注定失败, 因为这时, gcs 上的state file 并没有这个vm资源, 但是这个vm资源其实已经被创建。

2023-12-22 03:15:09 892

原创 使用terraform 来创建GCP的instance template 和基于它的vm

本人在上一篇的文章中已经介绍了如何去创建 google cloud的 vm 的image 和 instance template了但是里面的操作是基于gcloud CLI的。在实际项目上, 我们对google cloud infra的change 更常有的是terraform。

2023-12-22 02:27:56 990

原创 快速构建自定义配置好的VM - 使用GCP instance-template 和 custom-image

简单来讲, instance-template 可以让用户定制1个 vm 的模板规格(cpu / mem/ vpc-network/ disk…)等image 系统镜像注意, 第2点并不是必须的, 如果我们在创建模板时没有指定镜像, 实际上创建出来的vm也是1台刚装好系统的vm.实际上, 第2点在我的测试中并不成功这里建议只用instance-template 去定义vm的规格。

2023-12-19 03:55:49 860

原创 编辑1个自定义systemd 服务并令其自启动

为什么突然搞起了systemd, 因为最近在研究GCP的 vm instance-template 和 系统image, 要制作1个自定义的系统image, 需要利用到systemd.

2023-12-15 01:50:58 78

原创 Google cloud 的VPC Network 虚拟局域网 介绍

相信很多人都知道, 要真正地掌握GCP, VPC 是1个避吾开的一关。VPC 的全称是 Virtual Private Cloud 虚拟私有云… 但是实际上, 我们提起它, 更多的是指的是VPC Network , 而不是VPC 本身。VPC Network 我们可以理解为它就是1个虚拟局域网.而 1个VPC network 中, 我们可以创建多个子网(subnet)。例如下面的表格包含了2个vpc network3个subnet, 其中 两个子网属于同1个vpc network。

2023-12-10 04:57:27 212

原创 让你的内网的GCE 也可以访问外网,Google Cloud Nat 介绍

Nat 的全程是 Network address tranformation , 网络地址转换…通常是1台具有双网卡 (双 ip)地址的机器, 1个公网ip, 1个内网ip功能是让局域网的各个内网主机可以通过这个Nat gatway , 去访问公网。但是公网是不能通过这个Nat gateway去访问指定内网主机的。是的, 我们的家用路由器实际上应该是1个Nat 网关, 而不是一台狭义的路由, 只不过名字叫路由器而已。

2023-12-05 02:47:09 181

原创 使用gcloud SDK 管理和部署 Cloud run service

重点来了, 部署某个service , 只要service name 和 region相同会覆盖旧的service, 不用先停止再部署。命令行部署 cloud run service 和 在 google console 上部署的是差不多的。这里我把jenkins file 和 jenkins library 发出来作为参考。建议你直接删除不必要的service, 或者修改权限设置让它不能被访问。-q 这里意思是quite , 避免删除确认提问, 小心用就是了。参考下面google的官方说明。

2023-12-03 03:39:00 192

原创 手动部署1个Cloud Run service

来自chatgpt:Google Cloud Run 是一项全托管的服务器托管平台,它允许您在容器化的环境中运行无服务器应用程序。Cloud Run 提供了一种简单而灵活的方式来构建、部署和扩展应用程序,无需管理底层基础设施。以下是 Cloud Run 的一些关键特点和功能:无服务器架构:Cloud Run 是一种无服务器计算平台,您只需要提供应用程序的容器镜像,而无需关注服务器的管理和配置。它会根据请求的负载自动扩展和缩减容器实例的数量,以确保您的应用程序能够处理任意数量的请求。

2023-12-01 04:07:52 164

原创 利用 Google Artifact Repository 构建docker 镜像仓库

参考了google 官方文档。

2023-11-12 03:59:27 807

原创 利用 Google Artifact Repository 构建maven 存储仓库

参考了google 官方文档。

2023-11-11 04:40:58 1163

原创 Tomcat10 简单地enable Https

但是其实没有域名也可以在tomcat 中enable https的, 至于为什么, 当然是为了实现传输中的数据被加密了。首先是自己生成1个ssl证书, 当然这个证书是不被浏览器信任的, 但是这个是实现https的前提条件。找到下面的注释, 并反注释它, 填入生成key的路径和密码。通常来讲, 建站后要启用https 有下面3个步骤。3.为这域名购买SSL 证书 (还有其密码)还会问你若干关于证书的问题, 随便填就是。2.绑定域名和 服务器的外部IP地址。这个命令会让你输入你想要的密码。

2023-11-05 01:14:11 291 1

原创 在Google cloud上创建VM虚拟机

一般来讲, 一台VM需要绑定1个service account, 这样这个VM不需要其他任何配置就可以用这个service account去访问其他GCP资源, 具体权限就看这个service account的权限了, 个人建议实现create 1个 vm-common的service account for 所有的vm, 如果不配置, 默认下会为这个VM创建1个新的service account, 具体怎么配置看需求了。关于收费的问题,通常来说,调整MTU的大小不会直接导致额外的费用。

2023-10-16 02:24:27 656

原创 Google Cloud dataflow streaming job简介

首先 gcp 的dataflow 是1个ETL 组件, 它是基于Apache beam的Apache beam 是1个较新的开源ETL 框架。对于我们常用的ETL tool Spring batch 有下面的区别spring batch 更偏向batch (后台处理)的ETL, 而apache beam 同时支持batch 和 streaming 的ETL, 对streaming 的ETL 有更好的支持。

2023-10-08 05:48:55 448

原创 创建GCP service账号并管理权限

包括seviceAccountUser等。

2023-10-03 04:55:46 421

原创 java静态内部类介绍

当内部类不需要访问外部类的实例成员时,且希望内部类与外部类之间没有直接的绑定关系时,可以考虑使用静态内部类。例如,当内部类只是作为外部类的辅助类或工具类时,不需要直接访问外部类的实例状态,这时静态内部类更合适。当内部类需要访问外部类的实例成员,并且需要与外部类紧密关联时,可以考虑使用非静态内部类。非静态内部类可以直接访问外部类的所有成员,包括静态和非静态成员,可以方便地共享外部类的状态和行为。在许多情况下,内部类的选择更多地取决于代码组织和可读性的考虑,以及是否需要对外部类进行封装和隐藏。

2023-10-02 02:26:43 401

原创 用postman 推送消息到GCP的pubsub

url 是 https://pubsub.googleapis.com/v1/projects/我们可以用terraform 去创建1个topic 和 2个subscriptions。其实GCP products 的 rest url 有规律的。Content-Type 是 application/json。获得 这个Topic 的publish Rest url。我们在postman 新建1个 request。基于某个gcp 账号获得1个临时的token。然后用下面命令获得1个token。

2023-09-10 20:43:10 608

原创 持续更新 - 常用Google Cloud CLI 命令

如果是在CLI下, 我们需要手动复制这个网址去另一台有浏览器的机器上登录, 然后把验证码复制回来。如果是linux 桌面 环境下, 直接会弹出浏览器让你在浏览器登录。### 用service account 登录 gcloud。接下来 它会列出1个网址。

2023-09-10 18:25:08 277

原创 RSA算法的数学原理

具体来说,假设有一个大的合数n,它是两个大的质数p和q的乘积,即n = p * q。这是因为目前已知的最好的分解算法需要指数级的时间和计算资源,随着p和q的位数增加,算法的时间和资源需求呈指数级增长。随着计算技术的不断进步和新的算法的发展,有可能会出现更快速的分解算法,从而导致这些加密算法的不安全性。大质数分解是指将一个大的合数分解成它的质因数的乘积的过程。所以这就是RSA神奇的地方, 其实下数学式中, y表示加密后的值, x是原来的值, 而e 和 n的组合[e, n] 就是公钥public key。

2023-07-01 23:56:33 345

原创 通俗地介绍RSA非对称加密方式

加密解密都与key密切相关这时Alice 用excel的加密功能把工资单加密了. 这时她发现加密时必须提供1个密码(key)而且她必须把密码通过另外的渠道发给Peter.Peter 必须使用相同的密码解密工资单实际上, 其中加密和解密过程中都必须提供1个key, 而对于这种加密和密码都使用同1个key(或者说key的相同副本)的加密方式就叫做对称加密。

2023-07-01 21:16:09 229

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除