Tag: 高可用性

无法初始化corosyncconfigurationAPI错误12

无法初始化在Docker容器内运行的corosync。 corosync-cfgtool -s命令产生以下内容: Could not initialize corosync configuration API error 12 /etc/corosync/corosync.conf文件具有以下内容: compatibility: whitetank totem { version: 2 secauth: off threads: 0 interface { ringnumber: 0 bindnetaddr: 127.0.0.1 mcastaddr: 239.255.1.1 mcastport: 5405 ttl: 1 } } logging { fileline: off to_stderr: no to_logfile: yes logfile: /var/log/corosync.log to_syslog: yes debug: off timestamp: on logger_subsys { subsys: […]

Docker应用程序实时升级

我是docker的新手,在docker涉及时devise一个简单的实时升级解决scheme时遇到一些问题。 目前,我正在使用基于fork()/exec()的模式进行应用程序实时升级: 旧的服务器fork()是一个孩子的请求。 子服务器exec()新的可执行文件,加载新的数据/configuration。 旧服务器将必要的信息(套接字,内存数据等)传递给子服务器,以便它可以接pipe服务。 旧服务器在小孩准备就绪后停止处理新请求(旧服务器不会exit() ATM)。 如果升级成功,则手动停止旧服务器(这可能会延迟到下次实时升级之前),否则停止子服务器并通知旧服务器重新启动处理请求。 正如您所看到的,这种实时升级策略通常不会造成停机,无论升级是否失败。 我们的大多数服务都是无状态的,或者状态非常简单,所以上述模式可以很容易实现,而且非常可靠。 我的问题是如何在docker执行上述模式(或类似的东西)? 也许我走错了方向,我是耳朵。

如何自动将已经死了的Docker Swarm Managerreplace为至less有x个pipe理器正在运行?

人们如何检测和自动更换死亡的Swarm Manager? 这似乎很重要,考虑到:“如果群体失去了pipe理人员的法定人数,群体就不能执行pipe理任务。”

docker群提供高可用性吗?

我已经读过docker swarm提供了负载平衡,但它是否也启用高可用性?

dockerized HAProxy + Keepalived HA

我有一个HAProxy作为docker容器使用泊坞窗撰写的主机。 我想横向扩展我们的HAProxy,使其在多个主机间高度可用。 我用keepalived阅读了几个教程,但是这是在主机上完成的,并将HAProxy服务器安装为主机而不是作为docker容器。 是否有可能以docker化的方式部署高可用性的HAProxy? (我明白,我有一个虚拟化的设置)

Docker群集故障转移行为似乎有点令人沮丧

我目前正在尝试使用Docker Swarm在三节点集群上以高度可用的方式设置我们的应用程序(包括无状态服务和有状态服务)。 “高可用”的意思是“能够解决三个节点之一的故障”。 我们一直在做这样的安装(使用其他方式,而不是Docker,更不用说Docker Swarm了),并取得了很好的成功,包括可接受的故障转移行为,所以我们的应用程序本身(构成它的服务)已经certificate在这样的三节点设置中,它们可以高度可用。 使用Swarm,我成功启动并运行了应用程序(所有三个节点均已启动),并且保证每个服务都有冗余configuration,即每个服务都存在多个实例,它们已针对HA进行了正确configuration,并非所有服务的实例都位于同一个Swarm节点上。 当然,我也注意到所有的Swarm节点都join了Swarm作为pipe理者节点,这样如果原来的Leader节点失败,他们中的任何一个都可以成为Swarm的领导者。 在这个“良好”状态下,由于Swarm的Ingressnetworking,我可以在任何节点的暴露端口上获得服务。 很酷。 在生产环境中,我们现在可以将高度可用的负载均衡器放在群集工作者节点的前面,这样客户端就可以拥有一个IP地址来连接,而且如果其中一个节点发生故障,您甚至不会注意到。 所以,现在是testing故障转移行为的时候了……我预计杀死一个Swarm节点(即,VM的硬closures)将使我的应用程序运行,尽pipe处于“降级”模式。 唉,在closures之后,我无法通过他们暴露的(通过Ingress)端口在相当长的时间内到达我的任何服务。 有些可以再次达到,并且确实已经恢复成功(例如,三节点Elasticsearch集群可以再次访问,当然现在缺less一个节点,但是回到“绿色”状态)。 但其他人(唉,这包括我们内部的LB …)通过他们发布的端口仍然无法访问。 “docker node ls”显示一个节点不可达 $ docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS kma44tewzpya80a58boxn9k4s * manager1 Ready Active Reachable uhz0y2xkd7fkztfuofq3uqufp manager2 Ready Active Leader x4bggf8cu371qhi0fva5ucpxo manager3 Down Active Unreachable 如预期。 我的Swarm设置导致这些影响,我可能会做错吗? 我只是在这里期待太多?

使DockerregistryHA

请注意:这是一个非常类似的问题,但我声称这不是一个愚蠢的! 另一个问题显然是基于(较老的)基于Python的Dockerregistry,而不是GoLang中最新的一个,似乎是相当不同的! 我花了几个小时阅读文档来设置私人Dockerregistry ,并让它在具有以下特征的远程VM上运行: 使用基本身份validation进行身份validation,我有一个testing用户使用它 为TLS使用根CA证书 使用本地文件系统进行存储(我可能会升级到Ceph / Rados) 到现在为止还挺好。 但是现在我想要做到这一点,并且对于这些文档似乎没有提到它,我感到震惊。 在旧的Python文档中,有一整段专门用于HA,但是我不愿意遵循它们,因为更新的(基于GoLang的)registry似乎没有提到HA。 所以我的担忧: 有没有办法让更新的(GoLang)registryHA? 如果有,文档在哪里? 什么是一般的方法? 负载均衡器后面的群集registry实例? 做一个小学,并有1 + Secondaries? 主从?

如何在docker上通过postgresql进行故障转移后升级master

首先,我使用这个安装postgres-docker-cluster ,在故障切换期间一切正常,我停止了master和slave1代替它,但是如果我把主控回到im不知道如何提升再次掌握,我会赞赏任何指针正确的方向,我需要手动推动它? 对不起,我很新这个概念(公顷)。 这个docker使用repmgr , pgpool2和postgre 9.5 。 docker上的一些信息 的PostgreSQL簇-pgsql的 的PostgreSQL-簇pgpool 泊坞窗,compose.yml

为什么在一个简单的NGINX docker集群上增加node / pod时,我看不到更高的并发请求?

在试图实现一个高度可用的Web服务器设置,我运行一个负载testing对一个非常简单的NGINXdocker容器提供单个静态文件。 起初,我尝试了一个节点(n1-standard-4)和单个pod集群,来衡量一个“单元”可以做多less。 这个单节点/ pod设置可以处理大约20k个并发请求,然后开始超时以处理一些请求/吞吐量。 然后,我添加了相同机器types的另一个节点,并将这个吊舱缩放到两个副本。 一旦我确认两个豆荚/节点都运行起来,我再次用20k运行testing。 性能是好的,所以我碰到了4万 – 期待我会看到类似的结果,1节点/ pod设置20k。 然而,performance非常糟糕,从来没有请求每秒跳跃15k和30k之间猛烈。 我用4个节点/豆荚再次尝试相同的testing,看到类似的结果,如果不是稍差。 我的问题是: 我错误地认为我的并发请求应该用GKE / containers / kubernetes这样线性调整吗? 为了达到预期的结果,我能够如何处理M个节点/群集中的N个并发用户? 编辑:我也不相信这是与负载testing工具的问题 – 因为我使用的外部付费服务,声称能够模拟高达100k并发请求。 编辑2:这里有一些关于设置的更多信息: Dockerfile: FROM nginx ADD nginx.conf /etc/nginx/nginx.conf ADD index.html /usr/share/nginx/html/index.html ADD data.json /usr/share/nginx/html/data.json nginx.conf: user nginx; worker_processes 4; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 4096; } http { include /etc/nginx/mime.types; default_type […]

在HA负载平衡器后面集群Docker容器

大多数Docker的文献都认为,你可以在同一个物理服务器上运行数百甚至数千个容器。 我想知道从负载平衡/集群的angular度来看这是什么样子。 假设我有一个REST风格的Web服务fizz-service.war 。 通常,对于“正常”的虚拟机,我可能会将这个服务部署到50个虚拟机(例如, fizzsvc01.example.com到fizzsvc50.example.com ),然后在服务URL后面集群/负载平衡这些虚拟机,例如http://fizz-service.example.com 。 当请求进入时,负载均衡器select一个节点来转发请求,比如fizzsvc34:8080/fizz-service 。 我想知道如何与Docker容器一起工作。 如果我有相同的50个容器运行,比如5个节点: 这些节点可以是VM还是物理服务器? 对于运行在相同节点上的容器,它们是否都在自己的端口上运行? 否则,你怎么能在同一个端口上运行50个服务实例? 而对于“正常的虚拟机”,负载平衡器configuration了所有构成池的虚拟机,然后我只是将我的服务部署到池中的每个虚拟机上,Docker容器如何改变? 我的负载平衡器(可能是单独的基础设施,如F5或Nginx)如何“ 知道 ”可用于分配负载的所有容器? 或者当我进入Docker-land时,我的整个HA /负载平衡方法是否需要改变?