自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Docker(八)---Docker安全

所有容器资源限制的相关信息都在/sys/fs/cgroup/memory/docker此目录下,如果我们建立容器时不设置,那么docker内容器的目录内的文件都继承于/sys/fs/cgroup/memory/docker内的其他文件。此权限的意思是全开,即root用户可以做几乎任何事情,近乎超户。但是此种方式权力又给的太大了不安全,我们可以给白名单。之前我们没有办法做到完全隔离是因为/proc中的资源,容器和宿主机之间是共享的,所以没有做隔离。可以看到运行容器的Pid就在tasks中。......

2022-07-25 15:04:49 642

原创 Docker(七)--Docker数据卷管理及插件

在实际使用过程中,我们需要把容器和数据进行隔离,因为容器在使用过程中可能随时要进行销毁,但是数据要保留下来,所以我们要做数据的持久化。

2022-07-25 14:55:31 814

原创 Docker(六)--Docker网络--单机与跨主机(macvlan)容器通信

容器之间除了使用ip通信外,还可以使用容器名称通信。docker1.10开始,内嵌了一个DNSserver。dns解析功能必须在自定义网络中使用。启动容器时使用--name参数指定容器名称。

2022-07-25 14:37:45 1156 1

原创 Docker(五)--Docker网络--源生网络和定义网络

自定义网络模式,docker提供了三种自定义网络驱动。

2022-07-25 14:17:44 405

原创 Linux防火墙之“四链五表”

防火墙是位于内外网之间的一组软硬件部件的组合,主要目的是保护内外网的数据流通的安全,当外网访问内网的时候发送的数据包必须经过内网的防火墙检验是否符合规则。能够指定火墙策略的两个工具包:iptables和firewalldLinux的防火墙体系主要工作在网络层,针对TCP/IP数据包实时过滤和限制,属于典型的包过滤防火墙或称作网络层防火墙(iptables)Firewalld:只用于管理Linux防火墙的命令程序,属于“用...

2022-07-16 22:01:29 1831

原创 路由器和交换机的区别和联系

根据的网络体系划分,自底向上,路由器,而我们常说的交换机(目前有更加高级的,四层交换机,甚至还有七层交换机)

2022-07-16 20:46:18 114

原创 CI/CD持续集成与持续交付(五)钉钉报警、ansible自动化构建部署

接下来我们在上文流水线任务的基础上,利用jenkins中的插件,做一个钉钉报警系统。无论部署上线是否成功,都在钉钉群里报警@某人。首先我们需要在钉钉上创建一个群,这个群是用来接收我们的告警信息的: 注意:此webhook 一定要保留。在jenkins系统设置中添加钉钉机器人:保存后再进来就有机器人的UUID了:我们点击测试后: 我们再进入devops项目中进行配置: jenkins钉钉官方文档:在 pipeline 中使用 | 钉钉机器人插件 在之前的pipline代码之后添加:保存后立即构建: 构建成功

2022-07-14 13:23:14 794

原创 持续集成与持续交付(CI/CD)(四)用户管理、分布式构建、创建流水线任务

书接上文:我们在之前将拉取镜像和运行的任务分离了出来,部署在了server5上,接下来我们再把构建镜像的任务分离出来部署在server6上,让jenkins主机主机只负责触发并分发任务。我们再启一个虚拟机server6,将jenkins主机上的构建任务再分出来:首先在server6上安装jdk: 保存。接下来把 built-in-Node 即本机master的号改为0:然后空闲进程就只有server6了。 现在server6做构建主机需要安装docker-ce:安装完成之后别忘了 docker.conf

2022-07-14 12:53:38 297

原创 CI/CD持续集成与持续交付(三)自动化构建docker镜像

我们接下来要做的是在jenkins端写好代码,用Dockerfile文件直接构建镜像。此时整合的逻辑大致为:用户把代码通过git提交push到gitlab上,然后gitlab触发jenkins的webhook,通知jenkins做构建。即整体流程为 :在server3 gitlab服务器上编写dockerfile,然后push到gitlab仓库,再经过gitlab触发jenkins,jenkins主机从server1 harbor仓库中拉取镜像,从而实现自动构建docker镜像,并将构建的镜像推送到harb

2022-07-14 11:27:02 663

原创 CI/CD持续集成与持续交付(二)jenkins环境搭建、项目部署

首先我们先明确主机id及其功能:此时我们再开一个虚拟机用来安装jenkins: jenkins官网下载:Jenkins 的安装和设置国内镜像站:Index of /jenkins/redhat/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirrorjenkins要求java8的jdk:​​​ 可以看到jenkins的端口为8080。注:若是提示java版本原理一直启动不了,可以尝试手动安装更高版本的java包,但必须是java8的;或者用旧一点版本的jenkins。​​ 使

2022-07-14 10:43:34 393

原创 CI/CD持续集成与持续交付(一)git简介、gitlab仓库搭建及其简单使用

首先我们会在操作系统上新建一个目录,将原始版本标记为V1,当有新版本时,复制一份改动一下标记为V2。再有新版本时复制一份改动一下标记为V3。第一种管理方式太过繁琐,最好有一个集中化的版本控制系统集中进行管理,由服务器端帮我们进行管理版本。但是此种方式下,只要server端一挂掉版本控制就失效了。业界内使用最广的版本控制系统,此种方式的好处是,它不仅有server端,每个软件开发人员也能在本地操作系统上维护一套软件版本,这样的话,当server端出现故障时,不会影响本地的开发。当server端维护好了的时候,

2022-07-14 10:14:43 766

原创 DNS和CDN的原理及关系

如果网站没有设置CDN缓存,那么用户访问该网站的过程大概分为以下几个步骤:1.用户在浏览器中输入要访问的域名;2.浏览器向本地DNS查询域名的IP地址;3.本地DNS向根服务器发起请求;4.根服务器向本地服务器返回域名所属的顶级服务器;5.顶级服务器将域名所属的权威服务器返回给本地DNS;6.本地服务器向权威服务器发起请求,权威服务器将域名对应IP地址返回给本地服务器;7.本地服务器将IP地址返回给用户,完成整个解析过程。CDN的全称是Content Delivery Network,即内容分发网络,它能够

2022-07-11 21:36:45 911

原创 http状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。 常用的标红:...

2022-07-11 21:00:51 94

原创 docker(四)搭建harbor企业级仓库

虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境的Registry也是非常必要的。 所以Harbor孕育而生,Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。Harbor 的所有组件都在 Docker 中部署,所以 Harbor 可使用 Docker Compose 快速部署。注意: 由于 Harbor 是基于 Docker Regis

2022-07-10 10:26:08 606

原创 docker仓库(三)仓库的搭建及官方私有仓库的加密认证

在生产环境中,有些环境下可能是不被允许连接外网的,所以此时我们就需要搭建一个本地的私有仓库。我们也可以在docker官网创建一个账号,可以把我们本地的镜像上传到官网:Docker Hub 创建账户后,在本机登陆刚刚创建的账号: 用户的登录信息将会保存到用户主目录下 .docker 中,这样就可以保证后面我们不需要频繁的login: 在网页端创建仓库:在本机 先更改tag和仓库信息,然后再push上传: 可以看到在我们刚刚创建的仓库里面已经有我们上传的镜像了:我们也可以登出docker:首先进入aliyun

2022-07-10 10:01:07 528

原创 docker(二)镜像构建、Dockerfile及镜像优化

镜像通过分层,如果本地已经有了,不管这一层属于哪个镜像,因为每一层都有独立的标识(都是唯一的),只要docker判断有这一层,那它就不会进行重复的拉取。包括在上传仓库的时候也是一样的,仓库内存储时也是按照层来存储的,如果远程仓库有这一层了,就不需要重复上传了,节省了带宽。 docker使用 Copy-on-Write 的机制(可写容器层),当我们想保存一个数据的时候,由于镜像是只读的,当我们创建容器时,是在镜像层的上面创建一个可写容器层,所有对容器的修改都会放置在可写容器层上,只要这个容器不被释放,这个数据

2022-07-10 09:44:25 669

原创 docker(一)简介、环境搭建

Docker是一个开源的应用容器引擎,是一个轻量级容器技术,是一个应用打包、分发、部署的工具,基于Google公司推出的Go 语言实现,遵从Apache 2.0 协议。docker​​​​​​​支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;运行中的这个镜像称为容器。容器是软件的可执行单元,它采用通用方式封装了应用程序代码及其库和依赖项,因此可以随时随地运行容器(无论是在桌面、传统 IT 还是云端)。为此,容器利用操作系统 (OS) 虚拟化形式,这里会

2022-07-10 09:11:51 337

原创 十大排序算法(一)

比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 二、选择排序1、算法步骤首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。重复第二步,直到所有元素均排序完毕。三、插入排序1、算法步骤

2022-07-09 22:29:50 113

原创 session和cookie详解

工作原理图: 工作原理图:相同点:两者都是一种记录用户状态的机制,都是为了减少客户端和服务器端之间的传输的冗余数据,提高两者之间的数据传输速率。不同点:web开发发展至今,cookie和session的使用已经出现了一些非常成熟的方案。在如今的市场或者企业里,一般有两种存储方式:...

2022-07-08 20:11:06 2771

原创 zabbix监控(三)主动回传、proxy代理、告警平台监测

之前的配置都是server端主动采集agent端的数据,此种方式agent端越多zabbix主机的压力就越大,接下来我们让agent端主动将数据发给agent端:(主动被动完全取决于agent端link的模板)在网页前端,将server2上的模板取消连接并清理: 重新选择模板并更新,此模板是agent端主动将信息回传回来:可以看到监控项已变更: 可以看到此时已经主动获得了数据:此时agent主动回传数据已经完成。上面虽然提高了sever端的效率,但是server端就一个,他没有得到水平扩容的能力:(可以查看

2022-07-07 09:03:18 1339

原创 zabbix监控(二)自定义模板、mysql监控、JMX监控

由于zabbix模板中的监控项是固定的,有时我们想要一个自定义的监控模板来实现我们的特殊需求,我们可以通过下面的方式实现。以监控nginx中某些数据为例:首先我们在server2上安装nginx:编译,添加监控模块: 在 nginx.conf 中添加监控模块: 此时nginx安装完成。若是我们没有监控模板,我们zabbix端口来添加监控项:这里是zabbix的include路径,我们只要在这里添加一个 *.conf 的文件就会被include进来。通过下面这种方式可以取出本机的并发连接数: 查看相关配置文件

2022-07-07 08:58:52 747

原创 zabbix监控(一)环境搭建、主机发现、api使用

Zabbix 是一个企业级分布式开源监控解决方案。Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。Zabbix 通过 C/S 模式采集数据,通过 B/S 模式在 web 端展示和配置。先准备三个纯净的centos7主机环境。下

2022-07-07 08:42:34 1056

原创 python实现二叉树

首先我们先介绍数的概念。结点:使用树结构存储的每一个数据元素都被称为“结点”。例如,图 1(A)中,数据元素 A 就是一个结点;父结点(双亲结点)、子结点和兄弟结点:对于图 1(A)中的结点 A、B、C、D 来说,A 是 B、C、D 结点的父结点(也称为“双亲结点”),而 B、C、D 都是 A 结点的子结点(也称“孩子结点”)。对于 B、C、D 来说,它们都有相同的父结点,所以它们互为兄弟结点。树根结点(简称“根结点”):每一个非空树都有且只有一个被称为根的结点。图 1(A)中,结点A就是整棵树的根结点。叶

2022-07-04 20:36:06 5449

原创 redis之redis集群、持久化至mysql、与mysql数据同步

在做redis集群之前,我们先将之前的mysql和redis实例全部停掉。在redis源码包里有一个脚本可以自动帮我们创建集群:可以看README查看怎么创建集群: start 开启六个实例:create 创建集群,三个master,三个slave: -c 指定集群模式,-p指定端口: --cluster 操作集群,可以查看无中心化集群: 我们先连接30001,设置一个key值,此值保存在5798这个哈希槽上,但这个哈希槽在节点B上,即30002端口上,所以我们再查看值就自动跳到了30002端口上,这就是

2022-07-03 15:01:45 870

原创 redis之redis基础、环境搭建、主从切换

redis下载:Download | Redis可以查看 README.md 来获取编译的帮助,我们先进行编译 make USE_SYSTEMD=yes(在编译时可能会遇到依赖,根据提示解决即可):make成功:make install:可以使用源码包里的脚本来创建实例及其配置文件: 进入脚本文件修改,将此处的判断注释掉:成功建立redis实例。此时要是再建立一个redis实例,只需更改端口号即可:当我们想删除这个实例时: 默认情况下redis只能监听本机的回环接口,外部无法访问,若是想外部访问,就要

2022-07-03 14:52:24 1274

原创 lnmp架构之mysql路由器、MHA高可用(三)

书接上文,我们接着来看主从复制的优化。在应用层到mysql集群之间加一个mysql路由器。mysql路由器是通过绑定不同端口来实现不一样的读写分离的策略。 再添加一台虚拟机,此主机用来做读写分离层:首先下载mysql-router的rpm包 ,下载地址:MySQL :: Download MySQL Router (Archived Versions) 编辑mysql-router配置文件:在其他任意一台mysql主机上授权用户: 在集群外的一台主机上远程访问server4的只读7001端口:此时查

2022-06-30 09:14:21 240

原创 lnmp架构之mysql主从复制(二)

书接上文,我们接着来看主从复制。作延迟复制时,第一是要判断延迟到达什么某种程度时,业务会受影响,第二是要考虑延迟复制时我们有没有后悔的机会,即如果我们延迟复制的延迟时间设为30min,如果我们在master端做了误操作,我们还有30min的时间来撤回误操作而不影响后面的slave端。在slave端定义延迟(在设置前要先将SQL线程停掉,设置完成后再开启),默认单位为s:测试: 我们在server2上设置了延迟30s,我们在master上插入数据:server3: server2: 可以看到我们在master

2022-06-29 11:02:51 102

原创 lnmp架构之mysql的主从复制(一)

在上文操作的基础上,首先我们需要再在一个新的虚拟机上安装设置mysql,将server1上编译好的包拷贝到server2上:将刚刚更改的两个配置文件复制到server2上去:刚才server1的操作再在server2上再做一遍: 此时server2上的mysql初始化完成,可以正常使用:此过程可完全按照mysql官网文档来:MySQL :: MySQL 5.7 Reference Manual :: 16 Replication 在server1上:编辑 /etc/my.cnf :重启mysqld使之生效:

2022-06-28 09:56:25 595

原创 lnmp架构之mysql部署

解压源码包:编译mysql用的是cmake(mysql8需要cmake3.5以上):我们用的是mysql5.7的,所以我们直接安装源生的cmake即可: 编译还需要安装gcc,gcc-c++: 编译安装mysql还得靠官方文档啊: MySQL :: MySQL 5.7 Reference Manual :: 2.9.3 MySQL Layout for Source Installation编译选项参数:MySQL :: MySQL 5.7 Reference Manual :: 2.9.7 MySQL S

2022-06-26 19:46:53 777

原创 lnmp架构之nginx+tomcat+memcached

为了实现tomcat集群之间的session同步:利用memcached实现(MSM工具)。memcached存储session,并把多个tomcat的session集中管理,前端在利用nginx负载均衡和动静态资源分离,在兼顾系统水平扩展的同时又能保证较高的性能。即通过MSM工具把Tomcat的Session序列化后保存到Memcached里面,从而实现Session共享.此时我们关闭上文中openresty里的nginx,更改为源生的nginx: 将后台的两个server端的apache服务关闭。

2022-06-25 09:30:25 219

原创 lnmp架构之使用openresty构建memc+srcache

OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。...

2022-06-25 08:53:13 141

原创 lnmp架构入门之php+memcache

进入上文编译时设置的路径,将此路径写到用户主目录里去: 进入php/etc,copy一份模板 ,就改一个pid其他不动: 再进入etc/php-fpm.d,copy一份模板,此文件保持默认参数即可:进入php源码路径,copy一份生产环境配置文件,此文件只需要更改默认时区为亚洲上海: 进入php源码路径,copy一份系统文件,把保护关闭(更改完毕之后记得 systemctl daemon-reload): 此时可以启动服务: 在nginx.conf 中设置php发布页面(设置完记得 nginx -s re

2022-06-23 22:53:29 353

原创 lnmp架构之php基础

在编译时我们会遇到大量的报错,安装对应的缺失的包-devel即可,找不到的包就去阿里云上找。编译成功!接下来 make && make install: 完成编译三部曲!

2022-06-22 18:03:11 298

原创 Nginx参数设置优化(二)

防止域名恶意解析到服务器IP:如果别人将其他域名绑定到你服务器的公网IP上,就会大量的耗你网站的流量访问IP时,默认由第一个虚拟主机进行处理,此时设置锁定某个域名,不能直接访问IP,访问IP返回一个500的错误代码。也可以采用重定向rewrite的方法: 此时我们可以看到已经被重定向到了http://www.westos.org上,我们再将80端口重定向443: 可以看到下图http的80端口已经被重定向到了https的443端口: 在现实中我们可能有这样的需求:将www.westos.

2022-06-22 15:11:28 264

原创 一文轻松搞懂三握四挥!

首先我们要知道的是TCP的数据传输过程分为三个阶段:建立连接、数据传输、连接释放。而三次握手、四次挥手主要解释的是建立连接和连接释放的过程。其次,TCP通信都是基于C/S架构,即服务端--客户端模式, 下面我们正式开始解析:此时,基础知识已经介绍完毕,接下来分析三次握手的具体过程:下面我们正式开始分析四次挥手的过程:.........

2022-06-19 10:25:48 1048

原创 Nginx参数设置优化(一)

我们查看系统进程发现,此时使用nginx用户是nobody:所以我们在系统中添加用户nginx,用nginx身份启动nginx程序: 用nginx -s reload 重新加载参数发现,用户已经改变:1、手动创建nginx.service服务文件。并将其放入 /lib/systemd/system 文件夹中。返回到根目录下,我们发现/lib 被软连接到了/usr/lib,所以我们将nginx.service 创建到/usr/lib/systemd/system下: 添加完成后,使用systemctl da

2022-06-18 18:53:07 290

原创 七层负载均衡Nginx搭建及相关参数设置

上文中我们理解并完成了LVS的四层结构,但是LVS还有许多不足:FULLNET的session表使用双向hash,使用五元组作为hash key,即 源地址、源端口、协议、目标端口、目标地址。在nginx官网下载nginx包(nginx: download),下载完成后解压: 然后进入nginx目录进行编译,可以使用以下操作获取帮助、编译等:在编译时可能会遇到以下错误:C语言编译器没装:解决:yum install -y gcc 再编译问题2:PCRE库没找到:解决: yum install -

2022-06-17 16:58:54 306

原创 OSI七层网络模型和TCP/IP四层网络模型的异同

OSI 模型(Open System Interconnection model)是一个由国际标准化组织􏰁提出的概念模型,试图提供一个使各种不同的计算机和网络在世界范围内实现互联的标准框架。它将计算机网络体系结构划分为七层,每层都可以􏰁供抽象良好的接口。从上到下可分为七层:每一层都完成特定的功能,并为上一层提供服务,并使用下层所提供的服务。4、应用层(Application):为用户提供所需要的各种服务3、传输层(Transport):为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的..

2022-06-16 22:02:17 3534

原创 LVS负载均衡之高可用集群的搭建

书接上文,在lvs调度器及RS配置完成之后又发现了新问题:

2022-06-16 18:56:13 367

原创 LVS负载均衡之DR轮询模式部署

准备三台虚拟机,本人所使用虚拟机版本为rhel-server-7.6-x86_64: 注意:此时hashsize为4096,如果在高并发的环境中可以重新编译内核调大此数值,防止丢包 由于映射的端口为标准的80服务,所以另外两台RS上只需要安装httpd服务即可。 设置开机自启。 创建apache的发布目录用来做测试: 此时调度正常:在前文中我们介绍了LVS—DR模式下会将IP地址和MAC地址缓存在ARP中,如下所示:注:此MAC地址为后端RS 254.1的MAC地址 此时,再删除arp缓存,再进

2022-06-16 11:36:00 283

空空如也

空空如也

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

TA关注的人

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