自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tinychen

DO OR DIE

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

原创 CoreDNS篇9-kubernetes插件

CoreDNS作为现阶段k8s的默认DNS服务以及服务发现的重要一环,其内置的kubernetes插件可谓是举足轻重。本文主要讲解介绍CoreDNS内置的核心插件`kubernetes`的使用方式和适用场景。

2022-11-13 16:33:17 1007 2

原创 CoreDNS篇8-健康检查

本文主要讲解介绍CoreDNS内置的两个健康检查插件`health`和`ready`的使用方式和适用场景。

2022-11-13 16:32:16 870

原创 k8s系列09-服务发现与流量暴露

本文主要介绍了K8S集群中的服务发现和流量暴露机制,包括K8S中的workload类型、service类型、DNS解析原理以及四层服务暴露和七层服务暴露的规则。

2022-11-13 16:31:24 609

原创 k8s系列08-负载均衡器之PureLB

本文主要在k8s原生集群上部署v0.6.1版本的PureLB作为k8s的LoadBalancer,主要涉及PureLB的Layer2模式和ECMP模式两种部署方案。由于PureLB的ECMP支持多种路由协议,这里选用的是在k8s中常见的BGP进行配置。由于BGP的相关原理和配置比较复杂,这里仅涉及简单的BGP配置。文中使用的k8s集群是在CentOS7系统上基于docker和cilium组件部署v1.23.6版本,此前写的一些关于k8s基础知识和集群搭建的一些方案,有需要的同学可以看一下。1、工作原理

2022-05-24 23:24:15 1110

原创 k8s系列07-负载均衡器之OpenELB

本文主要在k8s原生集群上部署v0.4.4版本的OpenELB作为k8s的LoadBalancer,主要涉及OpenELB的Layer2模式和BGP模式两种部署方案。由于BGP的相关原理和配置比较复杂,这里仅涉及简单的BGP配置。文中使用的k8s集群是在CentOS7系统上基于docker和calico组件部署v1.23.6版本,此前写的一些关于k8s基础知识和集群搭建的一些方案,有需要的同学可以看一下。1、工作原理1.1 简介OpenELB 是一个开源的云原生负载均衡器实现,可以在基于裸金属服务器

2022-05-24 23:22:47 1487 1

原创 k8s系列06-负载均衡器之MatelLB

本文主要在k8s原生集群上部署v0.12.1版本的MetalLB作为k8s的LoadBalancer,主要涉及MetalLB的Layer2模式和BGP模式两种部署方案。由于BGP的相关原理和配置比较复杂,这里仅涉及简单的BGP配置。文中使用的k8s集群是在CentOS7系统上基于docker和flannel组件部署v1.23.6版本,此前写的一些关于k8s基础知识和集群搭建的一些方案,有需要的同学可以看一下。1、工作原理1.1 简介在开始之前,我们需要了解一下MetalLB的工作原理。Metal

2022-05-24 23:22:15 1010

原创 k8s系列05-使用containerd和cilium部署kubeproxy-free的k8s集群

本文主要在centos7系统上基于containerd和stable版本(1.11.4)的cilium组件部署v1.24.0版本的k8s原生集群,由于集群主要用于自己平时学习和测试使用,加上资源有限,暂不涉及高可用部署。此外,由于cilium已经实现了对kube-proxy的一整套替代方案,这里部署k8s集群的时候会使用cilium的kubeproxy-free方案。此前写的一些关于k8s基础知识和集群搭建的一些方案,有需要的同学可以看一下。1、准备工作1.1 集群信息机器均为8C8G的虚拟机,硬

2022-05-24 23:18:22 1240 1

原创 k8s系列04-kubeadm部署cilium网络的k8s集群

本文主要在centos7系统上基于docker和cilium组件部署v1.23.6版本的k8s原生集群,由于集群主要用于自己平时学习和测试使用,加上资源有限,暂不涉及高可用部署。此前写的一些关于k8s基础知识和集群搭建的一些方案,有需要的同学可以看一下。1、准备工作1.1 cilium-集群节点信息机器均为8C8G的虚拟机,硬盘为100G。IPHostname10.31.188.1tiny-cilium-master-188-1.k8s.tcinternal10.31.

2022-05-24 23:16:09 1756

原创 k8s系列03-kubeadm部署calico网络的k8s集群

本文主要在centos7系统上基于docker和calico组件部署v1.23.6版本的k8s原生集群,由于集群主要用于自己平时学习和测试使用,加上资源有限,暂不涉及高可用部署。此前写的一些关于k8s基础知识和集群搭建的一些方案,有需要的同学可以看一下。1、准备工作1.1 calico-集群节点信息机器均为8C8G的虚拟机,硬盘为100G。IPHostname10.31.88.1tiny-calico-master-88-1.k8s.tcinternal10.31.88

2022-05-24 23:14:42 3584

原创 k8s系列02-kubeadm部署flannel网络的k8s集群

本文主要在centos7系统上基于docker和flannel组件部署v1.23.6版本的k8s原生集群,由于集群主要用于自己平时学习和测试使用,加上资源有限,暂不涉及高可用部署。此前写的一些关于k8s基础知识和集群搭建的一些方案,有需要的同学可以看一下。1、准备工作1.1 flannel-集群节点信息机器均为8C8G的虚拟机,硬盘为100G。IPHostname10.31.8.1tiny-flannel-master-8-1.k8s.tcinternal10.31.8

2022-05-24 23:13:59 2488

原创 CoreDNS篇7-性能压测

本文主要用于介绍如何编译安装queryperf来对DNS服务器进行压测,以及CoreDNS常见的几种配置下的压测性能表现。1、queryperf1.1 编译安装queryperf是bind9出品的一款测试dns服务器性能的工具,目前在9.12.4版本的bind源码中还存在,再往后的新版本就没看到有queryperf了。[root@coredns1 home]# wget https://ftp.isc.org/isc/bind9/9.12.4/bind-9.12.4.tar.gz[root@co

2022-03-04 00:11:07 2415

原创 CoreDNS篇6-递归服务器

title: CoreDNS篇6-递归服务器date: 2022-02-20 23:00:00tags:dnsnetworkcorednscategories: linuxindex_img: https://resource.tinychen.com/202202202355342.jpgbanner_img: https://resource.tinychen.com/202202202355169.jpg本文主要用于介绍CoreDNS实现递归服务器的几种方式以及在生产环境中遇.

2022-03-04 00:10:23 1903

原创 CoreDNS篇5-日志处理

本文主要用于介绍CoreDNS用来记录日志的几种方式以及在生产环境中遇到的一些问题和解决方案。1、log插件coredns的日志输出并不如nginx那么完善(并不能在配置文件中指定输出的文件目录,但是可以指定日志的格式),默认情况下不论是log插件还是error插件都会把所有的相关日志输出到程序的standard output中。使用systemd来管理coredns之后,默认情况下基本就是由rsyslog和systemd-journald这两个服务来管理日志。1.1 log插件配置前面的文章里我

2022-03-04 00:08:52 3389

原创 CoreDNS篇4-编译安装unbound

本文主要介绍coredns的unbound插件进行编译安装的过程及常用的配置方法。coredns官方的unbound文档unbound (coredns.io),以及unbound插件的github地址coredns/unbound: CoreDNS plugin that performs recursive queries using libunbound (github.com),此前已经介绍过coredns编译其他插件的方法,有需要的同学可以先回顾一下。此外,unbound插件虽然是cored

2022-03-01 20:46:16 626

原创 CoreDNS篇3-接入prometheus监控

本文主要对coredns的prometheus监控进行介绍,以及对grafana中配置coredns的dashboard进行分享。0、背景Prometheus插件作为coredns的Plugins,默认情况下是内置在coredns中,如果是自己编译安装的版本,需要注意在编译安装的时候的plugin.cfg文件中添加了prometheus:metrics,这样才能确保编译成功。# 首先我们检查一下运行的版本[root@tiny-server coredns]# ./coredns -plugins

2022-03-01 20:45:48 759

原创 CoreDNS篇2-编译安装External Plugins

本文主要对coredns的源码进行编译安装,以及在编译安装的过程中加入一些External Plugins的方法。1、编译安装coredns1.1 golang环境准备官方的github页面上提供了编译安装的相关指引,需要的可以点击这里跳转。First, make sure your golang version is 1.12 or higher as go mod support is needed. See here for go mod details.由于coredns是使用gol

2022-03-01 20:44:55 519

原创 CoreDNS篇1-简介和安装

本文主要对coredns的原理和特性进行介绍,同时会对其二进制的安装方法进行尝试。1、coredns简介coredns是一个用go语言编写的开源的DNS服务,它的官网可以点击这里,github页面可以点击这里。需要额外注意的是,coredns是首批加入CNCF组织的云原生开源项目,并且作为已经在CNCF毕业的项目,coredns还是目前kubernetes中默认的dns服务。同时,由于coredns可以集成插件,它还能够实现服务发现的功能。coredns和其他的诸如bind、knot、powerdn

2022-03-01 20:44:47 2020

原创 使用nginx-quic支持HTTP/3

本文主要介绍使用nginx-quic和boringssl项目来对服务器进行升级支持HTTP/3协议。1、背景介绍nginx官方从1.19版本开始,新建立了一个分支,专门用来对QUIC进行支持,官网的链接点这里。注意该项目还处于早期的alpha版本,非常不建议用于生产环境。The code is at an early alpha level of quality and should not be used in production.nginx-quic的安装包可以在下面这里找到,由于还处于

2022-03-01 20:44:35 4254 1

原创 nginx篇12-限速三剑客之limit_rate

本文主要是对nginx官方limit_rate相关指令的用法解释和一些个人理解,limit_rate主要用于限制用户和服务器之间传输的字节数,最常用的场景可能就是下载/上传限速,在如今用户网速普遍大幅提升的情况下,对于一些文件传输、视频流媒体传输等服务还是有着一定的应用场景的。和我们前面提过的limit_req模块和limit_conn模块不一样的是,limit_rate并没有单独的一个模块,而是在ngx_http_core_module中,同时它的相关指令也比较少,只有limit_rate和limit

2022-03-01 20:44:20 2851

原创 nginx篇11-限速三剑客之limit_conn

本文主要是对nginx官方limit_conn相关模块的配置用法和一些个人理解,limit_conn主要用于限制用户的连接数,在如今多线程并发请求大量普及的情况下,对于一些特殊的场景还是有着一定的用处的。1、背景目前来说在nginx上面我们常见的三种限速操作分别是:限制请求数(request)、限制连接数(connection)、限制响应速度(rate),对应在nginx的模块相关指令分别是limit_req、limit_conn和limit_rate三个系列。limit_conn模块和limit_r

2022-03-01 20:44:05 3578

原创 nginx篇10-限速三剑客之limit_req

本文主要是对nginx官方limit_req相关模块的限速原理的解释和一些个人理解,主要参考的文章为Rate Limiting with NGINX and NGINX Plus和nginx的ngx_http_limit_req_module的详细说明。目前来说在nginx上面我们常见的三种限速操作分别是:限制请求数(request)、限制连接数(connection)、限制响应速度(rate),对应在nginx的模块相关指令分别是limit_req、limit_conn和limit_rate三个系列。

2022-03-01 20:43:50 5914 1

原创 nginx篇09-location中的if指令是魔鬼吧

本文主要是对nginx官方的文章If is Evil... when used in location context的翻译和理解。1、简介在location块中的if指令的有点问题,在某些情况下,if指令并不会按照我们预期的那般工作,而是有可能往完全不同的方向发展甚至可能会引起错误。因此最好的方法就是尽可能的不要使用if指令。在location块的if指令内100%安全的指令有:returnrewrite …… last除了上面的两个指令之外的任何操作都有可能导致不可预测的效果甚至可能是

2022-03-01 20:43:40 2723

原创 nginx篇08-添加客户端证书认证

本文主要介绍如何使用给nginx服务添加客户端证书认证从而实现双向加密。对于一般的https网站来说,实际上https所使用的证书是属于单向验证,即客户端单向验证服务器的安全性,而服务器端是没有对客户端的身份进行验证的。关于https的原理,可以查看这篇文章:《SSL/TLS、对称加密和非对称加密和TLSv1.3》如果自己部署了一些安全性较高的网站不希望被其他人随意访问,就可以尝试部署https的双向认证,对客户端也添加证书认证。本文将会使用openssl自签证书来完成最简单的一个https双向认证。

2022-03-01 20:43:29 3245 1

原创 nginx篇07-启用HTTP2和TLSv1.3

本文主要介绍如何使用编译的方式升级openssl库和nginx用于支持HTTP2和TLSv1.3并且介绍了一些简单的提高nginx安全性的配置。1、编译安装openssl考虑到Linux系统中有许多组件都需要使用openssl库,而现在默认使用的openssl库绝大多数都没到达能够支持TLS1.3的openssl1.1.1版本以上,因此个人建议不要直接修改系统已有的默认openssl库而是另外使用一个新目录来编译安装新版本的openssl。具体的支持信息可以查看openssl官网的TLSv1.3部分

2022-02-28 19:34:44 2332

原创 Nginx篇06-Sendfile指令及其原理

nginx中http模块中的sendfile指令及其原理。1、sendfile()介绍nginx的http模块中有一个sendfile指令,默认是开启状态,官网的文档对其解释是:Enables or disables the use of sendfile().Starting from nginx 0.8.12 and FreeBSD 5.2.1, aio can be used to pre-load data for sendfile():location /video/ {

2022-02-28 19:34:36 3592

原创 Nginx篇05-http长连接和keeplive

nginx中http模块使用http长连接的相关配置(主要是keepalive指令)和http长连接的原理解释。1、http长连接1.1 预备知识连接管理是一个 HTTP 的关键话题:打开和保持连接在很大程度上影响着网站和 Web 应用程序的性能。在 HTTP/1.x 里有多种模型:短连接, 长连接, 和 HTTP 流水线。在解释这三种模型之前,我们需要先明确一些前提知识:HTTP是属于应用层(七层)的协议,同时它的传输层(四层)使用的是TCP协议,那么也就是说,HTTP的长连接和短连接,其本质

2022-02-28 19:34:20 523

原创 Nginx篇04-map模块

title: Nginx篇04-map模块date: 2020-03-20 10:00:00tags:nginxwebhttpcategories: frontendindex_img: https://resource.tinychen.com/20210110180420s.jpgbanner_img: https://resource.tinychen.com/20210110180420.jpgnginx的map模块配置语法。map模块是由ngx_http_map_mo.

2022-02-28 19:33:56 5000

原创 Nginx篇03-负载均衡简单配置和算法原理

nginx的负载均衡配置,包括http、tcp和udp负载均衡,以及Round robin、Least connections、Least time(Nginx Plus专属)、Generic hash、Random、IP hash(HTTP模块专属)的原理分析。1、http负载均衡我们先来看一小段配置文件upstream backend { server 10.0.0.1:80 weight=1; server nginx.example.com:80 weight=2; }

2022-02-28 19:33:41 1491

原创 Nginx篇02-upstream模块中的加权轮询负载均衡

nginx的upstream模块中的加权轮询负载均衡的算法原理。我们先来看一个简单的负载均衡:upstream backend { server 10.0.0.1:80; #服务器a server 10.0.0.2:80; #服务器b}这是一个简单的负载均衡,将接受到的访问按照默认的均分原则分配给后台的两台服务器,这时候两台server的访问量应该是1:1。如果我们在后面加上权重值,例如upstream backend { server 10.0.0

2022-02-28 19:33:29 368

原创 Nginx篇01-基本安装配置和静态页面设置

nginx的编译安装、添加模块、yum安装、简单配置、默认目录作用和静态页面配置。0、编译安装nginx0.1 准备工作这里我们使用nginx的mainline版本的1.17.9来进行编译安装,nginx各版本的官网下载地址:http://nginx.org/en/download.html首先我们下载并解压nginx源码wget http://nginx.org/download/nginx-1.17.9.tar.gztar -zxvf nginx-1.17.9.tar.gz在编译安装之

2022-02-28 19:33:10 2581

原创 DNS原理篇01-DNS原理介绍

本文主要包括DNS的简单介绍,DNS查询的原理介绍和DNS负载均衡应用的简单介绍。1、DNS简介1.1 什么是DNS首先我们来了解DNS是什么。下面引用维基百科的解释:域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。我们知道计算机网络中的通信实际上是需要通过IP来进

2022-02-28 19:32:44 1252

原创 PowerDNS篇1-简介和安装

本文主要介绍PowerDNS的主要特性和初始化安装的配置方法,侧重点是对复杂程度相对较高PowerDNS Authoritative Server进行介绍,同时会夹杂部分PowerDNS-Recursor的初始化安装和配置。1、PowerDNS简介PowerDNS(PDNS)成立于20世纪90年代末,是开源DNS软件、服务和支持的主要供应商,它们提供的权威认证DNS服务器和递归认证DNS服务器都是100%开源的软件,同时也和红帽等开源方案提供商一样提供了付费的技术支持版本。同时官方表示为了避免和软件使

2022-02-28 19:32:13 2021 1

原创 bind篇01-Bind+Keepalived安装高可用DNS集群

本文主要对bind进行安装配置,并且搭配keepalived实现高可用。1、系统环境准备这里我们使用的是centos7的操作系统,默认使用yum安装的情况下,bind的程序named会安装到/var/named目录下,注意保证分区的大小,当然也可以使用chroot包来修改目录,这里使用默认目录[root@tiny-cloud /root]# lsb_release -aLSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx

2022-02-28 19:31:46 1046

原创 DPVS-FullNAT模式keepalived篇

本文主要介绍基于CentOS7.9系统部署DPVS的FullNAT模式在使用keepalived进行主备模式配置高可用集群在线上生产环境落地实践时遇到的一些问题和处理的思路。文中所有IP地址、主机名、MAC地址信息均已进行脱敏或魔改处理,客户端IP使用模拟器生成,但不影响阅读体验。1、keepalived架构1.1 单机架构图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fVB7KSeW-1645782891340)(https://resource.tinyc

2022-02-27 00:49:42 630

原创 DPVS-FullNAT模式管理篇

本文主要介绍基于CentOS7.9系统部署DPVS的FullNAT模式的各种部署方式和配置管理,包括IPv4-IPv4、bonding、IPv6-IPv6、IPv6-IPv4(NAT64)和keepalived模式这五种方案。以下的配置全部基于双臂模式,并且RS机器上面已经安装了DPVS相应的toa模块。我们先从单个网卡的IPv4简单配置开始,接着再做bonding配置,然后再进行IPv6简单配置,NAT64配置以及最后使用keepalived配置主备模式。本文中安装的DPVS版本为1.8-10,d

2022-02-27 00:49:21 765

原创 DPVS-FullNAT模式部署篇

本文主要介绍在CentOS7.9系统上部署DPVS的FullNAT模式和在RealServer上安装toa模块获取客户端的真实IP。此前的文章已经介绍过DPVS简介与部署以及DPDK在DPVS中的应用及原理分析,有需要的同学可以先补一下相关的内容。由于之前的文章中的部署步骤只介绍到了DPVS的部署,并没有涉及相关的各种负载均衡模式的配置,以及时间过去大半年之后,DPVS的版本和对应的DPDK版本都有所更新,因此这里再重新详细写一篇新的部署教程。本文中安装的DPVS版本为1.8-10,dpdk版本为1

2022-02-27 00:48:48 729

原创 Megacli常用命令整理

本文主要介绍Megacli工具的常用命令MegaCli 是LSI公司官方提供的SCSI卡管理工具软件,后来经过一系列的收购合并等操作,现在的LSI属于博通公司旗下的产品,因此如果需要下载MegaCli的话可以前往博通官网下载。MegaCli工具一般在/opt/MegaRAID/MegaCli/MegaCli64,当然也可以直接使用MegaCli,一般来说两者是一样的/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL# 查看所有阵列卡的所有阵列逻辑

2022-02-27 00:47:13 2347

原创 RHEL/CentOS修改hostname

1、CentOS6/RHEL6对于6系的红帽Linux,修改hostname较为麻烦,如果只是需要临时修改hostname,只需要使用hostname命令即可:hostname your-new-temp-hostname如果需要永久修改hostname,则需要修改两个地方:首先是/etc/hosts文件中,需要添加IP和hostname的映射关系,如:127.0.0.1 your-new-perm-hostname然后在/etc/sysconfig/network文件中修改对应的HOSTN

2022-02-27 00:47:01 1592

原创 OpenResty篇01-入门简介和安装配置

本文主要对openresty做入门简介以及初始化的安装配置介绍。1、OpenResty简介了解过web服务器的同学肯定对nginx不陌生,nginx作为目前占有率第一的web服务器,本身作为静态web服务器、反向代理服务和四层、七层负载均衡器都有着非常优秀的表现。但是对于web服务器而言,nginx的很多功能都偏向于静态web应用,也就是说它的动态处理能力是有一定的缺失的。举个最简单的例子,nginx无法在配置中直接进行一个条件以上的逻辑判断,这对于一些架构设计来说有着较大的不便。OpenResty的

2022-02-27 00:46:43 2291

原创 SSL/TLS、对称加密和非对称加密和TLSv1.3

本文主要对对称加密和非对称加密的原理以及过程进行分析,同时还会简单介绍一下TLS/SSL的一些相关内容,并且对比TLSv1.2和TLSv1.3的不同。1、SSL和TLS的历史其实早期的互联网协议基本都是不加密进行传输的,如HTTP、FTP、telnet.等协议的传输层安全性协议(英语:Transport Layer Security,缩写:TLS)及其前身安全套接层(英语:Secure Sockets Layer,缩写:SSL)的历史进程如下表所示:协议发布时间状态SSL 1

2022-02-27 00:45:58 4468 1

空空如也

空空如也

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

TA关注的人

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