我有一台主机,HAProxy 使用 docker compose 作为 docker 容器运行。我想水平扩展我们的 HAProxy,使其在多个主机上高度可用。
我读了一些关于 keepalived 的教程,但这是在主机上完成的,并且是作为主机安装的 HAProxy 服务器,而不是在 docker 容器中。
是否可以通过docker化的方式部署高可用的HAProxy?
(我知道我有虚拟化设置)
我有两个后端,以便在我的应用程序中维护两组规则。一种用于通过浏览器访问的主网站(cookied 会话),另一种用于 API(无状态并通过 API 密钥进行身份验证)。
配置看起来像这样(大大简化)。
defaults
option httpchk HEAD /ping
backend web
cookie _srv insert indirect
server srv1 10.0.0.1:80 cookie srv1 check inter 10s
server srv2 10.0.0.2:80 cookie srv2 check inter 10s
backend api
stick-table type string len 50 expire 1d store http_req_cnt
stick on url_param(key)
server srv1 10.0.0.1:80 check inter 10s
server srv2 10.0.0.2:80 check inter 10s
Run Code Online (Sandbox Code Playgroud)
如图所示,两个后端使用相同的服务器,只是 API 不需要设置 cookie。有(或将会有)更多的逻辑需要分离,例如速率限制规则。
我的问题是如何避免重复健康检查?对每台服务器对同一端点执行两次 ping 操作会浪费资源。我想让web后端进行健康检查,并将api后端标记为启动或关闭。这可能吗?或者也许有更好的方法来分离后端但保留通用功能。
我有一个高可用性设置,其中数据流如下:
... <-> Objection.js <-> Knex.js (pool) <-> Pgpool-II (pool) <-> PostgreSQL Cluster
Run Code Online (Sandbox Code Playgroud)
如您所见,连接池现在在两个地方进行管理 - Knex.js 和 Pgpool-II。我想知道我是否真的需要两者,或者我可以完全禁用 Knex.js 池pool: {min: 0, max: 0}并让 Pgpool-II 完成所有工作?谢谢你。
我们的解决方案有 2 个网络服务器的生产设置,这两个网络服务器是负载平衡的,并连接到同一个数据库。
我们使用 Octopus 部署,并执行滚动部署,我们在负载均衡器中禁用正在更新的网络服务器。
我们首先使用实体框架代码迁移,并在部署时运行
dotnet ef migrations script,以生成我们可以对数据库执行的 SQL 脚本。这是我们斗争的开始。
发生的迁移发生了重大更改,导致仍然在线的网络服务器由于数据库不匹配而失败。
所以我们需要在迁移前和迁移后进行
根据我拥有的 sql 脚本,我一直无法找到可以为我创建这些预迁移的工具,我开始认为这是一个梦想,这可能吗?如果没有,人们在他们的部署管道中做什么?
我看过 Liquibase、DbUp、Roundhouse,但它们都没有提供我想要的功能。
.net deployment high-availability entity-framework-migrations
我\xe2\x80\x99m想知道\xe2\x80\x99是否可以在高可用性中设置Keycloak。如果是的话你能给一些建议吗?
\nPython (Monolith API) - Flask 框架 PostgreSQL
我们已经部署了docker容器如下
我们现在面临 OOM(内存不足)问题的停机时间,然后给定 EC2 实例中的容器开始移动到另一个 EC2 实例,当由于某种原因第三个 EC2 实例不可用时会发生这种情况,所以直到第二个实例启动并运行,我们面临着给定容器集的停机时间。
所以想检查我们使用的策略是否正确?
我们现在还计划让小型 EC2 实例持有较少数量的容器,因此如果发生问题,那么至少有少量站点关闭,而不是所有 15 个站点都关闭,我们是否朝着正确的方向前进?
我们应该搬到 Fargate 吗?与使用 ECS 相比,成本影响是什么?
如果有人帮助我为此类问题找到完美的解决方案,那就太好了。
在不久的将来,我们将拥有 100 秒的容器,并且可能会达到 500 秒,因此我们必须决定部署、故障转移、高可用性的最佳策略。
failover high-availability amazon-web-services amazon-ecs aws-fargate
我想了解我是否需要将负载均衡器作为 Elasticsearch 部署的一部分,或者是否被认为是一种良好实践。
据我了解,Elasticsearch 的高级 REST 客户端和传输客户端可以管理节点之间的负载平衡。因此,客户端需要逗号分隔的端点列表,仅此而已。
中间还有负载均衡器还有什么意义吗?对于哪种情况它可能有用?每种方法的优缺点?
java load-balancing high-availability elasticsearch elasticsearch-high-level-restclient
有没有办法在不重新启动的情况下更改Node.JS应用程序的代码.
例如,如果当时正在从服务器下载文件,是否有办法在不中断文件传输的情况下升级服务器?
我已经实现了对SAML SSO的支持,以使我的应用程序充当使用Spring Security SAML Extension的服务提供者.我能够将我的SP与不同的国内流离失所者整合在一起.例如,我有HostA,HostB和HostC,所有这些都有我的应用程序的不同实例.我为每个主机指定了一个SP元数据文件,并使用该主机的URL设置AssertionConsumerServiceURL(EX:https:HostA.com/myapp/saml/sso).我将每个元数据文件添加到IDP并测试了所有这些文件并且工作正常.
但是,我的项目还通过配置IBM HTTP Server以实现负载平衡来支持高可用性.因此,在这种情况下,HTTP Server将主机(A,B,C)配置为用于负载平衡的主机,用户将使用HTTP服务器的URL访问我的应用程序:https:httpserver.com/myapp/
如果我定义了一个SP元数据文件并且具有在AssertionConsumerServiceURL(https://httpserver.com/saml/sso )中指定的HTTP Server的URL 并将我的实现更改为接受针对我的HTTP Server的断言,那么结果会是什么这种情况:
- 用户访问将用户分派给HostA的HTTPServer(幕后)
- HostA中的我的SP应用程序向IDP发送请求以进行身份验证.
- IDP将响应发送回我的httpserver:https: //httpserver.com/saml/sso .
HTTP服务器是否会重定向到HostA,如下所示:https: //HostA.com/saml/sso
谢谢.
我有一个运行Multipe应用程序(服务)的Kubernetes环境。现在,我有点困惑如何设置MySQL数据库实例。
根据不同的来源,每个微服务都应该有自己的数据库。我应该在HA模式下创建一个运行多个数据库的MySQL状态集还是为每个运行一个数据库的应用程序(服务)部署一个单独的MySQL实例。
我的第一个想法是第一选择,因此HA总体上应在哪里使用?希望听到一些与此不同的看法。
haproxy ×2
.net ×1
amazon-ecs ×1
aws-fargate ×1
database ×1
deployment ×1
docker ×1
elasticsearch-high-level-restclient ×1
entity-framework-migrations ×1
failover ×1
httpserver ×1
java ×1
keycloak ×1
knex.js ×1
kubernetes ×1
mysql ×1
node.js ×1
pgpool ×1
postgresql ×1
saml ×1
spring-saml ×1
statefulset ×1