worker),192.168.200.16(vip) 每个虚拟节点cup至少双核,内存至少2G 环境配置(all) 配置hosts vim /etc/hosts 配置各个虚拟机的hostname,确保集群各个虚拟机的 51 //让master 和backup在同一个虚拟路由里,id 号必须相同; priority 250 //优先级,谁的优先级高谁就是master dont_track_primary 使用浏览器访问30001端口,使用token登录, 记得要用火狐浏览器,微软和谷歌不支持 ,我这里是 https://192.168.200.128:30001,把自己的token 粘贴上去即可 harbor高可用安装 (master128,master130,master131) harbor是docker的私有仓库,使用harbor可以管理k8s集群下载的镜像,将镜像统一放置一处,有效节约空间,此外还有GUI界面, harbor.service ingress-nginx安装配置(master128) igress其实就是一组基于DNS名称(host)或URL路径把请求转发到指定的Service资源的规则,用于将集群外部的请求流量转发到集群内部完成的服务发布
kubeadm安装高可用k8s集群 ---- 高可用集群规划图 ---- 主机规划 角色 IP地址 操作系统 配置 主机名称 Master1 192.168.18.100 CentOS7.x,基础设施服务器 k8s-master03 设置192.168.18.104的主机名: hostnamectl set-hostname k8s-node02 ---- 主机名解析 为了方便后面集群节点间的直接调用 ,如果不是高可用集群,该IP可以是k8s-master01的IP EOF ---- 时间同步 kubernetes要求集群中的节点时间必须精确一致,所以在每个节点上添加时间同步: yum install : systemctl enable kubelet ---- 高可用组件安装 注意:如果不是高可用集群,haproxy和keepalived无需安装。 v1.20.2 \ --service-cidr=10.96.0.0/12 \ --pod-network-cidr=10.244.0.0/16 \ --upload-certs ---- 高可用
一、Kubernetes 集群高可用 下载链接: 链接:https://pan.baidu.com/s/1U3UWaZSA5b5bf3QnR_XZGw 密码:2flw 1.1、环境准备 准备好五台虚拟机分别做为 /v1alpha1 kind: KubeProxyConfiguration featureGates: SupportIPVSProxyMode: true mode: ipvs 1.13、安装配置集群 coreos/flannel/master/Documentation/kube-flannel.yml kubectl apply -f kube-flannel.yml 1.14、将从节点加入集群 #---------------------Master 节点使用下面这条命令加入集群------------------------------# kubeadm join 192.168.1.170 -------------------------------------------------------# #------------------------Node 节点使用下面这条命令加入集群
集群高可用 HDFS单节点架构存在的问题 HDFS单点架构存在一些问题,首先是NameNode内存受限,因为数据的元数据信息全部保存在NameNode内存中。 其次就是单点故障问题,主从架构的HDFS是依靠主节点NameNode来运转的,一旦主节点挂掉就会导致整个集群不可用。 NameNode High Availability(高可用)机制 NameNode High Availability高可用机制是Hadoop 2.x中提出的,用于解决NameNode单节点故障问题的方案 实现高可用,至少提供两台NameNode做热备:Active、Standby
redis集群是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。 redis集群的性能和高可用性均优于之前版本的哨兵模式,且集群配置非常简单。 ? Redis高可用集群搭建 redis集群需要至少三个master节点,我们这里搭建三个master节点,并且给每个master再搭建一个slave节点,总共6个redis节点,这里用三台机器部署6个redis Redis3.0以后的版本虽然有了集群功能,提供了比之前版本的哨兵模式更高的性能与可用性,但是集群的水平扩展却比较麻烦,今天就来带大家看看redis高可用集群如何做水平扩展,原始集群(见下图)由6个节点组成 0 1608466650512 9 connected Redis高可用集群缩容 1.删除8008从节点 用del-node删除从节点8008,指定删除节点ip和端口,以及节点id [root@redis1
目前我们已经将RabbitMQ 集群用于生产, 部署非常方便: 最少填1个参数, 点创建, 1分钟后就能创建如下集群. RabbitMQ 集群配置 - ConfigMap 接下来进行RabbitMQ的集群配置, 集群配置是通过ConfigMap挂载进去的. cluster_formation.k8s.address_type = hostname K8S里, 倾向于使用 hostname 集群配置 - StatefulSet 和 Service 因为集群是有状态的 , 所以需要通过K8S的Statefulset来实现集群实例部署配置. (K8S_SERVICE_NAME). K8S_HOSTNAME_SUFFIX为: .(K8S_SERVICE_NAME).
RabbitMQ 高可用集群搭建 1 集群简介 1.1 集群架构 当单台 RabbitMQ 服务器的处理消息的能力达到瓶颈时,此时可以通过 RabbitMQ 集群来进行扩展,从而达到提升吞吐量的目的 一个高可用,负载均衡的 RabbitMQ 集群架构应类似下图: 这里对上面的集群架构做一下解释说明: 首先一个基本的 RabbitMQ 集群不是高可用的,虽然集群共享队列,但在默认情况下,消息只会被路由到某一个节点的符合条件的队列上 HAProxy 同时支持四层和七层负载均衡,并基于单一进程的事件驱动模型,因此它可以支持非常高的井发连接数。 此时对外服务的 VIP 依然可用,代表已经成功地进行了故障转移。 官方文档 —— 高可用镜像队列:www.rabbitmq.com/ha.html HAProxy 官方配置手册:cbonte.github.io/haproxy-dco… KeepAlived 官方配置手册
被规划为基础层,主要提供了一个高可用的7层负载均衡器。 HAProxy反代了K8S Master服务器,提供了K8S Master API的高可用和负载均衡能力。 可以使用Nginx代替HAProxy吗? 这边牵扯到了领导选举(zookeeper、consul等分布式集群系统也是需要领导选举) Master高可用需要几个节点?失败容忍度是多少? 那么master高可用至少需要2个节点,失败容忍度是(n/0)+1,也就是只要有一个是健康的k8s master集群就属于可用状态。 高可用验证 至此生产可用的k8s集群已“搭建完成”。
/.kube/completion.bash.inc' " >> $HOME/.bash_profile [root@m1 ~]# source $HOME/.bash_profile ---- 高可用集群部署 部署keepalived - apiserver高可用(任选两个master节点) 1、在两个主节点上执行如下命令安装keepalived(一主一备),我这里选择在m1和m2节点上进行安装: $ yum # 耐心等待一会,可以观察下日志 $ journalctl -f 成功将所有的worker节点加入集群后,至此我们就完成了k8s高可用集群的搭建。 root@nginx:/# ping nginx-ds PING nginx-ds.default.svc.cluster.local (10.105.139.228): 48 data bytes 高可用测试 ,能正常交互则代表集群具备了一定程度的高可用性: [root@m2 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION m1
HAProxy反代了K8S Master服务器,提供了K8S Master API的高可用和负载均衡能力。 可以使用Nginx代替HAProxy吗? Master则是集群领导。 Worker是工作者节点。 可以看出这边主要的工作在Master节点,Worker节点根据具体需求随意增减就好了。 Master节点的高可用拓补官方给出了两种方案。 这边牵扯到了领导选举(zookeeper、consul等分布式集群系统也是需要领导选举) Master高可用需要几个节点?失败容忍度是多少? 那么master高可用至少需要2个节点,失败容忍度是(n/0)+1,也就是只要有一个是健康的k8s master集群就属于可用状态。 高可用验证 至此生产可用的k8s集群已“搭建完成”。
kubernetes 虽然具有故障自愈和容错能力,但某些组件的异常会导致整个集群不可用,生产环境中将其部署为高可用还是非常有必要的,本文会介绍如何构建一个高可用的 Kubernetes 集群。 apiserver 的高可用可以分为集群外高可用和集群内高可用。 集群外高可用指对于直接调用 k8s API 的外部用户(例如 kubectl 、kubelet),客户端需要调用 apiserver 的 VIP 以达到高可用,此处 LVS 的部署以及 VIP 的配置不再详细说明 若使用物理机搭建 k8s 集群,理论上集群的规模也会比较大,此时 etcd 也应该使用 3 个或者5 个节点部署一套独立运行的集群。 若想要对 etcd 做到自动化运维,可以考虑使用 etcd-operator 将 etcd 集群部署在 k8s 中。 kubernetes 中组件高可用部署的一个架构图: ?
这样你可以通过web页面观察rabbitmq的status,端口号是15672,例如http://ip:15672 3、配置RabbitMQ集群 我们这里会展示如何配置一个RabbitMQ集群,集群由以下节点组成 ,当然这个时候还没有组成集群。 4、HA配置 我们使用haproxy来代理配置高可用。 haproxy可以用来做代理,进行负载均衡和backend探活。支持TCP和HTTP模式。 关于haproxy的内容就不展开说了。 send.py # -*- coding:utf-8 -*- import pika credentials = pika.PlainCredentials('admin','bigdata123') connection.close() receive.py # _*_coding:utf-8_*_ import pika credentials = pika.PlainCredentials('
上面的这些问题在多数讲eureka集群教程里都没有说明白,上来就是配server相互注册,client添加所有的server地址,大大的误导了我一把。 专门从头新建了项目来看看到底eureka集群是该怎么配置。 server端配置 创建个eureka server项目 pom.xml如下: <? xml version="1.0" encoding="UTF-<em>8</em>"? 这是因为eureka是通过在各个节点进行复制来达到高可用的目的。 测试很简单,我们直接关掉server1,然后看看server2是否还能维持住client的发现。 下面我们可以测试一下把server端yml里配置register-with-eureka: false的那两行注释给放开,看看eureka的server忽略自己后,是否能完成服务发现的高可用。
集群架构图 先来简单说一下这个架构图,前段是两台nginx + keepalived的高可用负载均衡群集,对后面两个tracker服务器做负载均衡,然后最后端是由fastdfs组成的分布式存储池,通过tracker storage服务器 nginx fastdfs storage fastdfs相关模块 (两台机器,对等的两组 192.168.3.23/24) keepalived结合nginx做高可用的负载均衡 network_timeout=60 base_path=/data/tracker max_connections=256 accept_threads=1 work_threads=4 min_buff_size = 8KB server { listen 80; server_name localhost; #charset koi8- client.conf image.jpg 然后我们在访问tracker服务器,看是否能反向代理到后端storage上 2)测试负载均衡器 我们访问负载均衡器的VIP,来看下是否能访问 至此,,一个简单的fastdfs高可用的负载均衡集群已经搭建完毕
应用场景 Yahoo将Spark用在Audience Expansion中的应用,进行点击预测和即席查询等 淘宝技术团队使用了Spark来解决多次迭代的机器学习算法、高计算复杂度的算法等。 应用于内容推荐、社区发现等 腾讯大数据精准推荐借助Spark快速迭代的优势,实现了在“数据实时采集、算法实时训练、系统实时预测”的全流程实时并行高维算法,最终成功应用于广点通pCTR投放系统上。 ,要解决此问题,就要借助zookeeper,并且启动至少两个Master节点来实现高可靠 配置Spark集群之前一定要把zookper集群启动 Spark集群规划:hdp-01,hdp-02是Master ;hdp-03,hdp-04是Worker 安装配置zk集群,并启动zk集群 停止spark所有服务 集群中Master地址是不固定的 所以必须把export SPARK_MASTER_IP=hdp-01 spark-examples_2.11-2.2.0.jar 100 参数说明: --master spark://hdp-01:7077 指定Master的地址 --executor-memory 1G 指定每个worker可用内存为
在高可用(HA)系统中,当联系2个节点的“心跳线”断开时,本来为一整体、动作协调的HA系统,就分裂成为2个独立的个体。由于相互失去了联系,都以为是对方出了故障。 S 17:49 0:00 /usr/sbin/keepalived -D ---- 三、测试高可用 为了测试简单明了,修改主上面的主页为: [root@zhdy-02 ~]# vim /usr noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 vim /etc/keepalived/keepalived.conf priority 90 除了配置nginx的高可用,我们当然也可以配置mysql的高可用,前提是一定要保证双方的数据是一致的。
RabbitMQ 的高可用性 RabbitMQ 是比较有代表性的,因为是基于主从(非分布式)做高可用的 RabbitMQ 有三种模式:单机模式、普通集群模式、镜像集群模式。 普通集群模式(无高可用性) 普通集群模式,有服务器ABC,在服务器ABC上分别启动RabbitMQ实例,生产者生产消息1,随机发给某一实例A,实例BC 上记录消息1的原数据信息(比如消息1具体信息在示例 所以这个事儿就比较尴尬了,这就没有什么所谓的高可用性,这方案主要是提高吞吐量的,就是说让集群中多个节点来服务某个 queue 的读写操作。 镜像集群模式(高可用性) 这种模式,才是所谓的 RabbitMQ 的高可用模式。 那么如何开启这个镜像集群模式呢?
计划分几篇文章把近一个月技术上的一些实践记录一下,这第一篇记录一下mongodb的高可用集群部署。 复制集节点2 shard server3 复制集节点3 端口分配 mongos:27088 config:27077 shard1:27017 shard2:27018 shard3:27019 集群搭建 WantedBy=multi-user.target EOF systemctl enable mongos systemctl start mongos 再在任意一台服务器上依次将3个分片加入到集群中 systemctl restart mognod-shard3 systemctl restart mognod-config systemctl restart mognos 至此,整个mongodb高可用集群就搭建好了 > sh.enableSharding("test") > sh.shardCollection("test.col1", { "name" : 1 } ) > exit 总结 手工部署mongodb集群还是比较麻烦的
Mysql高可用集群--MHA 强烈推介IDEA2020.2破解激活,IntelliJ MHA Manager 可以单独部署在一台独立机器上管理多个 master-slave 集群,也可以部署在一台 slave 上。 The key fingerprint is: SHA256:lU9My4J5QGSrEV8wvMfN61Fxu9jIyCX6+WdxjYTykp8 root@localhost.localdomain validate_password_length=1;#设置密码的长度为1 7.进行修改数据库密码 set password for 用户名 @localhost = password('新密码'); 8. relay-log=relay-log-bin relay-log-index=slave-relay-bin.index read-only=1 # 启动只读属性 relay-log-purge=0 # 高可用进行切换时
将配置好的activemq全部复制到其他服务器,启动ActiveMQ集群搭建就完成了 Master-Slave集群主要解决了单点故障的问题,Master-Slave集群中的一个节点挂掉,其他的节点任然可用 ,服务就任然可用。 initialReconnectDelay=100” 基于Broker-Cluster集群部署 Broker-Cluster集群通过网络连接,将多个broker组合,对外构成一个整体,集群之间共享队列和主题列表 Master-Slave集群解决了单点故障的问题,但是仍然只是一个节点处理所有请求。 Master-Slave与Broker-Cluster两者相结合的集群即可解决单点故障又可保证负载均衡,做到了高可靠和高可用。 ?