摘要:
Kubernetes作为容器应用的管理平台,通过对pod的运行状态进行监控,并且根据主机或容器失效的状态将新的pod调度到其他node上,实现了应用层的高可用。 针对kubernetes集群,高可用性还包含以下两个层面的考虑: etcd存储的高可用 master节点的高可用 在开始之前,先贴一下架构
阅读全文
posted @ 2017-11-25 22:44
KeithTt
阅读(14116)
推荐(2)
摘要:
同步公网 yum 源,上游 yum 源必须要支持 rsync 协议,否则不能使用 rsync 进行同步。 CentOS源:rsync://rsync.mirrors.ustc.edu.cn/centos/ EPEL源:rsync://rsync.mirrors.ustc.edu.cn/epel/ 同
阅读全文
posted @ 2017-09-24 17:50
KeithTt
阅读(7393)
推荐(0)
摘要:
nginx默认的日志格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "
阅读全文
posted @ 2017-05-17 12:49
KeithTt
阅读(9242)
推荐(2)
摘要:
将序列转换为计数字典{元素: 频度},然后根据频度排序。 1、使用 dict.fromkeys() 构造计数字典 from random import randint # 创建一个随机列表 L = [randint(0, 20) for _ in range(30)] print(L) # 创建一个
阅读全文
posted @ 2021-08-23 01:35
KeithTt
阅读(114)
推荐(0)
摘要:
from kubernetes import client, config, watch from elasticsearch import Elasticsearch import arrow import sys import requests import json dingding_webh
阅读全文
posted @ 2021-04-28 16:55
KeithTt
阅读(374)
推荐(0)
摘要:
PM2 is a daemon process manager that will help you manage and keep your application online. 1、安装 node 环境 cd /usr/local/ wget https://nodejs.org/dist/v
阅读全文
posted @ 2020-09-21 17:15
KeithTt
阅读(204)
推荐(0)
摘要:
CoreDNS 的架构 解析流程 这里用到的是 CoreDNS 的 hosts plugin 插件。该插件仅支持 A, AAAA, 和 PTR 记录。 kubectl edit configmap coredns -n kube-system apiVersion: v1 kind: ConfigM
阅读全文
posted @ 2020-06-28 18:46
KeithTt
阅读(12004)
推荐(0)
摘要:
准备工作: 1、Kubernetes版本: 1.15.x ≤ K8s version ≤ 1.17.x 2、Helm版本: 2.10.0 ≤ Helm Version < 3.0.0(不支持 helm 2.16.0 #6894) 3、集群已有默认的StorageClass 如何安装 helm2,上一
阅读全文
posted @ 2020-06-27 02:03
KeithTt
阅读(1559)
推荐(0)
摘要:
1、安装 dnsmasq yum install -y dnsmasq 2、修改配置 $ grep -v '^#' /etc/dnsmasq.conf |grep -v '^$' resolv-file=/etc/resolv.dnsmasq.conf strict-order server=114
阅读全文
posted @ 2020-06-24 21:35
KeithTt
阅读(1137)
推荐(0)
摘要:
helm2 的架构跟 helm3 的架构不同。 在 helm2 架构中,helm 是客户端,tiller 是服务端部署在 k8s 集群内部。 1、使用二进制包安装 helm 客户端 wget https://get.helm.sh/helm-v2.16.9-linux-amd64.tar.gz ta
阅读全文
posted @ 2020-06-21 01:12
KeithTt
阅读(1536)
推荐(0)
摘要:
场景:前端业务使用了微服务架构,需要在一个主项目中编译打包所有子项目。 1、创建一个流水线任务 2、填写项目描述 3、编写 pipeline 脚本 pipeline { agent any stages { stage("build console all") { steps { script {
阅读全文
posted @ 2020-06-20 02:21
KeithTt
阅读(6862)
推荐(0)
摘要:
整个 CICD 流程大致如下: 这里 jenkins/gitlab/harbor 都是现成的哈,主要记录一下集成过程和其中遇到的问题。 1、创建一个流水线任务 2、填写项目描述 3、编写 pipeline 脚本和其中调用的 shell 脚本 pipeline { agent any environm
阅读全文
posted @ 2020-06-16 23:30
KeithTt
阅读(1645)
推荐(0)
摘要:
这里使用的是外部 mysql 数据库,所以没有使用官方提供的 mysql 和存储方案。 1、clone 项目 git clone https://github.com/nacos-group/nacos-k8s.git 2、修改 yaml 文件,这里要注意 NACOS_SERVERS 的格式 vim
阅读全文
posted @ 2020-06-12 15:54
KeithTt
阅读(3969)
推荐(1)
摘要:
并发: 一段时间内,有几个程序在同一个cpu上运行,但是任意时刻只有一个程序在一个cpu上运行 并行: 任意时刻有多个程序同时运行在多个cpu上 同步、异步,与阻塞、非阻塞不相关 函数或方法被调用的时候,调用者是否得到最终结果 同步: 直接得到最终结果的,就是同步调用。同步就是一直要执行到返回最终结
阅读全文
posted @ 2020-05-28 15:34
KeithTt
阅读(471)
推荐(0)
摘要:
1、设置 Node 环境 2、创建一个自由风格的项目 3、添加项目描述 4、添加 git 地址 5、设置构建环境 6、通过 shell 打包代码 7、发布到服务器上 脚本如下: 参考: https://blog.csdn.net/liub37/article/details/83272398 htt
阅读全文
posted @ 2020-05-09 11:07
KeithTt
阅读(513)
推荐(0)
摘要:
集群架构: 三个节点 172.27.132.22 172.27.132.24 172.27.132.37 nacos version: 1.2.1 OS version: centos7.5 vip:172.27.133.200 1、下载安装 jdk $ yum install -y jdk-8u2
阅读全文
posted @ 2020-04-29 00:30
KeithTt
阅读(2342)
推荐(0)
摘要:
HTTP协议是无状态协议,为了解决这个问题产生了cookie和session技术。 传统的session cookie机制 无session方案 命令行操作 编码 TOKEN由三部分拼接而成 HEADER: ALGORITHM & TOKEN TYPE PAYLOAD: DATA VERIFY SI
阅读全文
posted @ 2020-04-28 17:42
KeithTt
阅读(350)
推荐(0)
摘要:
最近遇到一个问题,keepalived 在 OpenStack 环境下一直脑裂无法选举。在不支持组播的场景下,可以使用单播模式。 主节点: 备节点: 参考: https://www.jianshu.com/p/7c709c3be4a9 https://blog.csdn.net/weixin_343
阅读全文
posted @ 2020-04-23 09:50
KeithTt
阅读(3625)
推荐(0)
摘要:
主节点配置: 从节点配置: 参考: https://www.keepalived.org/pdf/UserGuide.pdf https://github.com/acassen/keepalived
阅读全文
posted @ 2020-04-22 11:51
KeithTt
阅读(164)
推荐(0)
摘要:
翻转一棵二叉树。 输入: 输出: 代码如下: 参考: https://leetcode cn.com/problems/invert binary tree/
阅读全文
posted @ 2020-04-22 11:28
KeithTt
阅读(130)
推荐(0)
摘要:
1、安装 Node 环境 a、官网下载 tar 包 b、解压设置环境变量 PATH=/usr/local/node/bin:$PATH 2、安装 sinopia npm install -g sinopia 3、初次手动启动服务生成配置文件 $ sinopia Sinopia doesn't nee
阅读全文
posted @ 2020-04-13 19:56
KeithTt
阅读(605)
推荐(0)
posted @ 2020-04-13 19:45
KeithTt
阅读(2318)
推荐(0)
摘要:
这个设置用于自动将404响应跳转到首页入口文件 index.html。 webpack 配置如下: 部署到服务器上时 nginx 的配置如下: 参考: https://webpack.js.org/configuration/dev server/ devserverhistoryapifallba
阅读全文
posted @ 2020-04-13 19:27
KeithTt
阅读(3146)
推荐(0)
摘要:
这里主要记录 task 创建过程,jdk和插件安装等准备工作就不说了。 1、创建一个 maven 任务 2、添加项目描述 3、添加 git 仓库地址和分支 4、添加 pom 文件路径 和 maven 构建参数 5、发布代码 脚本太长截不全,具体如下:
阅读全文
posted @ 2020-03-27 22:21
KeithTt
阅读(510)
推荐(0)
摘要:
1、安装 rsync 和 inotify yum install -y rsync inotify-tools 2、编写监控脚本 #!/usr/bin/env bash app_name=cms src=/dev/${app_name}/ # 需要同步的源路径 des=/dev/${app_name
阅读全文
posted @ 2020-03-27 21:23
KeithTt
阅读(513)
推荐(0)
摘要:
架构图 节点规划 120.52.146.213 Control Machine 120.52.146.214 PD1_TiDB1 120.52.146.215 PD2_TiDB2 120.52.146.216 PD3 120.52.146.217 TiKV1 120.52.146.218 TiKV2
阅读全文
posted @ 2019-10-22 10:32
KeithTt
阅读(884)
推荐(0)
摘要:
1、同步资源 # rsync -vrt rsync://repo.zabbix.com/mirror/zabbix/3.4/rhel/7/x86_64/ /home/mirrors/zabbix/3.4/rhel/7/x86_64/ 2、配置apache发布镜像目录,当然也可以用nginx或者其他w
阅读全文
posted @ 2019-03-17 16:50
KeithTt
阅读(1517)
推荐(0)
摘要:
redis不是一个纯文本kv存储,实际上,它是一个数据结构服务,支持不同类型的value。 包含以下类型: 关于key: key是二进制安全的,可以使用任意二进制序列作为key,包括纯字符串甚至是一个JPEG文件。 最大允许大小为512MB。 Strings 字符串类型是最简单的数据类型,是Memc
阅读全文
posted @ 2019-01-12 13:39
KeithTt
阅读(467)
推荐(0)
摘要:
这里仅针对docker本身,不涉及任何编排工具compose或者k8s等。 按照惯例,官文撸起来。 重要的部分是一些选项,用来限制资源大小。 Memory 多数选项值都是正整数,单位是b, k, m, g,分别表示 bytes, kilobytes, megabytes, 和 gigabytes。
阅读全文
posted @ 2019-01-06 23:35
KeithTt
阅读(844)
推荐(0)
摘要:
记性不好,回顾一下。按照惯例,直接看官文。 docker的网络子系统是插件化的,需要使用驱动。默认支持以下几种驱动: bridge:桥接,默认的网络驱动,如果不指定驱动,将默认使用桥接。通常用在同一个docker主机中的多个容器间通信。 host:去掉容器和宿主机之间的网络隔离,直接使用宿主机的网络
阅读全文
posted @ 2019-01-06 19:26
KeithTt
阅读(283)
推荐(0)
摘要:
首先,staticmethod和classmethod装饰器是通过非数据描述符实现的。用法简单,这里就不细说了。 这里主要分析一下staticmethod和classmethod是如何通过描述符实现的。 如果看过了上篇property,相比之下,这个就简单了不少。 这里用到了偏函数、装饰器以及面向对
阅读全文
posted @ 2019-01-05 12:41
KeithTt
阅读(524)
推荐(0)
摘要:
首先,property装饰器是通过数据描述符实现的。用法很简单,大家应该都知道,这里就不细说了。 这里主要分析一下property是如何通过描述符实现的。 访问 赋值 这里涉及到装饰器,需要对装饰器和面向对象有足够的了解才能弄明白当中的变量传递,希望你不会被挡住。 参考: https://docs.
阅读全文
posted @ 2019-01-05 07:04
KeithTt
阅读(470)
推荐(0)
摘要:
初学py的时候大家都说描述符是高级内容难度较大,仔细撸过文档之后感觉还好,不过用起来确实不那么直观。 按照惯例,先来看一下官文API文档: 总的来说,描述符是一个带有绑定行为的对象属性,访问这个对象属性的时候会被 描述符协议 中的方法覆盖,可以理解为一种hook机制。 描述符协议包括三个魔术方法:
阅读全文
posted @ 2019-01-05 05:44
KeithTt
阅读(867)
推荐(0)
摘要:
作为一个py3土著,并不是很关心这个问题,但是总有人隔三差五问这个问题,还是捋了一下。 这里列出几个主要区别: 1、最常见的人尽皆知的print()函数 在py2中,print是一个语句,不带括号,也可以带括号。 在py3中,print是一个函数,必须带括号调用。 2、除法 3、unicode 在p
阅读全文
posted @ 2019-01-04 07:33
KeithTt
阅读(933)
推荐(0)
摘要:
除了常见的os.system和os.popen方法,官方强烈推荐使用subprocess来调用系统命令。 这个库用起来其实很简单,按照惯例先贴一下官文关键点: The subprocess module allows you to spawn new processes, connect to th
阅读全文
posted @ 2018-12-27 15:07
KeithTt
阅读(281)
推荐(0)
摘要:
一、打包Django应用 1.创建setup.py文件 2.保存项目中使用的库 3.打包源码 二、在部署server上安装依赖包 三、修改Django配置文件 四、测试运行 第一种部署方式,直接以http方式启动 1.安装uwsgi 2.运行app 3.测试访问 http://ip:8001/pos
阅读全文
posted @ 2018-12-27 03:19
KeithTt
阅读(1676)
推荐(0)
摘要:
Selenium把元素定位接口封装得更简单易用了,支持Xpath、CSS选择器、以及标签名、标签属性和标签文本查找。 参考: https://selenium python.readthedocs.io/locating elements.html https://selenium python.r
阅读全文
posted @ 2018-12-26 07:49
KeithTt
阅读(300)
推荐(0)
摘要:
1、数据是使用scrapy redis爬取的,存放在redis里面,爬取的是最近大热电影《海王》 2、使用了jieba中文分词解析库 3、使用了停用词stopwords,过滤掉一些无意义的词 4、使用matplotlib+wordcloud绘图展示 绘图结果: 参考: https://github.
阅读全文
posted @ 2018-12-26 06:41
KeithTt
阅读(330)
推荐(0)
摘要:
使用Xpath和BeautifulSoup来解析网页可以说真的很简便。 解析结果:
阅读全文
posted @ 2018-12-26 06:18
KeithTt
阅读(398)
推荐(0)
摘要:
三路快排 也是用来解决序列中存在大量重复元素的问题,比双路快排更高效 将序列分为三个部分,小于pivot、等于pivot、大于pivot 等于pivot的部分不递归,这样在存在大量重复元素时,将大大缩小递归的数据规模
阅读全文
posted @ 2018-12-26 02:41
KeithTt
阅读(829)
推荐(0)
摘要:
序列元素重复,是序列已经排好序的一种特殊情况,如果一个序列中的元素全部相同,也将出现最差情况。 如果序列中存在大量重复元素,在普通快排中,相等的元素会被全部放到分区点的一边,这样会大大增加快排的时间复杂度,双路快排就是用来解决这个问题的。 能够将序列均衡分开的分区点才是好的分区点。均匀分开意味着保持
阅读全文
posted @ 2018-12-26 01:07
KeithTt
阅读(519)
推荐(0)
摘要:
当序列已经排好序时,将出现最差情况,时间复杂度降为O(n²) 随机快排用于解决序列近乎有序时算法复杂度退化为O(n²)的问题 from random import shuffle, randrange def quick_sort(lst, left, right): 当只有一个元素的时候退出递归
阅读全文
posted @ 2018-12-26 01:04
KeithTt
阅读(421)
推荐(0)
摘要:
快速排序 又称分区交换排序(partition exchange sort) 平均时间复杂度为O(nlogn) from random import shuffle def quick_sort(lst, left, right): 当只有一个元素的时候退出递归 if left
阅读全文
posted @ 2018-12-26 01:00
KeithTt
阅读(181)
推荐(0)