DevOps一、DevOps介绍软件开发最开始是由两个团队组成:
开发计划由开发团队从头开始设计和整体系统的构建。需要系统不停的迭代更新。
运维团队将开发团队的Code进行测试后部署上线。希望系统稳定安全运行。
这看似两个目标不同的团队需要协同完成一个软件的开发。
在开发团队指定好计划并完成coding后,需要提供到运维团队。
运维团队向开发团队反馈需要修复的BUG以及一些需要返工的任务。
这时开发团队需要经常等待运维团队的反馈。这无疑延长了事件并推迟了整个软件开发的周期。
会有一种方式,在开发团队等待的时候,让开发团队转移到下一个项目中。等待运维团队为之前的代码提供反馈。
可是这样就意味着一个完整的项目需要一个更长的周期才可以开发出最终代码。
基于现在的互联网现状,更推崇敏捷式开发,这样就导致项目的迭代速度更快,但是由于开发团队与运维团队的沟通问题,会导致新版本上线的时间成本很高。这又违背的敏捷式开发的最初的目的。
那么如果让开发团队和运维团队整合到成一个团队,协同应对一套软件呢?这就被称为DevOps。
DevOps,字面意思是Development &Operati ...
问题描述Caused by: java.lang.UnsupportedClassVersionError: org/sonarsource/scanner/maven/SonarQubeMojo has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
处理方式在项目的pom.xml中添加plugin配置
12345<plugin> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>3.11.0.3 ...
解决SSH: Transferred 0 file(s)Jenkins搭建测试环境,出现解决SSH: Transferred 0 file(s)问题
解决办法查看此项目的工作空间
他存在多层才能到jar包
所以在ssh配置时,千万要注意,Source files与Remove prefix对应,如:
最后问题解决
4.1.搭建分片集群主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决:
海量数据存储问题
高并发写的问题
使用分片集群可以解决上述问题,如图:
分片集群特征:
集群中有多个master,每个master保存不同数据
每个master都可以有多个slave节点
master之间通过ping监测彼此健康状态
客户端请求可以访问集群任意节点,最终都会被转发到正确节点
具体搭建流程参考:Redis集群多种方法搭建
4.2.散列插槽4.2.1.插槽原理Redis会把每一个master节点映射到0~16383共16384个插槽(hash slot)上,查看集群信息时就能看到:
数据key不是与节点绑定,而是与插槽绑定。redis会根据key的有效部分计算插槽值,分两种情况:
key中包含”{}”,且“{}”中至少包含1个字符,“{}”中的部分是有效部分
key中不包含“{}”,整个key都是有效部分
例如:key是num,那么就根据num计算,如果是{itcast}num,则根据itcast计算。计算方式是利用CRC16算法得到一个hash值, ...
Redis集群伸缩,转移插槽失败1.现象1234567[ERR] Nodes don't agree about configuration!>>> Check for open slots...[WARNING] Node 192.168.206.129:7004 has slots in importing state 0.[WARNING] The following slots are open: 0.>>> Check slots coverage...[OK] All 16384 slots covered.*** Please fix your cluster problems before rebalancing
2.解决方案登录对应IP+端口的Redis实例以上为例,则我登录:
1redis-cli -c -p 7004
3.执行数据取消slots迁移错误日志中,有个非常重要的信息:
Node 192.168.206.129:7004 has slots in importing state 0.
其中这个stat ...
Redis哨兵Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。
3.1.哨兵原理3.1.1.集群结构和作用哨兵的结构如图:
哨兵的作用如下:
监控:Sentinel 会不断检查您的master和slave是否按预期工作
自动故障恢复:如果master故障,Sentinel会将一个slave提升为master。当故障实例恢复后也以新的master为主
通知:Sentinel充当Redis客户端的服务发现来源,当集群发生故障转移时,会将最新信息推送给Redis的客户端
3.1.2.集群监控原理Sentinel基于心跳机制监测服务状态,每隔1秒向集群的每个实例发送ping命令:
•主观下线:如果某sentinel节点发现某实例未在规定时间响应,则认为该实例主观下线。
•客观下线:若超过指定数量(quorum)的sentinel都认为该实例主观下线,则该实例客观下线。quorum值最好超过Sentinel实例数量的一半。
3.1.3.集群故障恢复原理一旦发现master故障,sentinel需要在salve中选择一个作为新的master,选择依据是这样的:
...
官方更新记录【增加】增加【网站】-【HTML项目】
【优化】优化Docker模块使用体验
【优化】优化文件压缩和解压的速度
【修复】修复在上一版本中出现的所有已知问题
开心版更新记录1.在 PHP切换页面,出现报错弹窗属于正常情况,是因爲没安装 企业插件 “PHP网站安全告警” , 安装了在打开就不会报错了!
2.在 安全-SSH管理-SSH登录日志 以及 安全-入侵防御 这2个页面出现报错的属于正常情况,是因爲没安装 企业插件 “堡塔防入侵” , 安装了在打开就不会报错了!
3.如果发现nignx安装不上,是因爲你开啓了“堡塔防入侵” 关闭就可以安装了!
安装命令**Centos安装命令**(默认安装是 8.0.1 直接在线升级 8.1.0):
1yum install -y wget && wget -O install.sh http://io.bt.sy/install/install_6.0.sh && sh install.sh
试验性Centos/Ubuntu/Debian安装命令 独立运行环境(py3.7) 可能存在 ...
1.脚本如下12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788#!/bin/bash# 颜色定义GREEN='\033[0;32m'YELLOW='\033[1;33m'NC='\033[0m' # No Color# 获取本机IP地址IP_ADDRESS=$(hostname -I | awk '{print $1}')# 进度函数progress() { local percent=$1 local description=$2 printf "${YELLOW}[%-50s] %d%%${NC}\n" $(print ...
1. 前言
注意,repl_backlog只针对部分复制(Partial Replication),而非全量复制。
注意REdis的主节点把所有从节点也当作一个Client看待,正常的数据同步并不涉及repl_backlog。当从节点断开重连,这个时候repl_backlog的作用就体现出来了。截至到5.0.5版本,从节点重启用不上repl_backlog,原因是从节点没有保存repl_backlog的信息,无法实现部分同步,但可少量改动REdis源代码,实现从节点重启后的部分复制。
正常情况下,主节点会往从节点连接缓冲区写一份数据,同时往repl_backlog也写一份数据,所有从节点共享同一份repl_backlog,因此可以考虑repl_backlog配置大一点,以容忍从节点更长时间失联。
从节点向主节点发送命令PSYNC,触发部分复制。
2.repl_backlog原理master怎么知道slave与自己的数据差异在哪里呢?这就要说到全量同步时的repl_baklog文件了。
这个文件是一个固定大小的数组,只不过数组是环形,也就是说角标到达数组末尾后,会再次从0开始 ...
1.搭建主从架构单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。
具体搭建流程参考:Redis集群多种方法搭建
2.主从数据同步原理2.1.全量同步
replicaof用于追随某个节点的redis,被追随的节点为主节点,追随的为从节点。
注意,repl_backlog只针对部分复制(Partial Replication),而非全量复制。
主从第一次建立连接时,会执行全量同步,将master节点的所有数据都拷贝给slave节点,流程:
这里有一个问题,master如何得知salve是第一次来连接呢??
有几个概念,可以作为判断依据:
Replication Id:简称replid,是数据集的标记,id一致则说明是同一数据集。每一个master都有唯一的replid,slave则会继承master节点的replid
offset:偏移量,随着记录在repl_baklog中的数据增多而逐渐增大。slave完成同步时也会记录当前同步的offset。如果slave的offset小于master的offset,说明sla ...

![DevOps搭建(一)-Code阶段[Git,GitLab]](https://cdn.jsdelivr.net/gh/LisianthusW/pic_bed@main/images/2024/07/24/15-17-55-2021-11-23_175935-789003.png)




