使用elasticsearch-dump迁移elasticsearch集群数据
缘起最近某个5节点es集群发现其中1个主节点(被选中master)cpu负载很高,其中3节点master角色,所有节点默认data角色,初步操作重启这个主节点,使其角色变更减少压力,发现不起作用。 后来使用Cerebro分析发现其中有个geo_infomation信息索引只有一个分片,且大小超过20G,默认单分片在SSD盘中大小最好不超过20G,HDD盘中大小最好不超过10G时性能最佳,这里分片不均衡导致集群压力分配不均。 所以现在需要改变geo_information的索引分片信息,由于不可变更已经生成索引的分片信息,所以只能新建一个索引(默认5分片),然后迁移索引mapping和data数据,这里使用elasticsearch-dump实现。
123456[root@VM-88-87-centos bin]# curl 192.168.88.87:9200/_cat/nodes192.168.88.39 27 88 4 0.33 0.30 0.26 dim - es-39192.168.88.135 72 99 99 18.33 18.52 18.45 di - es- ...
emoji表情包导致wiki无法保存
故障现象接到使用者反馈编辑后保存不了
对应的url为 http://wiki.minminmsn.com/pages/viewpage.action?pageId=42319234
处理过程查看前端日志
12[root@wiki confluence]# grep "viewpage.action?pageId=42319234" access.log |grep -Ev "200 "|grep POST172.30.30.12 - - [18/Sep/2020:11:37:43 +0800] "POST /rest/tinymce/1/drafts HTTP/1.1" 500 4013 "http://wiki.minminmsn.com/pages/viewpage.action?pageId=42319234" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chr ...
使用goaccess分析nginx日志
GoAccess简介GoAccess 是一款开源(MIT许可证)的且具有交互视图界面的实时 Web 日志分析工具,通过你的 Web 浏览器或者 *nix 系统下的终端程序即可访问。
能为系统管理员提供快速且有价值的 HTTP 统计,并以在线可视化服务器的方式呈现。 GoAccess 解析指定的 Web 日志文件并将统计结果输出到 X 终端。功能如下:
通用统计: 此面板展示了几个主要指标,比如:有效和无效请求的数量,分析这些数据所花费的时间,独立访客的情况,请求的文件,静态文件(CSS, ICO, JPG 等)的完整URL,404错误,被解析的日志文件的大小以及消耗的带宽。
独立访客: 此面板按照日期展示了访问次数,独立访客数,以及累计消耗的带宽等指标。具有相同IP,相同访问时间,相同的 UserAgent 的 HTTP 请求将会被识别为独立访客。默认情况下包含了网络爬虫。 您也可以选择使用 –date-spec=hr 参数将按照日期分析修改为按照小时,例如:05/Jun/2016:16 。这对于希望在小时级别去跟踪每日流量非常有帮助。
请求的文件: 此 ...
软件交付的原则
摘自Jez Humble David Farley《持续交付:发布可靠软件的系统方法》为软件的发布创建一个可重复且可靠的过程
这个原则是我们写这本书的一个目标:让软件发布成为一件非常容易的事情。事实上,它的确应该是件很容易的事,因为在发布之前,对发布流程中的每一个环节,你都已经测试过数百次了。它就应该像单击一个按钮那么容易。这种可重复性和可靠性来自于以下两个原则:
几乎将所有事情自动化;
将构建、部署、测试和发布软件所需的东西全部纳入到版本控制管理之中。
归根结底,软件部署包括三件事:
提供并管理你的软件所需要的运行环境,这包括硬件配置、所依赖的软件、基础设施以及所需的外部服务;
将你的应用程序的正确版本安装在其之上;
配置你的应用程序,包括它所需要的任何数据以及状态。
将几乎所有事情自动化
把所有的东西都纳入版本控制
提前并频繁地做让你感到痛苦的事
内建质量
“DONE”意味着“已发布”
交付过程是每个成员的责任
持续改进
Rancher集群部署后需要做的几件事
架构图
总体流程
开发代码提交到Gitlab
Rahcher设置代码库为Gitlab
Rahcher流水线配置编译源码
Rahcher流水线Build Docker镜像
Rancher流水线Push Docker镜像到私有镜像库Harbor
Rancher流水线根据k8s yaml部署文件部署容器
重要步骤
1.添加LDAP认证 全局–安全–认证–编辑–启用OpenLDAP认证 设置仅允许授权的用户和组织,方便账号管理及安全使用
2.添加通知 Local–工具–通知 默认支持Slack、Mail、PagerDuty、Webhook、企业微信、钉钉、Microfoft Teams,这里选择邮件
3.添加日志 Local–工具–日志 有Elasticsearch、Splunk、Kafka、Syslog、Fluentd,这里使用的是Elasticsearch
4.集成Gitlab Local–Defalt–工具–流水线 需要先在Gitlab对应项目账号中新建Application,然后在流水线中配置Gitlab应用,设置好id和secret后验证确认授权
...
K8s集群上使用Helm部署2.4.6版本Rancher集群
参考文档 Helm安装Rancher
Rancher简介 Rancher是一套容器管理平台,它可以帮助组织在生产环境中轻松快捷的部署和管理容器。 Rancher可以轻松地管理各种环境的Kubernetes,满足IT需求并为DevOps团队提供支持。 Kubernetes不仅已经成为的容器编排标准,它也正在迅速成为各类云和虚拟化厂商提供的标准基础架构。Rancher用户可以选择使用Rancher Kubernetes Engine(RKE)创建Kubernetes集群,也可以使用GKE,AKS和EKS等云Kubernetes服务。 Rancher用户还可以导入和管理现有的Kubernetes集群。 Rancher支持各类集中式身份验证系统来管理Kubernetes集群。例如,大型企业的员工可以使用其公司Active Directory凭证访问GKE中的Kubernetes集群。IT管理员可以在用户,组,项目,集群和云中设置访问控制和安全策略。 IT管理员可以在单个页面对所有Kubernetes集群的健康状况和容量进行监控。 Rancher为DevOps工程师提供了一个直观的用户界 ...
典型算法的Python实现
算法 如果用通俗易懂的语言来说,算法就是“把解决问题的步骤无一遗漏地用文字或图表示出来”。要是把这里的“用文字或图表示”替换为“用编程语言表达”,算法就变成了程序。而且请诸位注意这样一个条件,那就是“步骤必须是明确的并且步骤数必须是有限的”。
典型算法 计算不能自发地思考。因此计算机所执行的由程序表示的算法必须是由机械的步骤所构成。所谓“机械的步骤”,就是不用动任何脑筋,只要按照这个步骤做就一定能完成的意思。众多的学者和前辈程序员们已经发明创造出了很多机械地解决问题的步骤,这些步骤并不依赖人类的直觉。由此所构成的算法被称为“典型算法”。
辗转相除法 辗转相除法(又称欧几里得算法)就是一个机械地求解最大公约数问题的算法。 辗转相除法可以求两个数的最大公约数,两个数相乘除以最大公约数可以得两个数的最小公倍数。
123456789101112131415161718#!/usr/bin/env python# -*- coding: utf-8 -*-# minyt 2020.8.25a = input("Please input num a: ") b = input( ...
CentOS7.4 部署opencv3.4.1环境
安装依赖
12[root@VM-0-143-centos data1]# yum install cmake gcc gcc-c++ gtk+-devel ant java-11-openjdk[root@VM-0-143-centos data1]# yum groupinstall "Development Tools"
编译安装
1234567[root@VM-0-143-centos data1]# unzip opencv-3.4.1.zip [root@VM-0-143-centos data1]# cd opencv-3.4.1/[root@VM-0-143-centos opencv-3.4.1]# mkdir build[root@VM-0-143-centos opencv-3.4.1]# cd build/[root@VM-0-143-centos build]# cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TESTS=OFF .. ...
敏捷宣言四大价值和十二原则
四大价值 ·个体以及互动而不是过程和工具
·可用的软件而不是完整的文档
·客户合作而不是合同谈判
·应对变更而不是遵循计划
十二原则 1.我们的最高目标,通过尽早持续交付有价值的软件来满足客户的要求。
2.欢迎对需求提出变更,即使在项目开发后期也不例外。敏捷过程要善于利用需求变更,帮助客户获取竞争优势。
3.要经常交付可用的软件,周期从几周到几个月不等,且越短越好。
4.项目实施过程中,业务人员与开发人员必须始终通力协作。
5.要善于激励项目人员,给予他们所需的环境和支持,并相信他们能够完成任务。
6.无论是对开发团队还是团队内部,信息传达最有效的方法都是面对面的交谈。
7.可用的软件是衡量进度首要衡量标准。
8.敏捷过程提倡可持续的开发。项目发起人、开发人员和用户应该都能够始终保持步调稳定。
9.对技术的精益求精以及对设计的不断完善将提高敏捷性。
10.简洁,即尽最大可能减少不必要的工作,这是一门艺术。
11.最佳的架构、需求和设计将出自于自组织团队。
12.团队要定期反省怎样做才能更有效,并相应地调整团队的行为。
校之以计而索其情
从古至今读过《孙子兵法》的不少,大家对其感触最深或者得到的点肯定是不一样的。有人强调“兵者,诡道也。”,有人强调“知彼知己,百战不殆”,然而我却对“校之以计,而索其情”这句情有独钟。
“校之以计,而索其情”出自于《孙子兵法》计篇。原文是这样的:
孙子曰:兵者,国之大事,死生之地,存亡之道,不可不察也。 故经之以五事,校之以计,而索其情:一曰道,二曰天,三曰地,四曰将,五曰法。 道者,令民与上同意,可与之死,可与之生,而不危也;天者,阴阳、寒暑、时制也;地者,远近、险易、广狭、死生也;将者,智、信、仁、勇、严也;法者,曲制、官道、主用也。 凡此五者,将莫不闻,知之者胜,不知之者不胜。 故校之以计,而索其情,曰:主孰有道? 将孰有能? 天地孰得? 法令孰行? 兵众孰强? 士卒孰练? 赏罚孰明? 吾以此知胜负矣。 将听吾计,用之必胜,留之;将不听吾计,用之必败,去之。 计利以听,乃为之势,以佐其外。 势者,因利而制权也。 兵者,诡道也。 故能而示之不能,用而示之不用,近而示之远,远而示之近。 利而诱之,乱而取之,实而备之,强而避之,怒而挠之,卑而骄之,佚而劳之,亲而离之,攻其无备,出其不意 ...