运维&环境
文章平均质量分 82
测试需要的运维知识
公众号-测试生财
分享各类测试技术和资源,请关注微信公众号:测试生财。
展开
-
MYSQL设置密码以及外网访问
前言本文主要分享了MYSQL安装后,常见的几个操作。例子1)设置MYSQL登录不需要密码mysqld_safe --user=mysql --skip-grant-tables --skip-networkingservice mysqld restart2)设置mysql的密码#登陆到mysql,执行如下命令UPDATE mysql.user SET Password=PASSWORD('123456') where USER='root';3)让MYSQL对外界可访问原创 2021-03-17 08:21:46 · 174 阅读 · 0 评论 -
CentOS下搭建MySql(RPM包)
前言 MySQL数据库是一种关系数据库管理系统,支持数据库标准的SQL语言。MYSQL具有体积小、速度快、总体拥有成本低。MYSQL社区版提供了源码开放,随着WEB应用越来越多,MYSQL基本上成为了RDBMS的首选。公司内部很多项目都使用到了MYSQL数据库,这里对分享一下CentOS系统下关于MYSQL社区版的安装。核心概念 MySQL- MySQL服务器。你需要该选项,除非你只想连接运行在另一台机器上的MySQL服务器。 MySQL-client- MySQL 客户端程序..原创 2021-03-15 08:25:53 · 161 阅读 · 0 评论 -
pip安装ansible报错:TypeError: unsupported operand type(s)
背景某机器需要搭建一套运行环境,该项目用到了ansible部署。这里我使用了pip安装ansible:pip install ansible==2.0.0,在安装过程中报了如下错误:TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'从报错信息可以看到,这里是pip使用urllib3连接远程地址的时候抛出的异常,可能是访问pip的国外源超时,我怀疑可能是pip源的问题。设置pip源1)创建pip.conf原创 2021-03-09 08:07:03 · 626 阅读 · 0 评论 -
pip:ffi.h: No such file or directory“
背景在Linux下使用pip安装ansible的时候,报错:ffi.h: No such file or directory"。原因Linux下缺少libffi和libffi-dev(el)解决方法Ubuntusudo apt installlibffi libffi-dev -yCentossudoyum -y installlibffi libffi-devel这样就不会如上错误了。博主:测试生财(一个不为996而996的测开码农)座右铭:专注测...原创 2021-03-04 08:07:54 · 6352 阅读 · 1 评论 -
docker一键搭建postgresql脚本(全网精华版原创)
前言本篇文章将演示如何利用docker快速搭建postgresql数据库,并提供了一键安装脚本用于快速安装。脚本脚本列表start_docker_postgres.sh:一键安装脚本pg_hba.conf:postgresql的访问限制配置文件postgresql.conf:postgresql的主配置文件脚本内容pg_hba.conf# "local" is for Unix domain socket connections onlylocal all all原创 2021-03-03 08:31:16 · 454 阅读 · 2 评论 -
etcdctl常用指令说明(v3版本)
简介etcd分为etcd2和etcd3版本,两个版本之间的api相互不兼容,现在大多数公司都在使用etcd3版本,本文也以etcd3作为演示对象。etcdctl工具etcd附带的命令行工具,可以很方便的对etcd中的数据进行管理。etcdctl有两个版本:v2和v3,可以分别使用如下方式来设置版本:#设置v2版本export ETCDCTL_API=2#设置v3版本export ETCDCTL_API=3这里我们以只介绍etcdctl v3版本。配置v3版本sudovi.原创 2021-03-01 08:17:33 · 4960 阅读 · 0 评论 -
查看docker镜像仓库中镜像版本信息
背景现在有很多软件服务都提供了docker镜像进行快速搭建,我们经常需要使用某特定版本,这里就涉及到了docker镜像的版本,那如何查看docker镜像版本呢?查看方法如果想要查看某docker镜像的全部版本,docker_img为镜像名curl https://registry.hub.docker.com/v1/repositories/${docker_img}/tags | python3 -m json.tool | more需要在机器上安装python3(参考python3环原创 2021-02-26 08:26:26 · 5601 阅读 · 0 评论 -
ansible:unarchive模块解压报错
前言部署某环境的时候,我使用ansible的unarchive模块解压某xx.tar.gz文件报错:"msg": "Failed to find handler for \"/tmp/xxx.tar.gz\". Make sure the required command to extract the file is installed.Command \"/usr/bin/gtar\" could not handle archive.Command \"unzip\" not found...原创 2021-02-25 08:42:20 · 4147 阅读 · 8 评论 -
Chrome离线安装CRX插件方法
前言Chrome插件有:extension,app,NaCl(Native Client),PNaCl(Portable Native Client)等。当前Chrome主要使用的是extension,其文件扩展名为crx。安装插件方法下载crx插件 重命名crx为zip扩展名 打开谷歌的extension页面 拖动zip包到该页面安装示例这里以安装switchOmega插件为例1. 下载crx插件1) 访问https://github.com/FelisCatus/S.原创 2021-02-24 08:28:19 · 635 阅读 · 0 评论 -
Clickhouse集群性能测试(全网独家精华版)
背景公司使用clickhouse作为其时序分析数据库,在上线前需要对Clickhouse集群做一个性能基准测试,用于数据评估。这里我搭建了三节点的集群,集群采用三分片单副本的模式(即数据分别存储在三个Clickhouse节点上,每个Clickhouse节点都有一个单独的副本,如下图:具体的搭建方式参考:Clickhouse集群搭建性能测试说明性能关注指标clickhouse-server写性能 clickhouse-server读性能 clickhouse-server的CPU和原创 2021-02-16 09:40:48 · 1686 阅读 · 0 评论 -
Docker快速搭建Clickhouse集群(3分片3副本)
背景前文简单介绍了下Clickhouse的安装和客户端使用,在实际生产环境中,Clickhouse常常是以集群模式部署的,由于很多系统不满足sse4.2指令,这里使用docker来搭建一个Clickhouse的集群。1. 环境说明1.1 机器列表 机器名 IP 配置 操作系统 部署的服务 备注 server01 192.168.21.2原创 2021-02-15 09:28:57 · 3960 阅读 · 7 评论 -
时序数据库:clickhouse和clickhouse-client的安装使用
背景公司的项目中使用到了Clickhouse,在该时序数据库安装完后,需要对业务使用到的相关表进行初始化。开发提供了一份建表的sql文件,这里我需要执行该sql文件进行初始化即可。这里我使用到了Clickhouse的原生命令行客户端:Clickhouse-client,用于快速导入。安装clickhouse1)验证是否支持sse4.2#clickhouse的server已经client仅支持x86_64,AArch64或PowerPC64LE CPU架构的Linux,FreeBSD或Ma.原创 2021-02-12 14:11:01 · 1930 阅读 · 0 评论 -
RocketMQ:设置broker的对外IP
背景最近在公司遇到这么一个问题:我在测试环境中搭建了一套RocketMQ,开发想要使用本机连接进行生产消费的测试,但是发现服务无法正常访问,报如下错误:send heart beat to broker error {"fields": {"underlayError":{"Op":"dial","Net":"tcp","Source":null,"Addr":{"IP":"10.13.10.29","Port":10911,"Zone":""},"Err":{}}}}分析这个错误指的是本机原创 2021-02-11 16:54:22 · 6134 阅读 · 0 评论 -
一站式测试平台:Metersphere本地开发环境搭建
背景最近公司要做一个测试平台,主要功能涉及了产品,开发和测试三方的业务联动。其实在业界已经有了很多类似的开源平台,例如阿里的云效,腾讯的tapd,还有很多其他的云测试平台。由于涉及到公司的信息安全问题,公司内部希望能够自研一款对内的测试平台,解决产研测一体化的问题。通过对市面上各种竞品调研,最终选定了metersphere这款测试平台进行二次开发。由于需要对平台进行二次开发,所以基本都是利用源码的方式来安装运行(如果你需要进行二次开发,直接按照官网的文档快速部署即可)。Metersphere文档原创 2021-02-10 08:41:44 · 5363 阅读 · 4 评论 -
Linux下利用Docker搭建MYSQL5.7
引言本文旨在介绍如何在Linux使用Docker快速搭建一个MYSQL环境,用于日常的开发调试,有需要的朋友可参考一下。配置MYSQL1) 创建mysql配置目录#创建配置目录mkdir -p /etc/mysql/conf.d/#创建数据和日志目录mkdir -pv /opt/mysql/{data,logs}2) 修改my.cnf配置输入:sudo vim /etc/mysql/conf.d/my.cnf,添加如下内容:[mysqld]default-stor.原创 2021-02-09 07:17:44 · 439 阅读 · 1 评论 -
kuiper批量创建规则的例子
引言前面提到了测试kuiper创建规则上限数遇到的问题,这里给大家分享一下如何批量创建多条规则。分析kuiper官网的性能测试结果中没有详细说明8000条规则的具体场景。这里我是这么理解:首先有8000个流,其中800个流对应一个SELECTtemperatureFROM sourceX WHERE> 20这样的规则;另外7200个流对应SELECTtemperatureFROM sourceY WHERE temperature <= 20这样如果我发送的MQ...原创 2021-02-05 09:18:02 · 196 阅读 · 0 评论 -
kuiper规则数上限测试的突发问题
背景kuiper的官网中有提到:kuiper支持8000条规则下的数据路由处理,于是我便尝试搭建该测试环境试试。测试方法如图,我搭建了一个虚机来跑Kuiper,Kuiper会订阅Emqx Broker的Topic,这时候我用一个MQTT客户端(比如MQTTBox或者Jmeter)向Emqx Broker特定topic发送消息。Kuiper中的规则引擎就会对订阅到的每条消息进行过滤处理(即类似执行sql),并输出到Kuiper的日志中。突发问题使用前文提到的环境,在kuipe.原创 2021-02-04 09:25:41 · 214 阅读 · 0 评论 -
kuiper流式计算完整实例演示
背景前面文章分享了如何安装kuiper和kuiper-manager,本篇文章通过一个完整的例子来演示kuiper的一个比较完整的流式计算。下图仍旧使用了kuiper官网文档中的图,我在里面稍微加了一些注释:流式计算创建操作过程kuiper的流式计算创建于操作分为如下几个步骤:使用命令行/rest/控制台创建一个流(对应sources) 基于创建的流编写路由规则(对应sql/rule部分) 使用mqtt工具给mqtt broker发送消息(上文中kuiper使用emqx作为其mq原创 2021-02-03 08:54:17 · 522 阅读 · 0 评论 -
centos下搭建kuiper以及kuiper-manager
什么是kuiperEMQ X Kuiper 是 Golang 实现的轻量级物联网边缘分析、流式处理开源软件,可以运行在各类资源受限的边缘设备上。Kuiper 设计的一个主要目标就是将在云端运行的实时流式计算框架(比如Apache Spark,Apache Storm和Apache Flink等)迁移到边缘端。Kuiper 参考了上述云端流式处理项目的架构与实现,结合边缘流式数据处理的特点,采用了编写基于源 (Source),SQL (业务逻辑处理),目标 (Sink)的规则引擎来实现边缘端的...原创 2021-02-02 08:23:17 · 738 阅读 · 0 评论 -
Centos搭建EMQX和EMQ-Dashboard(踩坑精华版)
背景最近在做物联网平台性能分析,最终选择EMQX作为对比对象。我小试牛刀地搭建了一下EMQX,并顺便安装了一下EMQX的Dashboard插件:emqx-dashboard。简介:EMQX:EMQ X(Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。EMQX-Dashboard:EMQ X的Web控制台,项目地址:https://github.com/emqx/emqx-dashboar.原创 2021-02-01 08:39:58 · 3043 阅读 · 2 评论 -
centos7下安装erlang
背景emqx中使用到了erlang作为其运行前提,为了编译相关插件,这里分享下如何在cento7下安装erlang。安装方式erlang两种主流安装方式:1. 源码安装:http://erlang.org/download/otp_src_23.2.tar.gz2.软件包管理器安装ForHomebrewonOS X:brew install erlang ForMacPortsonOS X:portinstall erlang ForUbuntuandDe...原创 2021-01-29 08:34:55 · 813 阅读 · 0 评论 -
centos7下升级git版本
背景编译EMQX插件依赖了git的版本,需要使用1.8.5以上的版本,但是我系统(centos7)中的版本为1.8.3,不符合版本要求,如下图安装过程1. 卸载旧版本yum -y remove git2. 安装依赖sudo yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc gcc perl-ExtUtils-MakeMaker3. 选择版本git原创 2021-01-28 08:21:53 · 263 阅读 · 0 评论 -
git pull报错: ssh_exchange_identification
问题在项目中我写了个编译打包的脚本,会拉取gitlab上工程的代码进行编译,然后上传到产品服务器。其中有一次git pull去拉取gitlab上工程代码报错了:ssh_exchange_identification: Connection closed by remote hostfatal: Could not read from remote repository.分析上面提示的意思是git在pull代码期间连接突然被远程中断,我手动在机器上执行git pull代码,并没有出现上述报原创 2021-01-11 09:05:38 · 906 阅读 · 0 评论 -
Postgresql的日志配置
背景 公司的项目中使用了postgresql(简称pg)作为其数据库管理系统,前两天环境突然崩溃了,页面无法打开。经过排查,我发现是数据库所在机器磁盘满了,通过目录和文件排序,原来是pg的日志太多(大约保留了大半年的日志在磁盘上没有被清理)。 我看了下pg的日志配置,发现基本都是用的默认配置,日志滚动没有开启,于是乎做了下相关配置优化后对pg进行重启,最后看了pg的日志滚动,恢复正常了。以下是我梳理的关于pg的日志配置项。配置详解配置文件:postgresql.conf配置1:日志开原创 2021-01-06 08:44:00 · 1459 阅读 · 0 评论 -
RocketMQ系列:使用systemd管理nameserver和broker
背景前面RocketMQ系列中分享了如何在机器上搭建rocketmq,其中nameserver和broker都是以nohup的方式启动。在实际运维过程中,这种启动存在一个比较麻烦的问题:比如机器宕机后,重新启动机器,broker和namserver服务无法自动随开机拉起,还需要我们登陆到每台机器上去操作启动服务。又没有比较好的方式管理启动脚本和停止脚本呢?这里介绍一个系统管理组件:systemd。我们可以编写unit file,将nameserver和broker作为一个systemd下面的一个原创 2020-12-29 08:55:08 · 1404 阅读 · 0 评论 -
Ubuntu安装kubectl
引言本文介绍如何在无法访问国外网络的情况下,在Ubuntu上安装kubectl。安装步骤1. 更新源sudo apt update2. 添加apt密匙apt-key addapt-key.gpg3.添加k8s国内的源cat <<EOF >/etc/apt/sources.list.d/kubernetes.listdeb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main.原创 2020-12-25 08:17:27 · 4244 阅读 · 0 评论 -
macOS安装minikube
什么是minikube?minikube是单机版的kubernetes,主要用于方便个人学习和研究K8s。你仅需要一些一些容器环境(例如docker)或者虚拟机环境,然后在此之上使用minikube start就可以启动K8s。环境依赖:2核以上CPU 2GB以上内存 20GB可用的存储空间 外部 容器或者虚拟机环境:Docker,Hyperkit,Hyper-V,KVM,Parallels,Podman,VirtualBox, orVMWare开始安装提示:需要...原创 2020-12-24 09:01:33 · 444 阅读 · 0 评论 -
ansible的模板变量渲染后带u(unicode)
背景最近使用ansible管理项目部署,有个前端的配置项是类似字典类的配置,其值如{‘memu1’:['/test1','/test2']},在ansible渲染后模板配置项变成了{u'memu1’:[u'/test1',u'/test2']}。问题过程假设ansible中某配置文件的模板如下:navs : {{ nav }}通过ansible传递的变量值为如下:navs:{‘memu1’:['/test1','/test2']}如果使用template模块渲染,最终的配置项会.原创 2021-03-23 14:27:18 · 719 阅读 · 0 评论 -
[PM2][ERROR] Process XXX not found
背景公司的项目全部由pm2管理,有一天不知道什么原因,利用pm2 list查看APP列表,发现有几个服务处于STOP状态,我尝试使用:pm2 start all结果报错:[PM2][ERROR] Process 1021 not found解决方法直接删除报错的app id即可,如:pm2 delete 1021博主:测试生财座右铭:专注测试与自动化,致力提高研发效能;通过测试精进完成原始积累,通过读书理财奔向财务自由。csdn:https://...原创 2020-12-10 08:43:51 · 5739 阅读 · 0 评论 -
rocketmq性能调优:broker快速失败判断maxWaitTimeMillsInQueue
背景公司已上线的项目中的broker集群有部分请求响应较慢,所以进行了线上broker服务的扩容。扩容后整体broker集群的负载下来了不少。这样一周后,某天看rocketmq的客户端的日志中零星打印了报错:system busy。问题分析为什么broker集群扩容了,仍旧有报错呢?和开发对了下,我们broker集群搭建在公有云虚拟机上的,所以可能有以下情况:1. 网络拥塞/抖动公有云的网络环境是未知的,可能是实际线路上的网络调整,或者公有云上的网络服务上线问题导致。2. 虚机资源不原创 2020-12-09 08:20:16 · 1186 阅读 · 0 评论 -
MacOS安装telegraf:Error: Permission denied @ apply2files - /usr/local/opt/openssl/ssl/man/man3/HMAC.3
背景我在自己Macbook上使用homebrew安装telegraf。执行:brew install telegraf,然后报错了:Error: Permission denied @ apply2files - /usr/local/opt/openssl/ssl/man/man3/HMAC.3问题定位尝试1看上图所示应该是权限问题,是缺乏root权限吗?执行:sudobrew install telegraf如上图所示:homebrew不能以root权限运行。尝.原创 2020-12-02 19:23:40 · 686 阅读 · 0 评论 -
rocketmq线上集群性能优化:异步刷盘与异步复制
背景最近公司的项目中使用rocketmq,部署方式为多master-多slave。项目上线一周后,有一天调用方的开发突然找我,说我们的MQ服务的请求调用有延时。我登陆到broker的机器上查看了broker的store.log,发现pagacache的大部分响应都在0~50ms,有部分请求在100ms~200ms。看来broker集群的负载有些高了。方案我和几个开发对了下应对方案:一是通过扩容broker集群降低broker的处理压力二是优化当前的broker配置来提升性能最终考原创 2020-11-30 08:23:50 · 869 阅读 · 0 评论 -
ansible远程执行shell报错:command not found
背景项目中使用到了pm2,用于管理微服务的启停,我在相关机器上安装好了pm2,然后使用ansible进行批量启动服务。在使用ansible的shell模块执行远程命令时候却报了错:/bin/sh: pm2 :command not found,如下图问题定位1. 在被执行机器上查看pm2命令,看看是不是没有添加到环境变量(PATH)里。登陆到这台机器上,执行:which pm2可以看到pm2已安装到机器上了。再看看是否已添加到环境变量中。如下图,我已经把pm2的路径添加到原创 2020-11-27 08:34:33 · 4406 阅读 · 0 评论 -
Linux上查看node和node_modules所在位置
背景公司的机器上安装了某些node包有冲突,这时候我想去清理一下现有的node包缓存,重新去安装一下node包,但是node_module的目录在哪个路径呢?解决方法1. 查看node_modules的目录,执行:npm root -g2. 查看npm的可执行文件所在目录:npm bin -g3. 我们还可以修改npm的工作目录。npm config setprefix /usr/local博主:测试生财座右铭:专注测试与自动化,致力提高研发效能;通过测试精进完成...原创 2020-11-24 08:33:01 · 9698 阅读 · 0 评论 -
elasticsearch索引和快照清理:es curator
前言Elasticsearch Curator是一款ES索引(或快照)的清理神器,可以帮你轻松管理ES中的索引和快照,整体实现过程如下: 从ES集群中获取索引或者快照,作为待执行列表 通过用户定义的filters(过滤器)从待执行列表中删除索引或者快照 通过待执行列表,可以为其定义各种各样的处理动作 项目官网:https://www.elastic.co/guide/en/elasticsearch/client/curator/current/index.html背景原创 2020-11-20 08:37:45 · 1129 阅读 · 0 评论 -
npm运行报错:Error: ENOSPC: System limit for number of file watchers reached
背景最近用vue写一个项目,在服务器上用npm运行该vue项目的时候,执行npm run serve,整个过程执行到一半报错了:Error: ENOSPC: System limit for number of file watchers reached原因查了一下,是linux系统的限制导致这个报错了,需要设置一下:fs.inotify.max_user_watches这个参数。解决方法执行:vim/etc/sysctl.conf,添加如下内容:fs.inotify.ma..原创 2020-11-19 20:41:35 · 8327 阅读 · 4 评论 -
Linux客户端连接报错:Cannot assign requested address
前言在项目中写了一个MQTT的客户端小程序,用于测试MQTTServer的连接数上限,运行了一段时间后报错:Cannot assign requested address网上查了下"Cannot assign requested address"指的是linux系统无法继续为客户端分配端口了(已用尽),所以无法进行监理socket连接。定位问题1. 查看当前linux系统的可分配端口cat /proc/sys/net/ipv4/ip_local_port_range当前系统的原创 2020-11-18 08:20:19 · 5181 阅读 · 0 评论 -
pm2的APP日志管理插件:pm2-logrotate
背景最近我所在项目的进程管理工具从supervisor切换到pm2了,原因之一是因为长期二者兼容导致维护成本过大。后来经过和研发同学沟通,最终选择统一成pm2,因为pm2在windows下也可以对进程进行管理,方便他们在windows本地开发环境起服务调试。supervisor的进程配置文件中自带了日志切分策略;而pm2本身是没有日志管理功能的。如果某服务的运行时间过长,日志会不断堆积,最终会造成机器的磁盘空间耗尽。我调研了一下pm2的日志管理,发现有个pm2-logrotate的插件,专门对p原创 2020-11-17 08:15:02 · 1765 阅读 · 0 评论 -
vue父组件调用子组件中的属性和方法
接上篇,vue的父组件向子组件获取值,如果父组件需要主动调用子组件中的属性方法该如何实现?获取方法1、 父组件中使用子组件的时候在给子组件定义一个ref属性2、父组件可以通过this.$refs.XXX,来操作子组件中的属性和方法子组件Sub1.vue<template> <module :title="title" /> <button :click="run()"></button> </te.原创 2020-11-13 08:24:01 · 713 阅读 · 0 评论 -
qemu-user-static:利用x86机器编译支持arm架构的docker镜像
背景最近在项目中需要编译arm架构的某驱动docker镜像,但是手头上没有现成的arm架构的机器环境,于是在网上搜索了下如何在x86机器模拟arm环境来进行编译。我找到了一款神器:multiarch/qemu-user-static简介项目地址:https://github.com/multiarch/qemu-user-staticqemu-user-static是一个用于利用当前操作系统来运行其它架构的一个仿真器,这个github项目可以通过x86的机器编译出其它各个架构的docker镜原创 2020-11-11 21:22:04 · 15791 阅读 · 6 评论