架构师之路
架构师之路
京城一十三
你在凝视深渊的时候 深渊也在凝视着你
展开
-
ETCD-节点挂掉会怎样?
今天没别的意思,就是想折腾下ETCD集群如果出现故障后会咋样,随便玩玩。0.环境是,三台独立的ubuntu机器,搭建的一个三节点的etcd集群。1.先看下正常状态下的一组操作。2.直接干掉一个节点,但是不是主节点。此时在活着的两台机器上执行 etcdctl member list 都是这个结果然后三台分别执行etcdctl endpoint hea...原创 2020-01-15 00:16:07 · 5770 阅读 · 2 评论 -
ETCD 集群部署
0.测试环境 Linux(ubuntu18.04)*3 etcd 3.x 192.168.0.104 节点1 192.168.0.107 节点2 192.168.0.108 节点31.安装,可以直接下载二进制,也可以直接apt安装,这里直接apt安装(三个节点都要安装) apt-get update //更新apt...原创 2020-01-12 20:44:54 · 914 阅读 · 0 评论 -
etcd权限控制
ETCD权限控制 有两个概念,一个是用户user,另一个是角色role。用户可以绑定多个角色,而每个角色对应着多组权限控制,权限包括 读、写、读写。这样理解(角色就是包含多个路径权限对儿): role1 /x/a read /x/b write ... role2 /x/c write role3 /x/* readwriteuser 可以...原创 2020-01-09 00:14:46 · 1846 阅读 · 0 评论 -
etcd常用命令
设置环境变量,版本3,etcdctl的版本2和版本3并不兼容。export ETCDCTL_API=3增、查、删etcdctl put /testdir/testkey "Hello world1"etcdctl get /testdir/testkeyetcdctl del /testdir/testkey可以把key理解成目录etcdctl put /testdir/tes...原创 2020-01-07 23:12:22 · 5022 阅读 · 0 评论 -
etcd
etcd是CoreOS团队发起,主要用于管理配置信息和服务发现(Service Discovery)的项目。目标是构建一个高可用的分布式键值(key-value)数据库。etcd设计时重点考虑如下四点:1.简单:定义良好、面向用户的API。2.安全:支持HTTPS方式访问。3.快速:支持并发10k/s的写操作。4.可靠:支持分布式结构,基于Raft的一致性算法。...原创 2020-01-06 23:19:46 · 2791 阅读 · 0 评论 -
docker 集群中文件挂载的问题
假如说在一个三节点的集群上执行docker service create --replicas 2-p 80:80 --name nginx nginx:1.13.7-alpine然后访问三个节点的任意一个ip都会看到nginx的欢迎界面。nginx的默认index.html路径在/usr/share/nginx/html/index.html假如说现在要进行文件挂载,也就...原创 2020-01-05 23:59:37 · 559 阅读 · 0 评论 -
Docker 修改运行中的容器端口映射
如果用docker run启动容器的时候发现自己忘记指定 -p 进行端口映射了,可以采取如下三种方式来增加端口映射:1.第一种是最无脑的方式,直接删除当前容器,然后用原镜像重新跑一个新的容器。简单暴力,但是如果是需要配置的东西过多的话,这样反而会比较麻烦,而且这个时候是新的容器,操作不当,可能丢失某些重要的状态或者数据。用commit的方式把当前容器重新打包成一个新的镜像,相比于1,好处是不...原创 2020-01-05 22:41:26 · 2702 阅读 · 1 评论 -
Docker Cgroups
Docker中利用namespace来做权限控制,用cgroups来做资源控制,这两个都是非常重要的,下面是整理了一些关于cgroups相关的。cgroups全称control groups ,是Linux内核提供的一种机制,用来限制、控制与分离一个进程组的资源(如CPU、内存、磁盘输入输出等)。cgroups最初的目标是为资源管理提供的一个统一的框架,即整合现有的cpuset等子系统,也...原创 2020-01-04 21:27:11 · 924 阅读 · 0 评论 -
Docker 底层实现
Docker底层实现(一些底层原理)Docker底层的核心技术包括Linux上的命名空间(Namespace)、控制组(Control groups)、Union文件系统(Union file systems)和容器格式(Container format)。传统的虚拟机通过在宿主主机中运行hypervisor来模拟一整套完整的硬件环境系统提供给虚拟机的操作系统。虚拟机系统看到的环境是可限制...原创 2020-01-04 17:28:56 · 498 阅读 · 0 评论 -
MySql各引擎特点和性能测试
Mysql为什么要分很多引擎:MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。引擎是真对于表的,在创建表的时候可以直接指定使用的引擎,例如:也可以通过配置文件里直接修改默认引擎:加上这条...原创 2019-12-26 17:04:30 · 518 阅读 · 0 评论 -
redis批量操作及性能分析
redis批量操作及性能分析用过redis的小伙伴都知道,这东西是C/S的,就单纯的ser key vvv 就要走一次TCP,记得官方是说redis的qps将近10W,这...我不太敢相信,一秒钟之内对一个服务10W次TCP会啥样,当然可以走集群负载均衡,把Redis分片了,但是分片的话又会设计到很多东西,之前我整理过,想了解的看下这: https://blog.csdn.net/u01376...原创 2019-12-24 00:35:35 · 1210 阅读 · 0 评论 -
Docker Swarm服务发现和负载均衡原理
Docker Swarm服务发现和负载均衡原理Docker使用的是Linux内核iptables和IPVS的功能来实现服务发现和负载均衡。Iptables是Linux内核中可用的包过滤技术,可根据数据包的内容进行分类、修改和转发决策。IPVS是Linux内核中可用的传输级负载均衡。本地创建一个集群环境,我本地有三节点集群环境:客户端镜像:registry.cn-h...原创 2019-12-22 23:42:28 · 1483 阅读 · 0 评论 -
负载均衡-基本概念
负载均衡(Load Balance) 把任务分摊到多个操作单元上进行执行。分类: 1.软/硬件负载均衡 软件:是直接通过软件来进行负载均衡,比如nginx或者caddy里面都可以直接配置反代来实现负载均衡,还有一些专门的工具,比如DNS Load Balance等,linux上IPVS也有这个功能。好处是方便简单,坏处是均衡软件本身也会消耗一定的资源(常见的有DN...原创 2019-12-22 16:21:29 · 455 阅读 · 0 评论 -
Docker Swarm mode与滚动升级
Swarm mode与滚动升级Swarm里面有个很好的姿势,就是可以动态的更新某个服务对应的镜像,已达到滚动升级的目的,而不是重新制作这个服务,并且重新制作的话不光麻烦,还不好管理,swarm的这个滚动升级是可以直接通过替换镜像来升级,之后还可以查看记录,并且随时切换到任何一个镜像上。还是比较香的。其实是用的 docker service update 里面的那个 --image 其他参数...原创 2019-12-22 08:03:40 · 497 阅读 · 0 评论 -
Docker Swarm集群config集中管理配置文件
在Swarm集群中管理配置数据(跟secret很像)传统配置文件管理姿势是 放入镜像、设置环境变量、或者是volume动态挂载,会降低镜像的通用性,维护起来也麻烦,17.06版本后的docker支持统一 docker config子命令管理集群重的配置信息,无需将配置文件放入镜像或者挂载到容器中就可以实现对服务的配置。PS:config 仅能在Swarm集群中使用(这个地方和secret不...原创 2019-12-22 04:46:57 · 2627 阅读 · 3 评论 -
Docker Swarm集群secrets中管理敏感数据
在Swarm集群中管理敏感数据以往管理敏感数据的姿势通常是 密钥放镜像中、设置环境变量、volume动态挂载等。Docker目前提供了secrets管理功能,用户可以在Swarm集群中安全地管理密码、密钥证书等铭感数据,并允许在多个Docker容器实例之间共享访问指定的敏感数据。Ps: secret 可以在Docker Compose中使用。创建secretopenssl r...原创 2019-12-21 20:02:10 · 573 阅读 · 0 评论 -
Docker 集群 图形化显示 Visualizer
今天无意中看到了这个东西Visualizer,功能是可以可视化的去观察展示swarm集群里面个节点的信息情况,使用起来很方便。这里整理一下:我先部署一个三节点的swarm集群:然后在整个简单的nginx,开7个服务,让三个node节点都跑起来。docker service create --replicas 3 -p 80:80 --name nginx nginx:1.13.7-...原创 2019-12-20 23:51:03 · 2824 阅读 · 0 评论 -
redis-集群分片
Redis 分区分区是分割数据到多个Redis实例的处理过程,因此每个实例只保存key的一个子集。分区的优势1.通过利用多台计算机内存的和值,允许我们构造更大的数据库。2.通过多核和多台计算机,允许我们扩展计算能力;通过多台计算机和网络适配器,允许我们扩展网络带宽。分区的不足1.redis的一些特性在分区方面表现的不是很好:2.涉及多个key的操作通...原创 2019-12-20 18:16:52 · 362 阅读 · 0 评论 -
区分docker stack/service/task
//关系如下stack --> service --> task(container)//常用命令1.用compose部署或更新:docker stack deploy -c docker-compose.yml -c docker-compose.override.yml <stack_name>ps:如果需要自动pull私有的dockerhub,请添加...原创 2019-12-20 10:25:08 · 793 阅读 · 0 评论 -
打包caddy为docker镜像
打包caddy为docker镜像,可以在这个基础上做服务入口 gateway或者是负载均衡配置入口等一些操作,下面是打包基本镜像的流程,实际使用可以把这个镜像作为基本镜像,或者是直接在这个结构上加东西,然后打包出来一个项目镜像(下面是用ubuntn为例)。先去caddy官网下载对应系统的版本的caddy可执行文件,下载解压后会有很多东西,只要caddy文件就行。官网: https://ca...原创 2019-12-19 21:21:53 · 1053 阅读 · 0 评论 -
Docker Swarm 用compose部署WordPress
Swarm集群中也是可以使用docker-compose.yml文件关于compose不知道的可以看这里:https://blog.csdn.net/u013761036/article/details/103484441下面是部署WordPress先是创建docker-compose.yml文件(注意格式 注意格式 注意格式,yml文件改了一个多小时。哎!)vers...原创 2019-12-19 00:29:02 · 342 阅读 · 0 评论 -
Caddy-基于go的微型serve用来做反向代理和Gateway
1.简单配置2.go实现,直接一个二进制包,没依赖。3.默认全站https常用 反向代理,封装多端口gateway使用:启动直接执行二进制文件 caddy 就行 根据输出信息直接https://caddyserver.com/对应系统下载,解压得到caddy二进制。直接用它就ok(我只把caddy单独拿出来用,其他的都删除了)访问http://127...原创 2019-12-17 18:00:29 · 505 阅读 · 0 评论 -
Docker Swarm删除节点
节点上的主机如果想离开的话,可以自己直接执行docker swarm leave然后你可以发现,原本跑在自己上面的容器被转移到别的容器上了。此时如果在manager节点上docker node ls看的话,这个节点已经Down了。然后访问下这个节点的服务,也是理所当然的失败想加入回来就重新JOIN一下但此时注意两点,第一。对于manager来说之前的...原创 2019-12-17 00:02:42 · 1531 阅读 · 0 评论 -
Docker Swarm集群搭建
Docker Swarm提供Docker容器集群服务,可以将多个Docker主机封装为单个单行的虚拟Docker主机,快速打造一套容器云平台。DockerSwarm提供很多新特性,如 具有容错能力的去中心化设计、内置服务发现、负载均衡、路由网络、动态伸缩、滚动更新、安全传输等。必须弄清楚的几个基本概念节点:运行Docker的主机可以主动初始化一个Swa...原创 2019-12-16 00:11:47 · 417 阅读 · 0 评论 -
Docker Machine-Windows
如果你本地window上装的是Docker Deskto,并且一直正常使用,那你可以直接跳转到mark13 【所搜下mark13跳过去】注意如下姿势是错误的Windows上安装VM虚拟机,虚拟机里装Linux,所有的操作都在Linux里面操作,如果是基本的docker学习和docker-compose项目还没啥影响,当时如果是部署集群的时候涉及到docker-machin的话会有一个大坑。...原创 2019-12-15 15:54:13 · 317 阅读 · 0 评论 -
Docker Compose
Compose负责实现对Docker容器集群的快速编排。定位是 定义和运行多个Docker容器的应用,前身是Fig。Compose允许用户通过单一docker-compose.yml模板文件(YAML格式)来定义一组相关的应用容器为一个项目。通过子命令对项目中的一组容器进行生命周期管理。Compose中两个重要概念:服务(service):一个应用的容器,实际上可以包含若干运行相...原创 2019-12-10 22:50:45 · 365 阅读 · 0 评论 -
Docker网络配置进阶
Docker启动会默认创建docker0虚拟网桥,是Linux的一个bridge,可以理解成一个软件交换机。它会在挂载到它的网口之间进行转发。之后所有容器都是在172.17.0.x的网段上,并且可以相互通讯,包括和宿主主机通讯。当创建一个Docker容器的时候,同时会创建一对vethpair(虚拟设备接口)(https://www.cnblogs.com/bakari/p/...原创 2019-12-08 16:59:38 · 248 阅读 · 0 评论 -
Docker网络相关
Docker中网络功能相关Docker是允许通过外部访问容器或者容器互联的方式来提供网络服务。外部访问容器:通过-P或者-p参数指定端口映射,-P是随机;-p是指定。-P:Docker会随机映射一个端口到内部容器开放的网络端口。用dockerrun-d-Ptraining/webapppythonapp.py创建启动一个容器。然后再用do...原创 2019-12-07 16:34:41 · 165 阅读 · 0 评论 -
Docker数据管理
Docker数据管理在容器中管理数据主要有两种方式:数据卷(Volumes)和挂载主机目录(Bindmounts)。数据卷:数据卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很多有用的特性:1.可以在容器之间共享和重用。2.对数据卷的修改会立马生效。3.对数据卷的更新,不会影响镜像。4.数据卷默认会一直存在,即使容器被...原创 2019-12-05 23:29:25 · 186 阅读 · 0 评论 -
Docker阿里云镜像存储服务
阿里云镜像服务地址 https://cr.console.aliyun.com/cn-beijing/instances/repositories 免费免费免费登陆之后可以免费创建,仓库。地址大约有三层。服务器地址/命名空间/仓库,大体类似下面这个样子registry.cn-beijing.aliyuncs.com/命名空间/仓库:版本,服务器地址是北京的仓库的话可以进行权限隔离,...原创 2019-12-03 17:38:25 · 829 阅读 · 0 评论 -
Docker私有仓库
私有私有仓库有时候使用DockerHub这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。docker-registry是官方提供的工具,可以用于构建私有的镜像仓库。下面是基于v2.x版本。仓库也是一个镜像,直接从官方拉取安装:dockerrun-d-p5000:5000--restart=always--nameregistryregistry...原创 2019-12-02 23:41:20 · 2205 阅读 · 0 评论 -
Docker仓库-Docker Hub
DockerHubDocker官方维护了一个公共仓库DockerHub,其中已经包括了数量上百万的镜像,大部分需求都可以通过在DockerHub中直接下载镜像来实现。注册:https://hub.docker.com登录的话在本地直接dockerlogin,退出就是dockerlogout,但是注意一点就是docker密码会被明文存储在/root/.docker/...原创 2019-12-01 21:19:35 · 3357 阅读 · 0 评论 -
操作Docker容器
操作Docker容器容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。启动容器:启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。因为Docker容器是在太轻量级了,很多时候用户都是随时删除和新创建容器。新建并启动...原创 2019-12-01 16:24:18 · 225 阅读 · 0 评论 -
Dockerfile多阶段构建
多阶段构建之前的做法: 在Docker17.05版本之前,构建Docker镜像,通常采用两种方式: 1.全部放入一个Dockerfile 一种方式是将所有的构建过程全都包含在一个Dockerfile中,包括项目及其依赖库的编译、测试、打包流程,这里会带来的一些问题: 镜像层次多,镜像体积较大,部署时间变长 源代码存在泄漏的风险 ...原创 2019-11-30 18:11:59 · 271 阅读 · 0 评论 -
DockerFile常用命令
COPY 复制文件COPY [--chown=<user>:<group>] <源路径>... <目标路径>COPY [--chown=<user>:<group>] ["<源路径1>",... "<目标路径>"]COPY 指令将从构建上下文目录中 <源路径> 的文件/目录复制...原创 2019-11-29 00:05:45 · 530 阅读 · 0 评论 -
node-redis基本操作
//npm install redisvar redis = require("redis"), client = redis.createClient();client.set("stringkey", "v1", redis.print);client.get('stringkey', function (err, data) { console.log(data); c...原创 2019-11-27 15:58:26 · 425 阅读 · 0 评论 -
Redis笔记整理
Redis 遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库、数据结构服务器。特点: 1.Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 2.Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 3.Redis支持数据的备份,...原创 2019-11-26 23:08:22 · 218 阅读 · 0 评论 -
Docker用Dockerfile定制镜像
用Dockerfile定制镜像 镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那之前提示的无法重复的问题。镜像透明性问题。体积的问题就都会解决,所以就有了Dockerfile。 Dockerfile是一个文本文件,其内容包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就...原创 2019-11-25 23:06:47 · 471 阅读 · 0 评论 -
Docker用Commit给容器做快照
关于commit镜像是容器的基础,每次执行dockerrun的时候都会指定哪个镜像作为容器运行的基础。镜像是多层存储,每一层是在前一层的基础上进行修改;而容器同样也是多层存储,是在以镜像为基础,在其基础上加一层作为容器运行的时的存储层。以下是用来理解镜像构建:dockerrun--namewebserver-d-p80:80nginx以nginx镜像为基础...原创 2019-11-25 23:03:16 · 2436 阅读 · 0 评论 -
Docker镜像基本使用
使用Docker镜像Docker运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker会从镜像仓库下载该镜像。获取镜像dockerpull[选项][DockerRegistry地址[:端口号]/]仓库名[:标签]Docker镜像仓库地址:地址的格式一般是<域名/IP>[:端口号]。默认地址是DockerHub。仓库名...原创 2019-11-19 23:50:36 · 562 阅读 · 0 评论