分布式部署

ceph分布式存储

孤街醉人 提交于 2019-12-04 07:03:29
存储分类: DAS:直连存储 ide线 sata线 usd线 sas线 NAS:网络附加存储 nfs samba ftp SAN:存储区域网络 issci SDS:软件定义存储 ceph ceph组件:OSD存储设备 Monitors集群监控组件 RGW对象存储网关 MDS存放文件系统的元数据 注:montiitors至少需要3台 因为过半原则超过一半几台宕机整个集群都不能用了 例: 有三台机 41(node1) 42 (node2) 43 (node3) 1.部署ceph集群 环境准备 配置yum源 集群几台无密码连接(包括自己免密自己) ssh-keygen for i in 41 42 43 ; do ssh-copy-id 192.168.1.$i ; done /etc/hosts 域名解析 (三台机都做) vim /etc/hosts 192.168.1.41 node1 192.168.1.42 node2 192.168.1.43 node3 for i in 41 42 43 ; do scp /etc/hosts 192.168.1.$i :/etc/hosts ; done 配置NTP服务时间同步 vim /etc/chrony.conf server 192.168.1.254 iburst systemclt restart chronyd for i

spring cloud微服务分布式云架构 - Spring Cloud简介

我的梦境 提交于 2019-12-04 06:43:27
Spring Cloud是一系列框架的有序集合。利用Spring Boot的开发模式简化了分布式系统基础设施的开发,如 服务发现、注册、配置中心、消息总线、负载均衡、断路器、数据监控 等(这里只简单的列了一部分),都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud将目前比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装,屏蔽掉了复杂的配置和实现原理,最终整合出一套简单易懂、易部署和易维护的分布式系统架构平台。 有spring cloud b2b2c电子商务需求的朋友可以加企鹅求求:三五三六二四七二五九 Spring Cloud组成 Spring Cloud的子项目,大致可分成两类: 一类是对现有成熟框架Spring Boot的封装和抽象,也是数量最多的项目; 第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream就是kafka, ActiveMQ这样的角色。开发人员进行 微服务 的实践,第一类子项目就已经足够使用,如: Spring Cloud Netflix   是对Netflix开发的一套分布式服务框架的封装,包括服务的发现和注册,负载均衡、断路器、REST客户端、请求路由等。 Spring Cloud Config   将配置信息中央化保存, 配置Spring Cloud

集成redisson分布式锁

折月煮酒 提交于 2019-12-04 05:44:38
目录 一、redisson是什么 二、为什么要用redisson分布式锁 (一)为什么用锁 (二)为什么用分布式锁 (三)为什么用redisson分布式锁 三、redisson分布式锁怎么用 (一)引入相关jar包 (二)编写配置文件 1、一般spring项目 2、springboot项目 (三)加锁解锁代码 1、加锁 2、解锁 一、redisson是什么 Redisson是架设在redis基础上的一个Java主内存网络,并且是redis官方推荐的。Redisson在基于NIO的Netty框架上,充分利用了redis键值数据库提供的一系列优势,在Java实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的常用工具类。这样就使得原本作为协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和压法大规模分布式系统 的难度。同时结合丰富的分布式服务,更进一步简化了分布式环境中程序相互之间的协作。 我们下面介绍的分布式锁,只是其中的一个应用。 二、为什么要用redisson分布式锁 (一)为什么用锁 锁一般用在并发情况下,我们用抢红包这个场景来分析,假设有100个人抢10个红包,假如现在还剩1个红包,但是有10个人都来抢这之后一个包,因为是并发的所有这10个人抢的时候都判断还剩一个包,但是我们的红包只剩下一个10个人都抢到了

jmeter(二十七)分布式压测注意事项

孤街浪徒 提交于 2019-12-04 04:51:28
之前的博客: jemter(二十三):分布式测试 简略的介绍了利用jmeter做分布式测试的方法,当时只是介绍了背景和原因,以及基本的配置操作,有同学说写得不够详细。 正好今年双十一,我司的全链路压测,也尝试了jmeter分布式压测的手段。这篇博客,介绍下利用jmeter在NGUI模式下进行分布式压测的一些小技巧和注意事项。 一、压测机 1、数量&成本 无论是从成本角度还是维护的难易方面,压测机的数量,适量就好。 举个例子,8C16G的一台服务器,部署jmeter后,根据我个人的测试比对数据,配置≤1500个线程数,最好。太多了性能损耗较大,延时高;太少了又浪费。 2、controller&agent 模拟的并发线程数超过5K,我个人建议留出一台做专门的controller机器,主要是避免agent机器数据上报带来的影响(如果有其他的数据存储+可视化服务,可以忽略)。 3、服务授权 如果压测启动和服务配置都是root权限,那么在linux环境下,需要给jmeter和jmeter-server授权,命令为 chmod 777 jmeter ,授权后,显示如下: 二、服务通信 1、网络 所有的压测机和被测服务,最好在同一个网段内,尽可能减少时延问题(如果不在同一个网段,就需要找运维建立专门的网络通道,这个很浪费)。 2、端口 在分布式压测配置时,需要在controller机器的

MinIO 分布式集群搭建

陌路散爱 提交于 2019-12-04 04:03:15
MinIO 分布式集群搭建 分布式 Minio 可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式 Minio 避免了单点故障。 Minio 分布式模式可以搭建一个高可用的对象存储服务,你可以使用这些存储设备,而不用考虑其真实物理位置。 (1)数据保护 分布式 Minio 采用纠删码(erasure code)来防范多个节点宕机和位衰减(bit rot)。 分布式 Minio 至少需要 4 个节点,使用分布式 Minio 就自动引入了纠删码功能。 纠删码是一种恢复丢失和损坏数据的数学算法, Minio 采用 Reed-Solomon code 将对象拆分成 N/2 数据和 N/2 奇偶校验块。 这就意味着如果是 12 块盘,一个对象会被分成 6 个数据块、6 个奇偶校验块,你可以丢失任意 6 块盘(不管其是存放的数据块还是奇偶校验块),你仍可以从剩下的盘中的数据进行恢复。 纠删码的工作原理和 RAID 或者复制不同,像 RAID6 可以在损失两块盘的情况下不丢数据,而 Minio 纠删码可以在丢失一半的盘的情况下,仍可以保证数据安全。 而且 Minio 纠删码是作用在对象级别,可以一次恢复一个对象,而RAID 是作用在卷级别,数据恢复时间很长。 Minio 对每个对象单独编码,存储服务一经部署,通常情况下是不需要更换硬盘或者修复

部署MooseFS分布式文件系统

点点圈 提交于 2019-12-04 01:50:01
MooseFS是一个分布式文件系统,其本身具有高可用性,高拓展性,开放源代码,高容错,等在数据的读写性能方面,通过dd测试,MooseFS也就是写入的速度稍微好于NFS,读上没有差别. MooseFS的文件系统结构体系可分为以下四种角色,分别对应不同的功能: 1.管理服务器managing server (master) 2.元数据日志服务器Metalogger server(Metalogger) 3.数据存储服务器data servers (chunkservers) 4.客户机挂载使用client computers 下面我们分别编译安装MFS的每个组件,实现一个企业环境的分布式文件系统. 实验环境与IP分配 [主机类型] [主机IP] [主机作用] Master-Server 192.168.22.195 主控服务器 MetaLogger-Server 192.168.22.191 备份服务器 Cunk-Server 192.168.22.192 存储节点1 Cunk-Server 192.168.22.193 存储节点2 Client 192.168.22.194 挂载客户端 Master-Server配置 管理服务器managing server (master):负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复,多节点拷贝单个机器管理整个文件系统

微服务架构——分布式锁探索

随声附和 提交于 2019-12-04 01:26:27
本问主要针对zookpeer、redis实现分布式锁进行探讨, 文中有什么不严谨之处,欢迎批评指正。 redis方面:有开源redisson的jar包供你使用。 zookpeer方面:有开源的curator的jar包供你使用 需要说明的是,Google有一个名为Chubby的粗粒度分布锁的服务,然而,Google Chubby并不是开源的,我们只能通过其论文和其他相关的文档中了解具体的细节。值得庆幸的是,Yahoo!借鉴Chubby的设计思想开发了Zookeeper,并将其开源,因此本文不讨论Chubby。至于Tair,是阿里开源的一个分布式K-V存储方案。我们在工作中基本上redis使用的比较多,讨论Tair所实现的分布式锁,不具有代表性。 因此,主要分析的还是redis和zookpper所实现的分布式锁。 1、使用分布式锁的目的: 无外乎就是保证同一时间只有一个客户端可以对共享资源进行操作。通俗的讲,即:一个方法在高并发情况下的同一时间只能被同一个线程执行! 使用分布式锁的原因: (1)提升效率 采取锁定可以避免不必要地执行相同的工作两次(例如,一些昂贵的计算)。如果锁定失败并且两个节点最终完成相同的工作,结果是成本略有增加(最终为云服务支付的费用比您原本要多5美分)或稍有不便(例如用户最终)两次收到相同的电子邮件通知)。 (2)提升正确性

浅谈Redis分布式锁的进化史

南笙酒味 提交于 2019-12-04 01:24:20
近两年来微服务变得越来越热门,越来越多的应用部署在分布式环境中,在分布式环境中,数据一致性是一直以来需要关注并且去解决的问题,分布式锁也就成为了一种广泛使用的技术,常用的分布式实现方式为Redis,Zookeeper,其中基于Redis的分布式锁的使用更加广泛。 但是在工作和网络上看到过各个版本的Redis分布式锁实现,每种实现都有一些不严谨的地方,甚至有可能是错误的实现,包括在代码中,如果不能正确的使用分布式锁,可能造成严重的生产环境故障,本文主要对目前遇到的各种分布式锁以及其缺陷做了一个整理,并对如何选择合适的Redis分布式锁给出建议。 各个版本的Redis分布式锁 V1.0 tryLock(){ SETNX Key 1 EXPIRE Key Seconds } release(){ DELETE Key } 这个版本应该是最简单的版本,也是出现频率很高的一个版本,首先给锁加一个过期时间操作是为了避免应用在服务重启或者异常导致锁无法释放后,不会出现锁一直无法被释放的情况。 这个方案的一个问题在于每次提交一个Redis请求,如果执行完第一条命令后应用异常或者重启,锁将无法过期,一种改善方案就是使用Lua脚本(包含SETNX和EXPIRE两条命令),但是如果Redis仅执行了一条命令后crash或者发生主从切换,依然会出现锁没有过期时间,最终导致无法释放。 另外一个问题在于

Redis分布式锁进化史

。_饼干妹妹 提交于 2019-12-04 01:12:42
近两年来微服务变得越来越热门,越来越多的应用部署在分布式环境中,在分布式环境中,数据一致性是一直以来需要关注并且去解决的问题,分布式锁也就成为了一种广泛使用的技术,常用的分布式实现方式为Redis,Zookeeper,其中基于Redis的分布式锁的使用更加广泛。 但是在工作和网络上看到过各个版本的Redis分布式锁实现,每种实现都有一些不严谨的地方,甚至有可能是错误的实现,包括在代码中,如果不能正确的使用分布式锁,可能造成严重的生产环境故障,本文主要对目前遇到的各种分布式锁以及其缺陷做了一个整理,并对如何选择合适的Redis分布式锁给出建议。 各个版本的Redis分布式锁 V1.0 tryLock(){ SETNX Key 1 EXPIRE Key Seconds } release(){ DELETE Key } 这个版本应该是最简单的版本,也是出现频率很高的一个版本,首先给锁加一个过期时间操作是为了避免应用在服务重启或者异常导致锁无法释放后,不会出现锁一直无法被释放的情况。 这个方案的一个问题在于每次提交一个Redis请求,如果执行完第一条命令后应用异常或者重启,锁将无法过期,一种改善方案就是使用Lua脚本(包含SETNX和EXPIRE两条命令),但是如果Redis仅执行了一条命令后crash或者发生主从切换,依然会出现锁没有过期时间,最终导致无法释放。 另外一个问题在于

Redis 分布式锁的前世今生

不羁岁月 提交于 2019-12-04 01:12:09
Redis分布式锁进化史 近两年来微服务变得越来越热门,越来越多的应用部署在分布式环境中。 在分布式环境中,数据一致性是一直以来需要关注并且去解决的问题,分布式锁也就成为了一种广泛使用的技术 常用的分布式实现方式为Redis,Zookeeper,其中基于Redis的分布式锁的使用更加广泛。 但是在工作和网络上看到过各个版本的Redis分布式锁实现,每种实现都有一些不严谨的地方,甚至有可能是错误的实现,包括在代码中 如果不能正确的使用分布式锁,可能造成严重的生产环境故障,本文主要对目前遇到的各种分布式锁以及其缺陷做了一个整理,并对如何选择合适的Redis分布式锁给出建议。 各个版本的Redis分布式锁 V1.0 这个版本应该是最简单的版本,也是出现频率很高的一个版本,首先给锁加一个过期时间操作是为了避免应用在服务重启或者异常导致锁无法释放后,不会出现锁一直无法被释放的情况。 这个方案的一个问题在于每次提交一个Redis请求,如果执行完第一条命令后应用异常或者重启,锁将无法过期 一种改善方案就是使用Lua脚本(包含SETNX和EXPIRE两条命令),但是如果Redis仅执行了一条命令后crash或者发生主从切换,依然会出现锁没有过期时间,最终导致无法释放。 另外一个问题在于,很多同学在释放分布式锁的过程中,无论锁是否获取成功,都在 finally 中释放锁,这是一个锁的错误使用