自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 收藏
  • 关注

原创 集群调度,调度器

Sheduler 是作为单独的程序运行的,启动之后会一直坚挺 API Server,获取 PodSpec.NodeName 为空的 pod(也就是说pod的配置文件中没有指定该pod要运行的node), 对每个 pod 都会创建一个 binding,表明该 pod 应该放到哪个节点上。Sheduler 是作为单独的程序运行的,启动之后会一直监听 APIServer,获取 spec.nodeName 为空的 pod,对每个 pod 都会创建一个 binding,表明该 pod 应该放到哪个节点上。

2023-11-01 17:51:47 151

原创 Pod基础概念

运行于各自容器内的进程无法直接完成网络通信,这是由于容器间的隔离机制导致,k8s中的Pod资源抽象正是解决此类问题,Pod对象是一组容器的集合,这些容器共享Network、UTS及IPC命令空间,因此具有相同的域名、主机名和网络接口,并可通过IPC直接通信。Pod资源中针对各容器提供网络命令空间等共享机制的是底层基础容器pause,基础容器(也可称为父容器)pause就是为了管理Pod容器间的共享操作,这个父容器需要能够准确地知道如何去创建共享运行环境的容器,还能管理这些容器的生命周期。

2023-11-01 16:38:33 104

原创 Pod 进阶

PS:在买硬盘的时候,操作系统报的数量要比产品标出或商家号称的小一些,主要原因是标出的是以 MB、GB为单位的,1GB 就是1,000,000,000Byte,而操作系统是以2进制为处理单位的,因此检查硬盘容量时是以MiB、GiB为单位,1GiB=2^30=1,073,741,824,相比较而言,1GiB要比1GB多出1,073,741,824-1,000,000,000=73,741,824Byte,所以检测实际结果要比标出的少一些。最常见的可设定资源是 CPU 和内存大小,以及其他类型的资源。

2023-11-01 16:37:50 113

原创 //Pod yaml文件详解

restartPolicy: [Always | Never | OnFailure] #Pod的重启策略,Always表示一旦不管以何种方式终止运行,kubelet都将重启,OnFailure表示只有Pod以非0退出码退出才重启,Nerver表示不再重启该Pod。livenessProbe: #对Pod内个容器健康检查的设置,当探测无响应几次后将自动重启该容器,检查方法有exec、httpGet和tcpSocket,对一个容器只需设置其中一种方法即可。

2023-11-01 16:37:13 102

原创 kubectl详解

●NodePort:在每个Node上打开一个端口以供外部访问,Kubernetes将会在每个Node上打开一个端口并且每个Node的端口都是一样的,通过 NodeIp:NodePort 的方式Kubernetes集群外部的程序可以访问Service。//为deployment的nginx创建service,并通过Service的80端口转发至容器的80端口上,Service的名称为nginx-service,类型为NodePort。-l app=nginx :仅显示包含app标签,且值为nginx的资源。

2023-11-01 15:27:17 69

原创 高可用Kubeadm

------------------- 所有节点安装kubeadm,kubelet和kubectl -------------------------------------------------- 环境准备 -------------------------------------------------- 部署 master 节点 ---------------------------------------- 所有节点安装docker --------------------

2023-11-01 15:25:51 53

原创 二进制搭建

目前比较常用的CNI网络组件是flannel和calico,flannel的功能比较简单,不具备复杂的网络策略配置能力,calico是比较出色的网络管理插件,但具备复杂网络配置能力的同时,往往意味着本身的配置比较复杂,所以相对而言,比较小而简单的集群使用flannel,考虑到日后扩容,未来网络可能需要加入更多设备,配置更多网络策略,则使用calico更好。将 Pod 的 IP 和所在的 Node 的 IP 关联起来,通过这个关联让不同 Node 上 Pod 之间直接通过内网 IP 地址通信。

2023-11-01 15:24:46 134

原创 Kubernetes 概述

从 Master 节点获取自己节点上 Pod 的期望状态(比如运行什么容器、运行的副本数量、网络或者存储如何配置等), 直接跟容器引擎交互实现容器的生命周期管理,如果自己节点上 Pod 的状态与期望状态不一致,则调用对应的容器平台接口(即 docker 的接口)达到这个状态。由一系列控制器组成,通过 API Server 监控整个集群的状态,并确保集群处于预期的工作状态,比如当某个 Node 意外宕机时,Controller Manager 会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。

2023-11-01 15:22:45 32

原创 playbooks

#Ansible在执行完某个任务之后并不会立即去执行对应的handler,而是在当前play中所有普通任务都执行完后再去执行handler,这样的好处是可以多次触发notify,但最后只执行一次对应的handler,从而避免多次重启。handlers: #handlers中定义的就是任务,此处handlers中的任务使用的是service模块。tasks: #定义任务列表,任务列表中的各任务按次序逐个在hosts中指定的主机上执行。playbooks 本身由以下各部分组成。

2023-11-01 15:21:58 43

原创 Ansible

Ansible其中一个比较鲜明的特性是Agentless,即无Agent的存在,它就像普通命令一样,并非C/S软件,也只需在某个作为控制节点的主机上安装一次Ansible即可,通常它基于ssh连接来控制远程主机,远程主机上不需要安装Ansible或其它额外的服务。Ansible是基于模块工作的,它只是提供了一种运行框架,它本身没有完成任务的能力,真正执行操作的是Ansible的模块, 比如copy模块用于拷贝文件到远程主机上,service模块用于管理服务的启动、停止、重启等。

2023-11-01 15:20:58 263

原创 Harbor 简介

总共分为7个容器运行,通过在docker-compose.yml所在目录中执行 docker-compose ps 命令来查看, 名称分别为:nginx、harbor-jobservice、harbor-ui、harbor-db、harbor-adminserver、registry、harbor-log。8、Harbor和docker registry的关系:Harbor实质上是对docker registry做了封装,扩展了自己的业务模板。

2023-10-13 09:15:12 277

原创 Docker-compose

一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡,比如 Consul。------------------------------------ Docker-compose 简介 ------------------------------------------------------------------------ compose 部署 ------------------------------------

2023-10-13 09:13:58 133

原创 docker镜像

注意, 这种情况下,最好显示的以/结尾,以避免混淆。但是当编写一个新的Dockerfile文件来基于A镜像构建一个镜像 ( 比如为B镜像)时,这时构造A镜像的Dockerfile文件中的ONBUILD指令就生效了,在构建B镜像的过程中,首先会执行ONBUILD指令指定的指令,然后才会执行其它指令。这里我们就能用到Dockerfile多阶段构建,它可以把前面多个阶段生成的文件拷贝到下一个阶段使用,并且不引入之前用到的环境,这极大地解耦了我们的Dockerfile文件,而且最终可以得到一个极小的完整镜像。

2023-10-09 11:00:23 123

原创 Docker 基本管理

Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。(3)Docker将 veth pair 设备的一端放在新创建的容器中,并命名为 eth0(容器的网卡),另一端放在主机中, 以 * 这样类似的名字命名,并将这个网络设备加入到 docker0 网桥中。

2023-10-09 08:55:22 109

原创 Docker 基本操作

docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g)。====namespace的六项隔离============================================-----------------Docker 概述---------------------------

2023-10-09 08:52:31 155

原创 zabbix

zabbix server:zabbix 服务端守护进程,其中 zabbix_agent、zabbix_get、zabbix_sender、zabbix_proxy 的数据最终都提交给 zabbix server;zabbix 监控部署在系统中,包含常见的五个程序: zabbix_server、zabbix_agent、zabbix_proxy、zabbix_get、zabbix_sender 等。zabbix 由 2 部分构成,zabbix server 与可选组件 zabbix agent。

2023-09-22 08:43:44 219

原创 Zookeeper集群 + Kafka集群

Kafka 是最初由 Linkedin 公司开发,是一个分布式、支持分区的(partition)、多副本的(replicar 协调的分布式消息中间件系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景,比如基于 hadoop 的批处理系统、低延迟的实时系统、Spark/Flink 流式处理引擎,nginx 访问日志,消息服务等等,用 scala 语言编写,此时服务器1票数0票,服务器2票数2票,没有半数以上结果,选举无法完成,服务器1,2状态保持LOOKING。

2023-09-18 08:58:41 176

原创 ELK 企业级日志分析系统

集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用 grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署 Logstash。

2023-09-15 09:06:15 201

原创 GFS 分布式文件系统

File1 和 File2 存放在 Server1,而 File3 存放在 Server2,文件都是随机存储,一个文件(如 File1)要么在 Server1 上,要么在 Server2 上,不能分块同时存放在 Server1和 Server2 上。类似 RAID0,文件被分成数据块并以轮询的方式分布到多个 Brick Server 上,文件存储以数据块为单位,支持大文件存储, 文件越大,读取效率越高,但是不具备冗余性。创建卷时,存储服务器的数量如果等于条带或复制数,那么创建的是条带卷或者复制卷;

2023-09-15 09:04:55 81

原创 rsync 远程同步

Rsync 是 Linux 系统下的数据镜像备份工具,使用快速增量备份工具 Remote Sync 可以远程同步, 可以在不同主机之间进行同步,可实现全量备份与增量备份,保持链接和权限,且采用优化的同步算法, 传输前执行压缩,因此非常适合用于架构集中式备份或异地备份等应用。rsync(Remote Sync,远程同步) 是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。

2023-09-12 08:47:46 93

原创 redis群集有三种模式(主从同步/复制、哨兵模式、Cluster)

●负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;(4)Master机器收到Slave端机器的连接后,将其完整的数据文件发送给Slave端机器,如果Mater同时收到多个Slave发来的同步请求,则Master会在后台启动一个进程以保存数据文件,然后将其发送给所有的Slave端机器,确保所有的Slave端机器都正常。数据的复制是单向的,只能由主节点到从节点。

2023-09-12 08:45:21 242

原创 NoSQL之 Redis配置与优化

要支持更多并发量,SQL数据库是纵向扩展,也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了。例如,在读写分离的MySQL数据库环境中,可以把经常访问的数据存储在非关系型数据库中,提升访问速度。---------------------- Redis简介 ----------------------------------------注:在 Redis 6.0 中新增加的多线程也只是针对处理网络请求过程采用了多线性,而数据的读写命令,仍然是单线程处理的。

2023-09-08 10:19:24 461

原创 MySQL的MHA

当 master 出现故障时,它可以自动将最新数据的 slave 提升为新的 mas然后将所有其他的 slave 重新指向新的 master。●使用半同步复制,可以大大降低数据丢失的风险,如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性。●自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据不丢失。MHA能在故障切换的过程中最大程度上保证数据的一致性,以达到真正意义上的高可用。

2023-09-06 09:00:53 600

原创 mysql读写分离和主从复制

(3)同时Master节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至Slave节点本地的中继日志(Relay log)中,Slave节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,即解析成 sql 语句逐一执行,使得其数据和 Master节点的保持一致,最后I/O线程和SQL线程将进入睡眠状态,等待下一次被唤醒。Mycat:是一款流行的基于java语言编写的数据库中间件,是一个实现了Mysql协议的服务器,其核心功能是分库分表。由陈思儒开发,作者曾就职于阿里巴巴。

2023-09-06 08:58:12 82

原创 MySQL高阶语句

通过 SQL 查询出来的结果,还可以对其进行分组,使用 GROUP BY 语句来实现 ,GROUP BY 通常都是结合聚合函数一起使用的,常用的聚合函数包括:计数(COUNT)、 求和(SUM)、求平均数(AVG)、最大值(MAX)、最小值(MIN),GROUP BY 分组的时候可以按一个或多个字段对结果进行分组处理。使用 SELECT 语句可以将需要的数据从 MySQL 数据库中查询出来,如果对查询的结果进行排序,可以使用 ORDER BY 语句来对语句实现排序,并最终将排序后的结果返回给用户。

2023-09-01 11:50:35 425

原创 数据库备份

只有那些在上次完全备份或者增量备份后被修改的文件才会被备份以上次完整备份或上次增量备份的时间为时间点,仅备份期间内的数据变化,因而备份的数据量小,占用空间小,备份速度快。每次对数据进行完整备份,即对整个数据库、数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,是差异备份与增量备份的基础完全备份的备份与恢复操作都非常简单方便,但是数据存在大量的重复并且会占用大量的磁盘空间,备份的时间也很长。备份那些自从上次完全备份之后被修改过的所有文件,备份的时间节点是从上次完整备份起,备份数据量会越来越大。

2023-09-01 11:38:33 130

原创 索引,事务,存储引擎

动态表包含可变字段(varchar),记录不是固定长度的,这样存储的优点是占用空间较少,但是频繁的更新、删除记录会产生碎片,需要定期执行 OPTIMIZE TABLE 语句或 myisamchk -r 命令来改善性能,并且出现故障的时候恢复相对比较困难。可以是单列上创建的索引,也可以是在多列上创建的索引。MySQL中的数据用各种不同的技术存储在文件中,每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力,这些不同的技术以及配套的功能在MySQL中称为存储引擎。

2023-08-29 08:56:59 77

原创 数据库管理

SQL语言分类:DDL:数据定义语言,用于创建数据库对象,如库、表、索引等DML:数据操纵语言,用于对表中的数据进行管理DQL:数据查询语言,用于从数据表中查找符合条件的数据记录DCL:数据控制语言,用于设置或者更改数据库用户或角色权限1.DDL:create和drop用例:CREATE DATABASE 数据库名;CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);#NOT NULL 不允许为空值

2023-08-24 10:10:23 716

原创 数据库的基本理念

Char如果存入数据的实际长度比指定长度要小,会补空格至指定长度,如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错。非关系型数据库: 存储海量数据,给与”大数据“进行分析,筛选出有价值的。char:固定长度的字符类型 用于定义字符类型数据。关系型数据库: 适用于对关系很明确的数据建立模型、定义、存储数据。① 关系型数据库: 存储的往往是字符、字符串、数值、布尔值等。② 非关系型数据库:存储的往往是图片、视频、语音等。varchar:可变长度的字符类型。

2023-08-24 09:54:47 77

原创 LVS及负载均衡群集的搭建

群集是为解决某个特定问题将多台计算机组合起来形成的单个系统,由多台主机构成,但对外只表现为一个整体,相当于一台大型计算机提供服务。互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器已经无法满足负载均衡及高可用的要求,所有产生了LVS群集技术提供稳定高效服务。2.性能扩展方式纵向扩展——对服务器的CPU、内存、硬盘等硬件进行升级或者扩容来实现,但存在性能上限会有瓶颈,成本昂贵,收效比不高等问题。横向扩展——通过增加服务器主机数量来应该高并发的场景。

2023-08-17 09:49:54 843

原创 tomcat

webapps)------>从contex,就是index.jsp里面的内容。继承:一个类,可以继承另一个类父类子类子类可以重用父类的代码,而且还在不修改代码的情况下,进行扩展。父子关系,工作方式也是从上到下。web----------->http(s)-------访问页面---jsp容器----》html页面当中的java代码翻译-------》执行-------------》展示结果。lib: tomcat运行库的jar包,一般不动,除非连接第三方-----redis,数据库logs:日志文件。

2023-08-14 09:10:25 988

原创 nginx的负载均衡

客户端---->http请求-->七层代理(代理服务器上)---->代理服务器,转发http请求到内部的一组服务器(web集群)----->客户端不知道请求的代理服务器还是内部的服务器,而且通过代理服务器隐藏了内部服务器的ip,实际上访问的是代理服务器,请求到代理,代理转发给web服务器。第一次请求之后,会有本地缓存,而且因为hash算法的原因,请求的后台web服务器不会发生变化,可以提噶访问速度,访问的是缓存。"url_hash,请求的地址发生变化,请求的服务器也可能会发生变化。会和加权轮询配合使用。

2023-08-14 08:54:55 2027

原创 location

location = 到 location ^ - 到location ~ * 到location/test/到location /rewrite使用NGINX的全局变量或者是自己设置的变量,结合正则表达式和标志位实现url的变量。last:负责匹配完成后,继续向下匹配,只要有last,就继续匹配。不停止rewrite,就会进入死循环铭智能十次,然后报错,报错的状态码是500。[0-9 a-z A-Z]:匹配0-9,匹配a-z,匹配A-Z。=:精确匹配,完全匹配,错一个字都匹配不上,必须完全一致。

2023-08-10 16:39:15 125

原创 nginx的优化和防盗链

连接超时:http1.1会有一个keepalive模式,告诉web服务器再处理一个请求之后继续保持当前连接的tcp的状态为打开状态,如果当前连接有新的请求,服务端就会立刻利用这个没有关闭的连接,继续给客户端响应,不需要再建立一个新的连接。大量的短连接频繁创建和销毁,或者大并发连接时(负载均衡),time_wait连接会积累,服务器会出现大量的time_wait状态的连接,在这种情况下需要优化处理。而且在连接的生命周期中,time_wait占用的资源是非常小的,而且对服务器整体性能的影响也很有限制。

2023-08-08 18:51:16 184

原创 Nginx

8.日志功能,可以详细的记录请求的信息,包括访问时间,请求路径,ip地址,响应状态,有故障排查(系统控制的日志,记录在/var/log/messages,业务日志:access.log error.log,access记录谁访问我了。3.处理动态内容,nginx处理动态内容很差,php node.js java python,nginx可以代理请求,发送到后端的动态服务处理,动态服务器处理完之后,nginx来把动态请求,响应给客户端。error日志:也记录了谁访问了我,但是记录的是访问失败的记录。

2023-08-04 14:14:57 97

原创 Web基础与HTTP协议

html:超文本标记语言,是一种规范的,标准的语言格式。html是以个文本文件,所有能够生成txt文件的工具,都可以进行编辑,修改之后的文件后缀名:.html或者.htm。dns客户端的配置文件,设置dns服务器的ip的域名。http是一种无状态的协议,本身不会对发送过的请求和响应的通信进行持久化处理。网站:是由多个页面组成的,网页的结合体。cookie:记录用户的登录状态,跟踪访问网站的习惯,识别用户身份,保存用户信息。4.响应打到客户端,解析的过程(浏览器),用户查看,使用,访问。

2023-08-01 18:38:54 446

原创 iptables 软件防火墙

external:外部区域,只允许ssh和dhcp6这两个预定义服务的流量可以传入,其余都是拒绝的。palic:公共区,默认区域,只允许ssh和dhcpv6这两个预定义服务的流量可以传入,其余都是拒绝。home:家庭区域,只允许ssh和dhcpv6这两个预定义服务的流量可以传入,其余都是拒绝。work:工作区域,只允许ssh和dhcpv6这两个预定义服务的流量可以传入,其余都是拒绝。trasted:信任区域,允许所有的流量传入。block:限制区域,所有的流量都拒绝。iptables是静态防火墙。

2023-08-01 14:54:30 34

原创 iptables的备份和还原

请求——>发起方——>用户——>客户端——>请求——>httpd——>三次握手响应——>httpd——>页面——>java——>数据库——>用户(客户端)——>四次挥手。自定义链的规则被默认链使用,要先在默认链当中删除,再把自定义链当中的规则删除,最后才能把自定义链删除。iptable - N 名字 创建自定义链,没有指定表名,默认在filter表中添加一个自定义链。iptables -I INPUT -P icmp -j test1(名字)创建在自定义链当中的规则,需要添加到默认链当中,才能够使用。

2023-08-01 14:42:41 157

原创 shell编程和免交互

exp_continue,可以在expect判断之后,继续匹配expect捕获的其他内容,类似于脚本中的continue,表示允许继续向下执行指令 exp_continue 结束语句不能直接expect eof,否则会报错。expect :捕获,捕获上一次执行的命令中,是否包含指定的字符串,如果有立即返回,否则等待超时时间,自动退出,默认超时十秒。表示开启一个会话,启动一个进程,并且跟踪后续的交互信息。send向进程发送字符串,用于模拟用户的输入,该命令不能回车,一般要在后面加一个回车键:\r或者\n。

2023-07-22 13:51:33 51

原创 awk(三剑客最后的一个)

1、如果getline左右没有重定向符号(<,>)或者没有管道符(|)时候,awk会先读第一行,但是如果你加了getline,跳过第一行,读取第二行。内置变量 $ n 要加 $ ,其他内置变量不用加 $,更不能用引号,也不能用括号,否则会被当成字符串来处理。}的条件,或者是命令操作,中间的{…awk -F跟着分隔符 ‘条件’ 文件 $1 $2 $3都是指的列。awk的分隔符:他的默认分隔符是空格或者tab键。awk也是按行进行操作的,对行操作完之后,可以根据指定命令来对行取列。

2023-07-21 15:08:27 55

空空如也

空空如也

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

TA关注的人

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