高可用

架构设计文档

旧巷老猫 提交于 2019-11-25 23:45:46
很多同学问做架构设计,怎么才能写出比较好的文档。其实很简单,都是有套路的,今天刚好借这个机会,和大家分享下一般做架构设计该怎么写文档。 背景 首先介绍下项目背景、基于什么原因需要需求。 如果是新产品,描述下产品启动的原因和背景、产品定位 如果是升级版本,描述升级需求、对原系统的影响,以及到达的预期效果 名词解释 文档中出现新的或者不常见的名词、概念给出定义和解释。 设计目标 实现功能 大致描述系统本身的功能性需求,不需描述外部依赖的系统。功能点之间的层级和关联关系要明晰。这里仅描述功能,不需要涉及实现方案、功能取舍等问题。 性能指标 描述系统性能需求。建议分条列出量化的性能指标,比如响应时间、超时率、资源占用、运行周期等。 系统环境 相关软件及硬件 在这里加入系统所需的软、硬件, 包括操作系统, 机器型号及配置要求。建议采用表格形式列出,最好还能规划出服务器和软件构件的部署图。 数据规模预估 通过经验或者调研,对数据规模进行估计,包括用户量、数据量、带宽消耗及增长速度等方面。 设计思路 描述系统设计中需要解决或考虑的关键问题或难点问题,解决这些问题可能有不同方案, 在这里加入方案设计的选择, 折衷及解释,并在后面的系统设计中对选中的方案给出进一步阐述。 建议分类列出,比如性能、可扩展性、安全性、服务稳定性、反作弊、复用等方面。建议使用调研数据支持设计方案的选择。 系统设计 基础介绍

01.服务注册中心

六眼飞鱼酱① 提交于 2019-11-25 23:23:26
服务治理:Spring Cloud Eureka 什么是服务治理 服务治理可以说是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册与发现。 为什么需要服务治理模块 在最初构建微服务系统的时候可能服务并不多,我们可以通过做一些静态配置来完成服务调用 此时看着一切都还正常。 随着项目逐渐接近尾声,维护人员需要维护的服务越来越多,越来越复杂,最终形成大量的配置文件,维护将会变得越来越困难。此时,微服务应用实例自动化管理框架变得至关重要。 服务治理框架需要完成什么任务 ● 服务注册:在服务治理框架中,通常都会构建一个注册中心,每个服务单元向注册中心登记自己提供的服务,将主机与端口号、版本号、通信协议等一些附加信息告知注册中心,注册中心按服务名分类组织服务清单。 ● 服务发现:我们的所有服务都已经注册到注册中心,并且在注册中心是按照服务名分类,并且由注册中心维护者服务的具体位置。所以调用方需要调用某个服务时,需要先和注册中心咨询,注册中心会返回被调用方服务的所有具体位置,调用方在根据某种轮询策略选择一个具体位置进行服务调用。 Netflix Eureka   Spring Cloud Eureka,使用Netflix Eureka来实现服务注册与发现,它既包含了服务端组件,也包含了客户端组件。 Eureka服务端   Eureka服务端,我们也称为服务注册中心

kuberenetes 的多节点集群与高可用配置

久未见 提交于 2019-11-25 23:11:51
kuberenetes 的多节点集群与高可用配置 标签(空格分隔): kubernetes系列 一: kubernetes master 节点的 高可用 二: 配置nginx 服务器 三: 配置nginx 的LB 的 keepalived 高可用 一: kubernetes master 节点的 高可用 kubernetes 的多master集群架构 kubernetes 高可用主要在于apiserver 部署master01 IP 地址: 192.168.100.12 在 192.168.100.12 部署与 master01 一样的 服务 scp -r /opt/kubernetes/ root@192.168.100.12:/opt/ scp -r /opt/etcd/ root@192.168.100.12:/opt/ scp /usr/bin/kubectl root@192.168.20.12:/usr/bin/ scp /usr/lib/systemd/system/kube-* root@192.168.100.12:/usr/lib/systemd/system/ 修改 配置文件 cd /opt/kubernetes/cfg vim kube-apiserver --- --bind-address=192.168.100.12 --advertise

LVS+Keepalived高可用群集

吃可爱长大的小学妹 提交于 2019-11-25 21:40:20
LVS+Keepalived高可用群集 概述: keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能------判断LVS负载调度器、节点服务器的可用性,及时隔离斌替换为新的服务器,当故障主机恢复后将重新加入群集。 Keeplived采用VRRP(虚拟路由冗余协议)热备份协议,以软件的方式实现Linux服务器中的多级热备功能。 目录 第一部分 环境准备 第二部分 使用Keepalived搭建双机热备 第三部分 配置Web节点服务器 第四部分 测试LVS+Keepalived高可用群集 第一部分 环境准备 一:调度器两台(双机热备) 系统:Linux—CentOS 7.4 IP地址:192.168.40.21(主) IP地址:192.168.40.22(备) 二:Web服务器两台 系统:Linux—CentOS 7.4 IP地址:192.168.40.15(SERVER AA) IP地址:192.168.40.20(SERVER BB) 三:客户端电脑一台:以真机为例,测试用 IP地址:192.168.40.12 第二部分 使用Keepalived搭建双机热血 第一步:配置主调度器 [root@localhost ~]# modprobe ip_vs //加载ip_vs模块 [root@localhost ~]# rpm -ivh

Kubernetes容器云平台实践

浪子不回头ぞ 提交于 2019-11-25 21:39:41
Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。伴随着云原生技术的迅速崛起,如今Kubernetes 事实上已经成为应用容器化平台的标准,越来越受到企业的青睐,在生产中也应用的也越来越广泛。 我们的容器平台建设从2016年开始,大致经历了探索预研、体系建设和平台落地这样三个阶段。 下面就从Kubernetes的网络、存储、集群管理和监控与运维几个方面来分享下我们容器云平台建设走过的历程,希望给大家一些思考和启发。 一、 kubernetes网络 容器网络发展到现在,已经是双雄会的格局。双雄会其实指的就是Docker的CNM和Google、CoreOS、Kuberenetes主导的CNI。首先明确一点,CNM和CNI并不是网络实现,他们是网络规范和网络体系,从研发的角度他们就是一堆接口,你底层是用Flannel也好、用Calico也好,他们并不关心,CNM和CNI关心的是网络管理的问题。 网络需求调研发现,业务部门主要关注以下几点:1、容器网络与物理网络打通2、速度越快越好3、改动越少越好4、尽可能少的风险点。 容器的网络方案大体可分为协议栈层级、穿越形态、隔离方式这三种形式 协议栈层级:二层比较好理解,在以前传统的机房或虚拟化场景中比较常见,就是基于桥接的 ARP+MAC 学习,它最大的缺陷是广播。因为二层的广播

没有宫廷内斗,数据库界的延禧攻略

那年仲夏 提交于 2019-11-25 21:07:31
各位老铁们,你们有没有想老张,最近老张的才华被工作的繁忙所限制了,所以一直没时间更博,今儿个时隔数日我们终于再次见面啦(很开心)!最近有部特别火的宫廷戏,不知道大家有没有看,剧名叫做《延禧攻略》,讲述得是一个宫女,一路过关斩将,最后成为皇上最宠爱的令贵妃的故事。加上我本人巨爱这类题材,所以痴迷得不得了。(好像暴露了自己没有更博的真正原因哈哈)。宫廷类的剧,都是后宫嫔妃之间的尔虞吾诈,勾心斗角,有你没我,有我没你的残酷事实。胜者为王,败者为寇这种思想好像从古代就一直延续到今日。非要分出个胜负,分出个谁好,谁坏才罢休。 在数据库领域也会有此类问题,老张我混迹开源数据库圈多年。MySQL数据库占领着开源数据库的头把交椅,MongoDB占领着NoSQL数据库的第一位。我们来看下数据库的整体排名情况; 两者都是第一,所有总会拿来比较。也会经常被人问及到诸如此类的问题MongoDB4.0已经问世了,而且支持事务了,是不是将来可以取代MySQL了。MySQL和MongoDB哪个数据库好用啊。今天老张想通过这篇文章,带着大家全方位解读MySQL与MongoDB的区别。让有困惑的老铁们明白,没有谁替代谁,只有哪个场景更适合谁。 我们从下面四个方向依次阐明两者的区别。只有更了解彼此,让能更好地利用它们的功能性。 第一部分:数据库概述 我们先来了解一下MySQL这个数据库;