Git | Linux | Docker | K8S
文章平均质量分 85
运维相关知识分类
Wang's Blog
Keep learning for the innovation era.
展开
-
Nginx: 基于多网卡,端口,域名的虚拟主机实现
这里直接配置 nginx,下面是核心配置。1 ) 基于 多IP 的虚拟主机。2 ) 基于 多端口 的虚拟主机。3 ) 基于 域名 的虚拟主机。2 )Nginx 核心配置。准备好 host: $1 ) 网卡和IP配置。检查,重载配置,并访问。原创 2024-09-03 14:39:25 · 1335 阅读 · 0 评论 -
Nginx: 模块化管理编译安装与配置结构
upstream模块, 就是实现了反向代理的功能,只要有这个模块 Nginx 就能够将一个客户端的用户请求真正的转发到一个后端的一个服务器,可能是具体的应用服务器,从而它还能够实现在后端服务器结束有具体的响应内容之后,从后端的服务器上读取响应的内容,从而继续封装返回给客户端,对于upstream模块来说,其实也是一种特殊的handler模块,只不过,这个响应模块它不是自己来处理的而从后端服务器上读取的。主要是三大模块,第一个是events模块,第二个是http模块,第三个是server模块。原创 2024-09-03 12:44:36 · 876 阅读 · 0 评论 -
Nginx: 配置文件重载的原理和热部署
注意,新版本的nginx的目录结构需要与旧版一致。假设主目录是 /opt/nginx 下 $reload 重载配置文件的流程。2 )实际演示升级Nginx程序。1 )热部署的升级流程。原创 2024-09-02 20:28:56 · 695 阅读 · 0 评论 -
Nginx: 进程结构和信号量管理
通过 kill 命令,可以给某个进程PID发送很多的信号量,通常,直接使用 kill pid 的时候。可见, kill -9 可以发送一个 SIGKILL 的信号,它不管当前进程处于什么状态,无条件终止。在Linux 操作系统中,对于进程管理是通过信号量来进行管理的, 比如说我们通常使用的q命令。2.1 使用信号量管理 master 和 worker。以上可以看到,现在大概是有 64 种信号量。2 )使用信号量管理 Nginx。1 )Linux 的信号量管理。常用信号量, 参数含义。原创 2024-09-02 11:30:20 · 1101 阅读 · 0 评论 -
Nginx: TCP建立连接的优化和启用Fast Open功能
因为 /proc 下都是临时文件,改了临时文件会立即生效,但是重启后就变回去了。以上都是默认值,看起来值比较小,如果要更改,不能直接更改上述配置文件。现在,我们可以去修改 nginx 的 backlog 队列。1.3 2011年 Google 提出的TFO的优化。1.1 最初RFC中实现 TCP 协议的状态如下。1 ) TCP 的 Fast Open。2 )实际环境开启 Fast Open。通过这个命令,查看系统内核参数 $1.2 RFC 优化的过程。我们现在可以修改 $检查配置是否生效,$原创 2024-09-01 21:59:08 · 1386 阅读 · 0 评论 -
Nginx: 性能优化之提升CPU效率以及TCP的三次握手和四次挥手
们从这种宏观上来说,多个进程,它是一个并行执行的,但从CPU的角度,同一时刻只能干一件事。整个CPU就是在循环往复的去执行每一个进程,在操作系统中,所有进程都会被分配一些时间片。比如,Kafka 进程被调度到CPU上执行,执行完了以后,会拿下来,到底它去执行多久。如果说,这个进程的优先级是比较高的话,它相应的得到的CPU的执行的时间片就会多一些。对CPU调度的时候,它在某一个时刻,它只能有一个会被调度到CPU上。有一个大的原则,比如,某一个进程的优先级是最高的。原创 2024-09-01 17:31:26 · 1482 阅读 · 0 评论 -
Nginx: 使用KeepAlived配置实现虚IP在多服务器节点漂移及Nginx高可用原理
2台 linux , 一主一备 * 节点1:192.168.184.30 CentOS 7 Master * 节点2:192.168.184.40 CentOS 7 Backup * VIP 192.168.184.50- 安装 KeepAlived, $ `yum install keepalived` * 注意,安装好yum源,base 源就有这个软件 * 两台都执行安装- 关闭selinux 和 防火墙 * $ `setenforce原创 2024-08-31 22:39:56 · 1690 阅读 · 1 评论 -
Nginx: 高可用和与虚拟路由冗余协议VRRP原理以及KeepAlived软件架构
假定是这样一个最传统的一个CS模式的一个客户服务器模式 * 这里有用户和一台服务器 * 服务器可能是mysql, 也可能是webserver, 或其他服务器- 想实现服务可用的一个三要素 * 1.1 ) server 需要公网的ip地址以及申请一个域名 * 1.2 ) 需要服务软件和相关端口 * 1.3 ) 存在对应的数据,如: * webserver需要css, html, js 等 * sqlserver需要库和表原创 2024-08-31 13:43:23 · 1005 阅读 · 0 评论 -
Nginx: 搭建HTTPS服务器(私有CA服务器的搭建,Nginx公私钥生成,证书签发和配置)的过程
现在我们正式的去配置一个私有的CA服务器真正的CA服务器在实际的生产中可能并不会用在对公网的一些HTTPS服务中,通常会去买一些真正的SSL证书包括阿里云或者是腾讯云等等,上面都有一些免费的SSL证书这些证书也是向所谓的一个CA服务商来购买的为了更好理解整个HTTPS证书的一个申请签发的一个流程自己去搭建这样一个CA服务器利用Nginx的服务器上去生成一个证书并且让CA服务器让Nginx生成的这样一个证书正式生效。原创 2024-08-30 18:37:42 · 2205 阅读 · 0 评论 -
Nginx: https解决安全问题
2 )报文的完整性无法验证,可能被黑客篡改。1 )数据使用明文传输,可能被黑客窃取。2.4 CA 证书申请过程中做的事情。1 )http协议存在的问题。1.4 https 加密原理。2.3 数字签名的合法性验证。2 ) https 原理。1.3 关于非对称加密算法。2.2 数字签名的校验流程。2.1 数字签名的生成。1.2 关于对称加密。原创 2024-08-30 12:54:14 · 1059 阅读 · 0 评论 -
Nginx: 第三方清除模块ngx_cache_purge及其相关配置
3.2 Nginx 配置示例 192.168.184.240。3.1 应用服务器, 模拟 192.168.184.20。1 ) ngx_cache_purge 模块功能。2 )ngx_cache_purge 指令。原创 2024-08-30 10:32:47 · 376 阅读 · 0 评论 -
Nginx: 缓存, 不缓存特定内容和缓存失效降低上游压力策略及其配置示例
在负载均衡的过程中,有一个比较重要的概念,就是缓存利用缓存可以很好协调Nginx在客户端和上游服务器之间的速度不匹配的矛盾从而很好的解决整体系统的响应速度如果用户需要通过Nginx获取某一些内容的时候,发起一个request请求这个请求到了Nginx之后,静态内容会直接返回,动态内容会转发至应用程序服务器后端应用服务器再处理完这样一个请求器,会封装响应包体,再返回给我们的NginxNginx 收到 response 包体之后,再一并的把这些内容返回给我们的用户。原创 2024-08-29 17:36:56 · 1474 阅读 · 0 评论 -
Nginx: 负载均衡场景下上游服务器异常时的容错机制
Post请求,它就是一个非幂等的 http 请求方法,因为可能会在后端服务器上创建一些资源。所谓幂等的请求, 是指这个请求发出去之后,无论请求多少次,得到的结果通常是一致的。默认值: proxy_next_upstream error timeout;非幂等请求,可能对服务器造成不可预见的一些错误,在某些场景下是很危险的。2 )proxy_next_upstream_timeout 指令。3 )proxy_next_upstream_tries 指令。1 )proxy_next_upstream 指令。原创 2024-08-28 19:39:24 · 1584 阅读 · 0 评论 -
Nginx: 负载均衡基础配置, 加权轮序, hash算法, ip_hash算法, least_conn算法
其实, ip_hash 指令是为了解决Nginx和后端应用程序服务器的一个 session 保持的。2.1 应用服务器 (使用 nginx 模拟),比如当前ip地址为:192.168.184.20。对于固定的客户端来说,使用ip hash这样一种负载运用算法来进行 session 保持。对应到服务器端的时候,会有 session 信息, 对于不同的用户来说是不同的。它其实对出的一个应用场景,也是对于这种 session 保持的解决而生的。1 ) ip_hash 指令。语法:ip_hash。原创 2024-08-28 17:39:03 · 1930 阅读 · 0 评论 -
Nginx: 代理场景下Nginx更改发往上游应用服务器的请求
5.1 上游应用服务器,这里简化,使用 nginx 来模拟, 假设应用服务器ip: 192.168.184.20。现在,某一个客户端请求中间这个 Nginx代理服务器,假设客户端配置好了本地 hosts。3.2 proxy_pass_request_header 指令。1 ) 一个HTTP请求过来以后,它包含了哪些信息。2.2 proxy_http_version 指令。3.1 proxy_set_header 指令。2 )对请求行信息的更改方法。3 )对请求头的修改指令。4 )对请求包体修改指令。原创 2024-08-28 05:45:00 · 1380 阅读 · 0 评论 -
Nginx: 代理场景下Nginx接收用户请求包体的处理
4.3 请求体大于缓存缓存大小 (这里不能大于 client_max_body_size 的大小)5 ) client_body_in_single_buffer 指令。7 )client_body_in_file_only 指令。6 ) client_body_temp_path 指令。1 )proxy_request_bufering 指令。2 )client_max_body_size 指令。8 )client_body_timeout 指令。配置成 off 的要求。配置成 off 的好处。原创 2024-08-27 19:18:48 · 888 阅读 · 0 评论 -
Nginx: 反向代理之upstream模块以及完整配置反向代理示例
也就是说在一个时刻内,Nginx到上游服务器的空闲的长连接是16个,所谓空闲的长连接就是这个长连接TCP连接接建立着,但是上面没有请求去发送,但这就是空闲的长连接。所以说我们的keepalive后面跟一个connection的这样一个参数,就定义了Nginx和后端的上游服务器可以开启的长连接的一个空闲长连接的最大数量。启用长连接的情形下的话,有很多的并发请求都调度给某一台上游服务器,上游服务器处理完之后,结果都返回给Nginx了。2 )配置示例 proxy.conf。示例:keepalive 16;原创 2024-08-27 12:33:17 · 1010 阅读 · 0 评论 -
Nginx: 配置项之autoIndex模块与Nginx变量
通过Nginx变量,有助于去定制我们的log文件,可以对各种用户行为,甚至是Nginx的运行的一些性能参数,进行一个更好的一个分析。比如说,Nginx的版本号, 以及Nginx 启动了多个worker子进程的时候,请求被哪个worker子进程处理。这个时候 Nginx 内部也会产生一些相关的变量,这部分变量,叫做Nginx 的内部变量。从一个用户的一个请求处理流程来看,被Nginx处理完成之后,返回给我们的用户。除去上述四个阶段之外,Nginx自身的运行过程中,它也会产生一些相关的变量。原创 2024-08-25 20:29:57 · 921 阅读 · 0 评论 -
Nginx: 配置项之rewrite模块中的return指令和rewrite指令以及if指令
示例:rewrite /images/(.*.jpg)$ /pic/$1;将images下的jpg文件重写到pic目录下的jpg文件。配置示例 rewrite_if.conf,假设我们的Nginx 主机的ip为: 192.168.184.240。用于对某一些条件进行判断,比如说可以根据某一些变量的值的不同,对 url 进行一个不同的处理。上下文: server 、location、if。上下文:server、location、if。rewrite 指令中的 flag。condition 用法。原创 2024-08-25 05:52:07 · 1092 阅读 · 0 评论 -
Nginx: 配置项之access模块、auth_basic模块、auth_request模块
curl curl http://192.168.184.20:8080/auth.html -I 返回。curl http://192.168.184.20:8080/auth.html 返回结果如下。3 )生成密码文件工具。原创 2024-08-23 20:41:02 · 1114 阅读 · 0 评论 -
Nginx: 配置项之http模块connection和request的用法以及limit_conn和limit_req模块
比如说我们在这儿,至于去引用的limitIQ我们都知道我们的IQ定义status,我们上面是返回的这个五零三,我们在这以示区别,我们让它返回五零四,好吧,继续我们的limitREQ还有什么呀?ok那接下来我们给大家演示一下啊,呃我们还接着上一节的我们这个配置文件,我们直接给大家做展示啊,户下的con零x,还是我们先在这儿去定义我们这个root是吧?第一次没关系,第二次肯定哎,我们在这没有记录进去,我们的这个啊嗯不对,这个时候我们在来给它啊,因为我们在这没定义我们的日志啊,我们再来引用一个日志吧。原创 2024-08-23 19:45:00 · 1882 阅读 · 0 评论 -
Nginx: 配置项之root和alias的区别, 深入理解location, 以及stub_status模块的用法
访问:http://www.nginx-test.com/match_all/match.html 显示 match page。访问:http://www.nginx-test.com/match_all 显示 match_all page。访问:http://www.nginx-test.com/bbs 显示 bbs page。访问:http://www.nginx-test.com/1.jpg 显示 1.jpg。3 ) 理解 location 中的 URL 结尾的反斜线。2 )指令中匹配规则的优先级。原创 2024-08-22 22:32:34 · 923 阅读 · 0 评论 -
Nginx: 配置项之server_name指令用法梳理
基于域名的虚拟主机,它是通过什么来进行区分不同的虚拟主机呢?可以有多个server模块通过指定不同的server_name来区分不同的那个虚拟主机可以理解成不同的一个网站域名。原创 2024-08-22 15:55:39 · 641 阅读 · 0 评论 -
Nginx: 配置项之events段核心参数用法梳理
好的,嗯,这就是我们还没启动我们的NDX啊,我来启动一下我们的NGX啊OBDNGX实定下的NGX好,这个时候我们就启动了啊,这个时候我们的NGX就启动了。那好,那我们在我们的ppt中啊,把这个对应的给删掉啊,要不发现不是用在这个events当中了,而是用在我们的man端中了,好删掉。那接下来最后我们比如说我们就打开这样一个啊,比如说motx代表,我们设置成啊啊,它它主要的一些配置,就这几个啊,这五个是吧?哦,那我们就这讲的有问题啊,接下来改一下,我们需要把这个捞翻啊,三个啊放到这里。原创 2024-08-22 12:30:42 · 965 阅读 · 0 评论 -
Nginx: 配置项之main段核心参数用法梳理
我们了解下配置文件中的一个全局段,有哪些配置参数,包括后面的 events 字段,有哪些配置参数这里面也有一些核心参数, 对于我们Nginx运行的性能也是有很重要的帮助我们现在首先关注整个 main 段的一个核心参数用法所谓 main 段,是指在 nginx.conf 配置文件中,除了有 events 字段,还有 http 段在此两个段之外的一些段,我们都把它称为 main 段,也就是我们的核心段, 如下前面的这些配置信息,并没有包含在某一个段中,它直接写在我们整个配置文件中。原创 2024-08-21 21:15:33 · 925 阅读 · 0 评论 -
Nginx: 体系化知识点梳理
我们需要对 Nginx 要有体系化的一个认识对 Nginx 自身来说,它是作为一个中间件的,只要是中间件,它必然会涉及到前端和后端对于 Nginx 来说,它是需要协调整个前后端的一个组件那对于中间件来,我们要理解整个外部系统前端和后端是如何进行交互的我们一个用户请求过来以后,是如何被前端处理到后端以后,如何被我们的应用程序处理处理完之后再返回给我们用户的还有就是 Nginx 的部署和调优第一个层次是使用 Nginx 进行一个简单的配置去把它用起来第二个层次是需要深度优化。原创 2024-08-20 20:45:07 · 1180 阅读 · 0 评论 -
K8s: Helm搭建mysql集群(2)
应用中心,mysql 文档参考https://artifacthub.io/packages/helm/bitnami/mysql1 )helm 搭建 mysqlA. 无存储,重启数据丢失添加源 $ helm repo add mysql-repo https://charts.bitnami.com/bitnami安装 $ helm install my-mysql mysql-repo/mysql --set primary.persistence.enabled=false,auth.r原创 2024-05-02 15:43:25 · 593 阅读 · 0 评论 -
K8s: Helm搭建mongodb集群(1)
mongdb 部署前 需要创建 pvc, pv 和 sc,如果在云上会自动创建helm 应用中心: https://artifacthub.io1 )Helm 安装 mongodbA. 无本地存储配置,重启数据消失在 https://artifacthub.io/packages/helm/bitnami/mongodb?modal=install 这个界面弹出的窗口中$ helm repo add bitnami https://charts.bitnami.com/bitnami这样就添原创 2024-05-02 14:35:02 · 2017 阅读 · 1 评论 -
K8s: Kubernetes扩展之自定义资源
自定义资源是 K8s 的扩展,有时候需要对K8s进行一个扩展在默认的K8s集群里面提供的资源对象是一个有限的集合比如常用的pod, deployment, service,这些都是K8s原生的资源之所以它资源,是因为它能够对外提供API接口变成一个resource进行访问通过 kubectl 创建,也能把这些资源创建出来当有限的K8s的资源,不能满足你的需求的情况下就需要通过 Custom Resource 来实现自定义的这个资源。原创 2024-05-01 01:00:00 · 1805 阅读 · 3 评论 -
K8s: Prometheus结合Grafana监控应用数据及相关配置 (三)
启动起来之后,可以留意一下2 )一键部署部署这个文件之前,可以先清理之前在这个命名空间,重新进行部署现在编写这个文件 $ 注意,下面两个 job_name 下定义的 target 地址 换成自己的$ 编写 grafana 配置部署 Grafana $ 上面两套都部署完成后,验证状态访问 Grafana UI界面 ip:30982 登录 添加 DataSource之后进行 Grafana Dashboard 的配置,现在换一个监控的模板数据面板会有延时,也可自行刷新查看,每个指标都是配置原创 2024-04-30 23:30:00 · 1622 阅读 · 0 评论 -
K8s: Prometheus结合Grafana监控应用数据及相关配置 (二)
重新打包和部署之后重新打包 $ mvn package登录到私有镜像中心 $ docker login 10.211.10.2:8081构建镜像 $ docker build -t 10.211.10.2:8081/docker/k8sblog:1.4 .给镜像添加tag $ docker tag 10.211.10.2:8081/docker/k8sblog:1.4 10.211.10.2:8081/docker/k8sblog:latest 同步 latest推送到私有镜像中心 $ dock原创 2024-04-30 19:15:00 · 296 阅读 · 0 评论 -
K8s: Prometheus结合Grafana监控应用数据及相关配置 (一)
Prometheus 核心是在于持续数据的存储,然后提供了数据的查询语言 promQL但是它的显示和图表做的并不好所以这个时候需要结合业界最专业的做报表展示的Grafana这个组件它的应用是非常广泛我们尝试部署 Grafana 来配置日志的一个显示创建Grafana Dashboard模版相关的configmap这个模板可以定制一个 Dashboard也就是说 Grafana 里面的 Dashboard 是通过一个 json 串来定义的这样就非常灵活,可以细致看下里面的一些字段原创 2024-04-30 12:45:00 · 318 阅读 · 0 评论 -
K8s: Prometheus 监控主机 和 K8s 集群
搭建 Prometheus创建对应 ServiceAccount达成角色访问的目的,避免所有人都能看到创建配置相关的 configmap定义了一堆的任务,收集各个层面的监控数据创建告警规则相关的configmap比如内存大于 75% 就加入一些标签并且可以出发一些事件创建Prometheus的缺省用户及密码缺省用户/密码为admin/admin: echo “YWRtaW4=” | base64 -D原创 2024-04-29 20:45:00 · 881 阅读 · 0 评论 -
K8s: Prometheus 服务结构以及基础抓取数据服务部署
我们要实现集群的系统时间同步,这个是非常重要,在每个node节点不管是master还是work node上都要执行。在这种情况下就需要部署一些能够采集到监控指标的一些服务,我们使用 Node Exporter 来进行集群的任务。集群都是有很多数据,要实现监控,需要知道监控的指标: 比如,磁盘CPU内存,还有网络的一些异常情况。注意,我们用的是时序数据库,时间一定要同步,不同步时间,数据会有问题。原创 2024-04-29 19:15:00 · 1303 阅读 · 0 评论 -
K8s: Helm包管理工具的应用以及项目分环境部署
1 ) 概述k8s中官方包管理工具, 官网:用 Yaml 管理多个应用同时部署不需要在不同的yaml中写两遍,执行两遍解决一键部署的问题,联合部署实现了部署的版本管理可以实现版本回滚应用和配置分离2 )安装下载解压移动到bin目录which helm验证命令helm ls列出。原创 2024-04-28 23:53:21 · 1142 阅读 · 1 评论 -
K8s: 应用项目部署运维环境搭建
注意,在低版本的一些 mysql 中的配置会有不同,而且可能需要加上如下,不会意外退出。我们在 node1 这个 work 节点部署,准备 app-mysql.yaml。这里的密码加密的生成,这里上面的可以进行参考,之前博文也有其他方式,请持续关注。注意,这个配置有很多的优化点,比如:集群副本,存储,密码加密等。可见,mysql数据库环境准备好了,这里只做了单实例的。这个就是在私有镜像中心设置的拉取镜像时的密码。现在,我们可以创建一个新的数据库了。2 )现在进入正题,应用程序的配置。1 ) 关于空间隔离。原创 2024-04-28 19:45:00 · 1063 阅读 · 0 评论 -
K8s: 公有镜像中心和私有镜像中心的搭建
如果 hub.docker.com 在国内无法访问,可以在阿里云上创建 docker hub。在 hub.docker.com 上注册账号 (国内一般访问不了,原因不多说)找到 Create Repository 按钮就行仓库的创建。这样就在官方创建了一个仓库,比如地址为: xx/y-y。现在,我将本地的docker镜像,推送到这个仓库里。1 )在 官方docker镜像中心推送。2 )在阿里云docker镜像中心搭建。配置国内 Docker 镜像源 $为官方docker镜像中心加速。配置之后,需要重启 $原创 2024-04-26 22:37:54 · 1276 阅读 · 0 评论 -
K8s: 最佳实践经验之谈
2 )关于“Naked”Pods 与 ReplicaSet,Deployment 和 Jobs。当 Kubernetes 启动容器时,它提供指向启动容器时正在运行的所有服务的环境变量。Deployment 描述了对象的期望状态,并且如果对该规范的更改被成功应用。在创建相应的后端工作负载(Deployment 或 ReplicaSet)例如,如果存在名为 foo 的服务,则所有容器将在其初始环境中获得以下变量。定义并使用标签来识别应用程序 或 Deployment 的 语义属性。6 )使用 kubectl。原创 2024-04-25 20:15:00 · 596 阅读 · 0 评论 -
K8s: ConfigMap 与 Secret 的配置管理
要使用 Secret,Pod 需要引用 Secret,Pod 可以用三种方式之一来使用 Secret。基于环境变量方式使用ConfigMap示例。2 )通过文件来创建秘钥。Secret 管理密钥。1 )直接通过命令创建。原创 2024-04-25 12:45:00 · 744 阅读 · 0 评论 -
K8s: PersistantVolume, PersistentVolumeClaim, Storage Class的相关概念与应用
注意,上面provisioner配置里的名称要和provisioner配置文件中的环境变量PROVISION_NAME保持一致。3 )PV, PVC,StorageClass 的协作流程。注意,要先由pv, 之后才能创建 pvc。原创 2024-04-25 07:15:00 · 1996 阅读 · 0 评论