master

master节点的部署介绍和前置工作

强颜欢笑 提交于 2019-12-06 15:14:19
目录 组件介绍 组件介绍 kubernetes master 节点运行组件如下: kube-apiserver 、 kube-scheduler 、 kube-controller-manager 、 kube-nginx kube-apiserver、kube-scheduler、kube-controller-manager均以多实例模式运行 kube-scheduler和kube-controller-manager会自动选举一个leader实例,其他实例处于阻塞模式,当leader挂了后,重新选举产生的leader,从而保证服务可用性 kube-apiserver是无状态的,需要通过kube-nginx进行代理访问,从而保证服务可用性 以下操作都在K8s-01操作 下载kubernetes二进制包,并分发到所有master节点 cd /opt/k8s/work wget https://dl.k8s.io/v1.15.6/kubernetes-server-linux-amd64.tar.gz tar -xzvf kubernetes-server-linux-amd64.tar.gz cd kubernetes tar -xzvf kubernetes-src.tar.gz 下载解压的工作如果在 部署前期准备工作 做过,这里就不需要重复操作。

redis cluster 添加/删除节点操作

独自空忆成欢 提交于 2019-12-06 15:11:14
RedisCluster 添加/删除节点 添加节点 新配置两个测试节点8008和9009 [root@192-13-10-77 ~]# /usr/local/redis-4.0.9/bin/redis-server /u02/redis/8008/conf/redis_8008.conf [root@192-13-10-77 ~]# /usr/local/redis-4.0.9/bin/redis-server /u02/redis/9009/conf/redis_9009.conf 1、添加主点 [root@192-13-10-77 ~]# redis-trib.rb add-node 192.13.10.77:8008 192.13.10.77:2002 >>> Adding node 192.13.10.77:8008 to cluster 192.13.10.77:2002 >>> Performing Cluster Check (using node 192.13.10.77:2002) M: d49ebf2a5f3605487ea4c8deee7e2aa2782667e6 192.13.10.77:2002 slots:0-5460 (5461 slots) master 1 additional replica(s) S:

MySQL Last_SQL_Errno: 1062----经典错误,主键冲突

倖福魔咒の 提交于 2019-12-06 14:36:36
一、基础信息 1. Centos7.4 2.MySQL 5.7.21 3.基于gtid的复制 二、异常描述 误把从节点当成主节点插入一条数据,同一条数据在主、从节点插入都进行了一次插入操作,导致主键冲突,slave下的SQL线程异常。 建议设置从库为只读: set global read_only=1;--针对普通MySQL数据库用户设置为只读 set global super_read_only=1;--针对super类MySQL数据库用户设置为只读,比如root用户 my.cnf 文件设置永久只读 read_only=1 super_read_only=1; 三、处理过程 1.查看报错信息-- 报错大致如下 mysql> show slave status \G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.1 Master_User: repuser Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql_binlog.000023 Read_Master_Log_Pos: 2266930

Kubernetes权威指南 第一章:Kubernetes入门

时光毁灭记忆、已成空白 提交于 2019-12-06 14:34:41
Kubernetes是什么 官网 https://kubernetes.io/ 中文版: https://kubernetes.io/zh/ Kubernetes是谷歌十几年大规模容器管理经验的成果 是Borg的一个开源版本 基于容器技术的分布式架构方案 Service简介 Kubernetes以Service为核心,Service有如下特征 唯一名称 拥有一个虚拟ip和端口 提供某种远程服务能力 被映射到提供这种服务能力的一组容器应用上 Pod简介 Pod运行在Node主机中 Pod是Kubernetes管理的最小运行单元 通常一个Node运行上百个Pod 每个Pod有一个特殊的Pause容器,负责网络栈和Volume挂载卷 只有提供服务的那组Pod才会被映射为一个服务 为什么要使用Kubernetes 一旦搭建好Kubernetes环境后,后续对于应用的部署与运维,使用Kubernetes就非常方便了 Hello World Kubernetes的安装先不讲了 现在要做的事情是 使用Kubernetes部署MySQL与JavaWeb程序 JavaWeb可以访问Kubernetes 基本步骤 MySQL副本集 MySQL Service JavaWeb副本集 JavaWeb Service 下面的几个yaml文件在 https://github.com/nbcoolkid

MySQL

亡梦爱人 提交于 2019-12-06 14:31:20
#!/bin/bash service iptables stop setenforce 0 Slave_user="tom" Slave_passwd="123" Slave_ipaddr="192.168.249.130" Master_ipaddr="192.168.249.129" yum -y install openssh-clients yum -y install mysql mysql-server sed -i '/^\[mysqld\]$/a\server-id=1' /etc/my.cnf sed -i '/^\[mysqld\]$/a\log-bin=mysql-bin' /etc/my.cnf sed -i '/^\[mysqld\]$/a\relay-log=mysql-relay' /etc/my.cnf /etc/init.d/mysqld restart mysql mysql -e "grant all on *.* to '$Slave_user'@'%' identified by'$Slave_passwd';" Master_status=`mysql -e "show master status;"` echo "$Master_status" Binlogname=`echo "$Master_status" | grep "bin

redis-cluster部署及数据迁移

五迷三道 提交于 2019-12-06 14:30:54
工作原理 节选自redis官方文档: http://www.redis.cn/topics/cluster-tutorial.html Redis集群介绍 Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。 Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误. Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令. Redis 集群的优势: 自动分割数据到不同的节点上。 整个集群的部分节点失败或者不可达的情况下能够继续处理命令。 Redis 集群的数据分片 Redis 集群没有使用一致性hash, 而是引入了 哈希槽的概念. Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽.集群的每个节点负责一部分hash槽,举个例子,比如当前集群有3个节点,那么: 节点 A 包含 0 到 5500号哈希槽. 节点 B 包含5501 到 11000 号哈希槽. 节点 C 包含11001 到 16384号哈希槽. 这种结构很容易添加或者删除节点. 比如如果我想新添加个节点D, 我需要从节点 A, B, C中得部分槽到D上. 如果我像移除节点A,需要将A中得槽移到B和C节点上

AXI接口

时光毁灭记忆、已成空白 提交于 2019-12-06 14:23:18
1、outstanding 2、interleaving 3、out-of-oder 4、写数据可以优先于写地址 5、大小端 小端:低地址数据放在总线bus的低位。 大端:低地址数据放在总线bus的高位。 6、INCR模式 INCR模式master只提供首地址,地址累加是slave端做的 7、原子操作 是一种应用场景相关的操作,在多核CPU中,为了保证一个master对slave的访问操作不让其他master来访问,保证访问slave的数据不被其他master改写。有点像多线程中的线程锁。在AXI3.0的时候有normal access/exclusive access/locked access, 其中normal access是不进行任何干预的访问,exclusive则是slave端监控一下,在master访问期间有没有其他master访问过,如果访问过就给告警什么的,让master重新访问一遍。locked access这种模式在AXI 4.0取消了,即硬件锁定,其他master访问不了master到slave的总线,这种方式对性能影响很大,所以取消了。 8、cash cash是slave端的一个缓冲,如果多个设备都访问slave的某一部分数据,那么这部分数据可以缓存到cash中,只要第一个master访问后,其他master访问则部分数据时就不去slave中去取这些数据

Git使用

回眸只為那壹抹淺笑 提交于 2019-12-06 14:10:04
一、Git简介 Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。 图为git开发过程: 1、Git的功能特性 从一般开发者的角度来看,git有以下功能: 从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。 在自己的机器上根据不同的开发目的,创建分支,修改代码。 在单机上自己创建的分支上提交代码。 在单机上合并分支。 把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。 生成补丁(patch),把补丁发送给主开发者。 看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。 一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。 从主开发者的角度看,git有以下功能: 查看邮件或者通过其它方式查看一般开发者的提交状态。 打上补丁,解决冲突(可以自己解决

Git笔记

徘徊边缘 提交于 2019-12-06 13:03:31
Git笔记 Git直接记录快照,而非差异比较,这样Git值关注修改的文件,没有修改的文件,Git不再重新存储该文件,而只是保留一个链接指向之前存储的文件,Git对待数据更像是个快照流。 Git很多情况使用哈希值,即Git数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。 三种状态 已提交 committed:数据已经安全的保存到本地数据库中了 已修改 modified:修改了文件,但还没有保存到数据库中 已暂存 staged:对一个已修改文件的当前保本做了标记,使之包含在下次提交的快照中。 基本的 Git 工作流程如下: 在工作目录中修改文件。 暂存文件,将文件的快照放入暂存区域。 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。 ​ 大型项目项目管理的一种思路:多人项目,本地在提交时往往不推荐使用pull 来拉去远端仓库中最新的代码到本地仓库中更新,原因是如果远端仓库的代码被其他人更改过,再pull时会出现冲突的情况(例如本地修改A.java,远端也有人将修改过的A.java上传到远端仓库中,这样两个A.java就不是一个,所以会产生了冲突),这样还是需要一步一步解决冲突,最佳做法是,再建一个新文件夹将远端仓库代码pull到本地,通过第三方的比差分代码软件来查看差分,然后自己手动合并,之后再push到远端仓库。 注意:理解上需要注意的地方

MySQL 部署 MHA 高可用架构 (二)

纵然是瞬间 提交于 2019-12-06 12:55:28
实现 MHA VIP 功能 配置 master_ip_failover 脚本(db3) 把 master_ip_failover 上传到 /iba/software 上 master_ip_failover 文件内容 #!/usr/bin/env perl use strict; use warnings FATAL => 'all'; use Getopt::Long; my ( $command, $ssh_user, $orig_master_host, $orig_master_ip, $orig_master_port, $new_master_host, $new_master_ip, $new_master_port ); my $vip = '192.168.31.88/24'; my $key = '1'; my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip"; my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down"; GetOptions( 'command=s' => \$command, 'ssh_user=s' => \$ssh_user, 'orig_master_host=s' => \$orig_master_host, 'orig_master_ip=s