运维
文章平均质量分 75
时间都哪去了
拥有10多年的经验,精通分布式存储、分布式事务、分布式缓存相关技术、dubbo、Spring Cloud分布式微服务架构
、深度学习框架Tensorflow、Scikit-learn
展开
-
Java服务启动慢,JVM预热的问题,我在k8s上改进了
JVM 预热是一个非常头疼而又难解决的问题。本文讨论了在运行在 Kubernetes 集群中的 Java 服务如何解决 JVM 预热问题的一些方法和经验。JVM 预热是一个非常头疼而又难解决的问题。**基于 JVM 的应用程序在达到最高性能之前,需要一些时间来“预热”。**当应用程序启动时,通常会从较低的性能开始。这归因于像即时(JIT)编译这些事儿,它会通过收集使用配置文件信息来优化常用代码。最终这样的负面影响是,与平均水平相比,预热期间接收的 request 将具有非常高的响应时间。在容器化、高吞吐转载 2021-06-30 17:51:14 · 742 阅读 · 0 评论 -
Istio熔断器功能解析
前言Istio因灵活的可观察性和安全的服务间通信受到了赞许。然而,其他更重要的功能才真正使得Istio成为了服务网格里的瑞士军刀,当遇到运行时长、延迟和错误率等SLO问题时,服务间的流量管理能力是至关重要的。在今年早些时候发布Istio operator时,我们的目标(除了管理Istio的安装和升级)是为这些出色的流量路由特性提供支持,同时使所有的功能都更加易用。最后,我们创建了一个简单且自动化的服务网格Backyards,它在Istio operator之上提供了管理UI、CLI和Graph...转载 2021-04-22 15:51:01 · 695 阅读 · 0 评论 -
easyconnect(mac版)总是初始化问题
遇到问题,首先通过现有的线索进行排查和尝试,如果简单的方法没法解决的时候,我们就需要通过一些特殊手段进行定位了。背景在某一次对mac系统升级并做了一些优化,删除了很多无用的软件,随后无法使用easyconnect 连接公司内网,操作时总是提示The times to init ECAgent当时自己也没在意,以为是系统版本问题,之后也找公司IT协助排查,也没有查到具体原因在排查过程中我也是经历了由浅入深的一个过程,在此做个记录。第一次排查-通过提示根据easyconnect弹出原创 2021-04-05 13:24:29 · 10017 阅读 · 6 评论 -
DevOps之运维平台构建
如今很多人认为devops将彻底取代传统运维,我不这么认为,在我看来devops只是很大程度上的代替了传统运维的手工操作,运维人员只需写好自动化运维脚本,利用自动化工具(zabbix,elk,ansible等)就可以实现自动发布和监控,省去了很多人力。因此Devops能否顺利落地,运维平台的建设将会很重要。本文主要简单介绍下我司的三大运维平台。运维职责运维平台当前我司运维平台主要有3个:持续集成和交付①基于Jenkins持续构建②支持容器化打包和部署③发布平台..转载 2021-03-15 15:23:27 · 3324 阅读 · 0 评论 -
DevOps平台中的自动化部署
基础概念:1、什么是持续集成?持续集成(Continuous Integration)指的是,频繁地将代码集成到主干,以便快速发现错误、防止分支大幅度偏离主干。持续集成的目的,就是在产品快速迭代的同时保持代码质量,它的核心措施主要有两点:1)代码集成到主干之前,必须通过自动化测试,只要有一个测试用例失败,就不能集成。2)通过Code Review、代码质量分析工具对代码质量进行把关,以便确定是否能够集成。Martin Flower说过, “持续集成并不能消除Bug,而是让他们非常容易发现转载 2021-03-15 15:09:36 · 1164 阅读 · 0 评论 -
Kubernetes-Pod/ReplicaSet/Deployment/Service关系
资源之间的关系1)Pod是最小的调度单元,Pod启停容器镜像等; 2)Pod由ReplicaSet控制,ReplicaSet由Deployment控制,然后外部提供服务的是Service。RS—>Pod查看Pod:$ kubectl get pods查看RS:$ kubectl get rs查看Pod详情:$ kubectl describe pods pod_name我们可以通过kubectl describe pods...原创 2021-03-06 12:36:37 · 239 阅读 · 0 评论 -
centos7 安装最新版的docker
1.查看系统要求Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看CentOS的内核版本。uname -a 或者 uname -r[root@centos ~]# uname -r 3.10.0-957.21.3.el7.x86_642.删除旧版本yum remove docker docker-common docker-selinux docker-engine3.安装需要的软件包yum-util 提供yum-config-manager功能,另外两个是dev原创 2021-02-07 19:24:13 · 152 阅读 · 0 评论 -
docker push 到阿里云镜像仓库过程中发生了 denied: requested access to the resource is denied 错误
docker push 到阿里云镜像仓库过程中发生了 denied: requested access to the resource is denied 错误问题发生环境Vagrant 2.2.6 + VirtualBox 6.0.14 docker 19.03.9问题发生情况本人在学习docker 过程,想通过push 命令将本地的image上传到阿里云镜像仓库中去 在执行sudo docker push registry.cn-hangzhou.aliyuncs.com/itcra.转载 2021-02-07 17:04:27 · 1318 阅读 · 0 评论 -
centos7启动jenkins时报错,Caused: hudson.util.AWTProblem,然后在异常的其他信息中包含font等等,那就是缺少一个字体工具
先说解决方案:执行下面的命令再重新启动就行了yum install fontconfig异常信息: SEVERE hudson.util.BootFailure#publish: Failed to initialize Jenkins java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)...转载 2021-02-07 12:33:32 · 735 阅读 · 0 评论 -
使用nexus3.19搭建自己的maven私服
使用nexus3.19搭建自己的maven私服 怎么安装参见CentOS6.9安装Nexus3.19,接下来就是如何配置。打开我们安装后的nexus界面,用admin账号登陆,点击Server administration and configuration按钮: 点击Repository 我们可以看到nexus默认给我建好了一些仓库,其中包括3类:代理proxy,仓库组group和宿主host。 代理用来指向远程仓库的,如中央仓库,但毕...转载 2021-02-06 23:38:08 · 359 阅读 · 0 评论 -
Kubernetes环境配置JVM内存
我们知道JVM在docker容器环境中是无法正确检测到可用内存的遇到问题的项目技术栈为JDK 8 + Spring Boot + Tomcat,部署在docker环境。项目运行过程中出现了java.lang.OutOfMemoryError: Java heap space异常,当时项目的部署文件如下: 1234567891011121314151617181920212223242526272829303132333435原创 2021-01-24 19:21:56 · 5310 阅读 · 2 评论 -
详解k8s零停机滚动发布微服务 - kubernetes
1、前言在当下微服务架构盛行的时代,用户希望应用程序时时刻刻都是可用,为了满足不断变化的新业务,需要不断升级更新应用程序,有时可能需要频繁的发布版本。实现"零停机"、“零感知”的持续集成(Continuous Integration)和持续交付/部署(Continuous Delivery)应用程序,一直都是软件升级换代不得不面对的一个难题和痛点,也是一种追求的理想方式,也是DevOps诞生的目的。2、滚动发布把一次完整的发布过程,合理地分成多个批次,每次发布一个批次,成功后,再发布下一个批次,转载 2021-01-24 11:50:27 · 652 阅读 · 0 评论 -
实践Kong for Kubernetes(K8S)
使用以下安装方法之一安装Kong for Kubernetes:YAML清单 helm KustomizeYAML清单要通过部署Kongkubectl,请使用:kubectl apply -f https://bit.ly/kong-ingress-dbless复制复制重要!这不是生产级部署。根据您的用例调整“参数”:副本:确保您正在运行Kong的多个实例,以防止由于单个节点故障而造成的中断。 性能优化:调整Kong的内存设置,并根据使用情况定制部署。 负载均衡器:确保在.原创 2021-01-23 17:53:28 · 841 阅读 · 0 评论 -
优化nginx-ingress-controller并发性能
这两天遇到一个很有意思的应用场景:有一个业务应用部署在kubernetes容器中,如果将该应用以Kubernetes Service NodePort暴露出来,这时测试人员测得应用的页面响应性能较高,可以达到2w多的QPS;而将这个Kubernetes Service再用Ingress暴露出来,测试人员测得的QPS立马就较得只有1w多的QPS了。这个性能开销可以说相当巨大了,急需进行性能调优。花了一段时间分析这个问题,终于找到原因了,这里记录一下。问题复现问题是在生产环境出现了,不便于直接在生产环境转载 2021-01-22 17:37:27 · 1944 阅读 · 0 评论 -
Kubectl 常用命令大全
Kubectl 常用参数分类基础命令:create,delete,get,run,expose,set,explain,edit# 创建Deployment和Service资源$ kubectl create -f demo-deployment.yaml$ kubectl create -f demo-service.yaml# 根据yaml文件删除对应的资源,但是yaml文件并不会被删除,这样更加高效$ kubectl delete -f demo-deployment.y原创 2021-01-20 10:29:15 · 949 阅读 · 0 评论 -
K8s宣布弃用Docker,千万别慌!
目前,Kubelet 中的 Docker 支持功能现已弃用,并将在之后的版本中被删除。Kubelet 之前使用的是一个名为 dockershim 的模块,用以实现对 Docker 的 CRI 支持。但 Kubernetes 社区发现了与之相关的维护问题,因此建议大家考虑使用包含 CRI 完整实现(兼容 v1alpha1 或 v1)的可用容器运行时。简而言之,Docker 并不支持 CRI(容器运行时接口)这一 Kubernetes 运行时 API,而 Kubernetes 用户一直以来所使用转载 2021-01-02 21:00:57 · 4107 阅读 · 0 评论 -
MySQL8.0.18通过Canal1.1.5数据增量同步至Elasticsearch7.x
IntroductionCanal是基于MySQL二进制日志的高性能数据同步系统 属于阿里巴巴的一个开源项目,基于java实现,整体已经在很多大型的互联网项目生产环境中使用,包括阿里、美团等都有广泛的应用,是一个非常成熟的数据库同步方案,基础的使用只需要进行简单的配置即可,以提供可靠的低延迟增量数据管道。官方文档:https://github.com/alibaba/canal/wiki项目地址:https://github.com/alibaba/canal下载地址:https://githu原创 2020-12-10 19:55:10 · 2213 阅读 · 5 评论 -
[Kong 与 Konga 与 Postgres数据库] 之 Kuberneres 部署
1、Kong的概述Kong是一个clould-native、快速的、可扩展的、分布式的微服务抽象层(也称为API网关、API中间件或在某些情况下称为服务网格)框架。Kong作为开源项目在2015年推出,它的核心价值是高性能和可扩展性。Kong被广泛用于从初创企业到全球5000家公司以及政府组织的生产环境中。如果构建Web、移动或IoT(物联网)应用,可能最终需要使用通用的功能来实现这些应用。Kong充当微服务请求的网关(或侧车),通过插件能够提供负载平衡、日志记录、身份验证、速率限制、转换等能力原创 2020-12-10 15:55:22 · 1023 阅读 · 0 评论 -
实现Canal和Kafka实现MySQL的Binlog实时同步
前提近段时间,业务系统架构基本完备,数据层面的建设比较薄弱,因为笔者目前工作重心在于搭建一个小型的数据平台。优先级比较高的一个任务就是需要近实时同步业务系统的数据(包括保存、更新或者软删除)到一个另一个数据源,持久化之前需要清洗数据并且构建一个相对合理的便于后续业务数据统计、标签系统构建等扩展功能的数据模型。基于当前团队的资源和能力,优先调研了Alibaba开源中间件Canal的使用。这篇文章简单介绍一下如何快速地搭建一套Canal相关的组件。关于Canal简单介绍一下中间件Cana原创 2020-12-09 20:08:36 · 406 阅读 · 0 评论 -
国内拉取google kubernetes镜像
常用镜像仓库DockerHub镜像仓库:https://hub.docker.com/google镜像仓库:https://gcr.io/google-containers/https://gcr.io/kubernetes-helm/https://gcr.io/google-containers/pausecoreos镜像仓库:https://quay.io/repository/elastic镜像仓库:https://www.docker.elastic.co/RedHat镜像仓库转载 2020-12-07 15:03:29 · 1116 阅读 · 0 评论 -
解决Docker启动Tomcat容器,访问404问题
启动Tomcat容器1 docker run -d -p 8888:8080 tomcat查看已经启动的容器docker ps使用8888端口访问Tomcat失败 先查看防火墙状况1 service firewalld status如果防火墙没关闭,先关闭防火墙1 service firewalld stop防火墙关闭时,防火墙的状态如下确定防火墙关闭但访问Tomcat还是失败之后,使用如下命名进入Tomcat的目录1 docker exec -it c11转载 2020-11-29 10:01:03 · 373 阅读 · 0 评论 -
Kubectl 常用命令大全
基础命令:create,delete,get,run,expose,set,explain,editcreate 命令:根据文件或者输入来创建资源# 创建Deployment和Service资源$ kubectl create -f demo-deployment.yaml$ kubectl create -f demo-service.yamldelete 命令:删除资源# 根据yaml文件删除对应的资源,但是yaml文件并不会被删除,这样更加高效$ kubectl del原创 2020-11-28 16:29:21 · 227 阅读 · 0 评论 -
pods处于ContainerCreating状态
一、错误信息创建 rc 之后 pods 起不来,一直处于 ContainerCreating 状态[root@k8s-all-in-one pod-testweb]# kubectl get podsNAME READY STATUS RESTARTS AGEmysql-vmm72 0/1 ContainerCreating 0 2s# 查看pods状态[root@k8s-all-in-one转载 2020-11-28 12:57:11 · 299 阅读 · 0 评论 -
解决kubectl get pods 提示 No resources found
解决方法:1、$ vi /etc/kubernetes/apiserver2、找到这一行 "KUBE_ADMISSION_CONTROL="--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota",去掉ServiceAccount,保存退出。3、重新启动kube-apiserver服务即可 systemctl restar..原创 2020-11-28 12:32:33 · 4407 阅读 · 0 评论 -
k8s启动kube-apiserver错误解决
The error :kube-apiserver.service - Kubernetes API ServerLoaded: loaded (/usr/lib/systemd/system/kube-apiserver.service; enabled)Active: activating (auto-restart) (Result: exit-code) since Mon 2015-10-19 10:33:32 EDT; 7ms agoDocs:https://github.com/Go.原创 2020-11-28 12:21:07 · 6576 阅读 · 1 评论 -
CentOS下GitLab搭建及配置
由于公司业务,需要上Git版本控制。目前市面上比较有名的Git服务提供商,国外有GitHub、BitBucket、GitLab,国内有Coding。 现有的服务商,对于免费的套餐都有一定的限制。比如:GitHub只允许建立免费的开源repository,建立私有的仓库需要收费。BitBucket允许建立无限制的私有项目,不过对于项目中参与的开发人员是有人数限制的,当团队中开发者规模达到一定数量后,需要付费购买相应的套餐。GitLab社区版是免费的,不但能建立免费的私有仓库而且没有数量上限,参与原创 2020-11-21 16:04:56 · 505 阅读 · 0 评论 -
maven私服nexus3.x配置及使用教程
私服是指私有服务器,是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构建。 有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库; 否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。Nexus是一个强大的Maven仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问。 如果使用了公共的Maven仓库服务器,可以从Maven中央仓库下载所需要的构件(Artifact),但这通常不是一个好的做法。 正常做法是在本地架设一个本地M原创 2020-11-21 11:24:23 · 3478 阅读 · 0 评论 -
Kubernetes 部署 SpringCloud应用实践
本文涵盖的主题是:在云原生开发中使用Spring Boot 2.0 使用Spring Cloud Kubernetes专案为所有微服务提供服务发现 使用Kubernetes Config Maps和Secrets将配置设定注入到应用程式Pod中 使用Docker构建应用程式映像并将其使用YAML配置档案部署在Kubernetes上 结合使用Spring Cloud Kubernetes和Zuul代理来公开所有微服务的单个Swagger API文件当您构建微服务环境时,Spring Clo.原创 2020-09-13 19:22:12 · 369 阅读 · 0 评论 -
分布式事务seata nacos安装指南
1. 概述在构建微服务的过程中,不管是使用什么框架、组件来构建,都绕不开一个问题,跨服务的业务操作如何保持数据一致性。2. 什么是分布式事务?首先,设想一个传统的单体应用,无论多少内部调用,最后终归是在同一个数据库上进行操作来完成一向业务操作,如图:随着业务量的发展,业务需求和架构发生了巨大的变化,整体架构由原来的单体应用逐渐拆分成为了微服务,原来的3个服务被从一个单体架构上拆开了,成为了3个独立的服务,分别使用独立的数据源,也不在之前共享同一个数据源了,具体的业务将由三个服务的调用来完原创 2020-08-19 18:43:37 · 709 阅读 · 0 评论 -
利用Mycat实现分库分表、读写分离、主从切换 相关功能
Mycat及MYSQL实例部署情况:Mycat:IP:10.20.8.57,Port:3310/3311MySQL :db1-M1,IP:10.20.8.126,Port:3306db1-M2,IP:10.20.8.126,Port:3307db2-M1,IP:10.25.80.7,Port:3307配置Mycatserver.xml:<!DOCTYPE mycat:server SYSTEM "server.dtd"><mycat:server xmlns:.原创 2020-08-11 19:40:18 · 177 阅读 · 0 评论 -
nginx四层负载均衡配置
nginx四层负载均衡配置代理Mysql集群环境如下:ip 192.168.6.203 Nginx ip 192.168.6.*(多台) Mysql步骤一查看Nginx是否安装stream模块没安装则进行安装 操作步骤如下pkill nginx至此 已成功添加stream模块步骤二配置 mysql负载均衡案例修改Nginx配置文件nginx.conf 内容如下图测试步骤如下后端Mysql需做好读写分离 创建好相应权限的用户 到...转载 2020-08-04 12:52:27 · 964 阅读 · 0 评论 -
linux ssh-copy-id实现ssh免密登陆详情
说明ssh-copy-id命令可以把本地主机的公钥复制到远程主机的 authorized_keys 文件上。authorized_keys文件用来验证 client 。使用ssh-copy-id命令将本地公钥复制到远程主机之后可以实现免密登录远程主机。实例机器: 192.168.1.9 与192.168.1.11两台机器分别在两台机器执行下面操作:一、本地机器上使用ssh-keygen产生公钥私钥对查看公钥私钥对:二、用ssh-copy-id将公钥复制到远...原创 2020-08-03 15:46:53 · 368 阅读 · 0 评论 -
Springboot+Git+Jenkins+Docker实现CI/CD
以Springboot为底,利用Git,jenkins,Docker实现持续集成和持续部署!开发流程下面是常用的开发流程图:我们简单说说这张图:首先我们会将代码文件、测试文件以及Dockerfile都存在代码仓库里,版本控制利用git,这里代码仓库有很多选择,比如github、码云(本次使用)、Coding以及自己搭建的gitlab。然后由持续集成工具进行自动化构建,包括了测试、编译、打包、构建镜像、推送镜像到仓库(有很多选择,如docker官方仓库,时速运、自己搭建的Registry)、.原创 2020-07-31 12:14:21 · 451 阅读 · 0 评论 -
linux操作系统常用命令整理
1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件-a 列出包括.a开头的隐藏文件的所有文件-A 通-a,但不列出"."和".."-l 列出文件的详细信息-c 根据ctime排序显示-t 根据文件修改时间排序2.mv [选项] 源文件或目录 目录或多个源文件 | 移动或重命名文件-b 覆盖前做备份-f 如存在不询问而强制覆盖-i 如存在则询问是否覆盖-u 较新才覆盖-t 将多个源文件移动到统一目录下,目录参数在前,文件参数在后eg:原创 2020-07-11 11:10:41 · 424 阅读 · 0 评论 -
mongodb4.0分片集群安装指南
概念介绍mongodb支持架构有单机(stand-alone)、主从(master-slave)、副本集(replica set)以及分片(sharding), 而最常用的架构莫过于副本集 + 分片。而分片有三大组件,分别为mongos、configsvr、sharding server,他们的功能如下:mongos: 它是前端路由,应用程序由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。它不存储任何数据,只载入configsvr的配置。 configsvr: 它是一个mongod原创 2020-07-04 10:16:54 · 456 阅读 · 0 评论 -
Docker快速安装 Jenkins
环境准备: 操作系统:Centos 7.5 Docker Version:18.09.6下载镜像打开终端,输入docker search命令搜索 Docker Hub 上可用的 Jenkins 镜像:$ docker search jenkinsNAME DESCRIPTION STARS OFFI...原创 2020-06-18 13:16:21 · 387 阅读 · 0 评论 -
CentOS 7.5下Docker Kubernetes1.8.3集群环境搭建
部署环境部署kubernetes1.8.3版本使用两台机器进行操作,一台做为Master节点,一台作为Node节点。部署流程及配置与正式环境下是一致的。两台虚拟机分别分: Kubernetes Master节点:10.0.11.222 Kubernetes Node节点: 10.0.11.221部署软件CentOS:CentOS 7.5Docker:17.03.2-ceKubernetes:1.8.3etcd:3.2.7flannel:v0.7.1...原创 2020-06-18 13:03:05 · 371 阅读 · 0 评论