标签: high-availability

如何使 AD 对于将其用作 LDAP 服务的应用程序高度可用

我们的情况

我们目前有许多使用 LDAP 进行身份验证的 Web 应用程序。为此,我们使用 LDAPS 端口 ( 636)将 Web 应用程序指向我们的 AD 域控制器之一。

当我们必须更新域控制器时,这给我们带来了问题,因为另一个 Web 应用程序可能依赖于任何 DC。

我们想要什么

我们想将我们的 Web 应用程序指向一个集群“虚拟”IP。该集群将至少包含两台服务器(以便每个集群服务器都可以轮换和更新)。然后,集群服务器会将 LDAPS 连接代理到 DC,并能够找出可用的连接。

问题

对于曾为 AD 的 LDAP 接口创建 HA 集群的任何人:

  1. 集群用的什么软件?
  2. 有什么注意事项吗?
  3. 或者也许是一个完全不同的架构来完成类似的事情?

更新

也许我的问题最初还不够清楚。对此我深表歉意。

这些 Web 应用程序不是由我们开发的,也不是 AD 感知的。他们只要求 LDAP 服务器的主机名/IP 地址。不幸的是,我们必须处理这个限制。我了解SRV records工作原理,但由于这些不是我们的应用程序,因此在这种情况下对我们没有帮助。

我们强迫开发人员修改他们的应用程序以识别 AD 也是不现实的。

唯一的选择是在基础设施内解决这个问题,而不是软件。我的问题是针对任何专门做过这件事的人。

windows-server-2008 cluster active-directory ldap high-availability

6
推荐指数
2
解决办法
1万
查看次数

寻求分布式、容错、联网的块存储

我正在寻找一个分布式的、容错的网络存储系统,它在客户端上公开块设备(而不是文件系统)。

  • 客户端的块设备应该同时写入多个存储节点
  • 只要不是所有支持它的存储节点都出现故障,客户端的块设备就不应该出现故障
  • 当存储节点出现故障或添加/删除时,主节点应自动重新分配存储数据
  • 单个主(仅用于元数据)就可以了

因此,理想情况下,该架构与 moosefs ( http://www.moosefs.org/ )非常相似,但不是公开使用熔断器客户端安装的真实文件系统,而是公开客户端上的块设备。

我知道 iscsi 和 drbd,但两者似乎都没有提供我正在寻找的东西。或者我错过了什么?

storage high-availability block-device

6
推荐指数
1
解决办法
1891
查看次数

Keepalived 的 virtual_router_id - 每个节点应该是唯一的吗?

我有两个运行 keepalived 的节点和两个 VIP,例如

Node 1      Node 2
VIP1        VIP2
Run Code Online (Sandbox Code Playgroud)

因此,在每一个节点,我有两个定义vrrp_instance,所以我假定这两个vrrp_instance在我的keepalived.conf假设是唯一的,但也可以是另一个节点上相同的值,对不对?

high-availability keepalived

6
推荐指数
1
解决办法
2万
查看次数

如何打造高可用的应用服务器?

我正在使用一些使用移动互联网与我的应用程序服务器进行通信的硬件单元。

最初,硬件在硬件中有一个硬编码的 IP 地址(负载平衡器)用于通信,用于将流量路由到我的应用程序服务器;现在,如果负载均衡器出现故障,它会导致单点故障,它后面的整个冗余基础设施变得无用,因为它的目标是共享负载,而不是保持可用性。

现在我要求硬件创建者将其切换为使用 DNS,通过使用多个A 记录,我得到了更好的结果。在这种情况下,我可以让应用程序服务器直接与硬件一起工作;但是如果一台服务器宕机,一些硬件单元会暂时无法通信,但它会在 20-30 分钟内到达另一台服务器;因为 DNS 故障转移并不总是有效。

那么我怎样才能克服这个问题并让我的应用程序服务器一直以某种方式工作呢?

domain-name-system failover high-availability load-balancing

6
推荐指数
2
解决办法
1238
查看次数

高可用性堡垒主机 - 最佳实践、ELB、EIP?

我目前正在尝试找出一个好的配置来使堡垒主机高度可用。我想达到以下目标:

  1. 堡垒主机需要能够承受可用区故障和 ec2 实例故障。短暂的停机时间(几分钟)可能是可以接受的。
  2. 堡垒主机需要可通过永久 DNS 条目访问。
  3. 无需人工干预

我目前的设置如下:堡垒主机在两个可用区的 Auto Scaling 组中,ELB 在 Auto Scaling 组前面。

这种设置有几个优点:

  • 使用 CloudFormation 轻松设置
  • 可以使用两个 AZ 上的 Auto Scaling 组来保证可用性
  • 不计入账户 EIP 限制

它也有一些缺点:

  • 在 ELB 后面有两个或更多堡垒主机时,SSH 主机密钥警告很常见,我不希望我们的用户习惯于忽略 SSH 警告。
  • ELB 需要花钱,而不是 EIP。实际上和堡垒主机差不多。这并不是什么大问题,我添加这一点只是为了完整起见。

另一个明显的解决方案是使用 ElasticIP,在我看来,它有一些缺点:

  • 我可以(显然)不直接将 EIP 附加到 Auto Scaling 组
  • 当不使用 Auto Scaling Groups 时,如果旧的主机失败,我必须放置一些东西来启动新的 EC2 堡垒主机,例如使用 AWS Lambda。这增加了额外的复杂性。
  • 当 EIP 手动附加到 Auto Scaling 组时,在可用区失败时,EIP 将被取消附加并且不会重新附加到新实例。同样,这可以通过运行将 EIP 重新附加到实例的程序(在实例或 AWS Lambda 上)来解决。这再次增加了额外的复杂性。

高可用性 SSH 实例(即堡垒主机)的最佳实践是什么?

high-availability amazon-ec2 amazon-web-services amazon-elastic-ip amazon-elb

6
推荐指数
1
解决办法
4070
查看次数

AWS 上的 OpenVPN HA 设置

我们在 AWS 上使用付费版本的 OpenVPN。现在我们想设置 HA,但我们在 AWS 上找不到任何适用于 OpenVPN HA 的解决方案。尝试过OpenVPN 文档,但它不符合 AWS 上的 HA 要求。任何人都可以分享/建议OpenVPN HA ON AWS 的最佳解决方案

openvpn high-availability amazon-web-services

6
推荐指数
1
解决办法
3013
查看次数

带有 Windows Server 2016 的 2 节点集群(主动-被动)

我想用Windows Server 2016标准创建一个带有 2 个服务器的2 节点集群。我的集群应该处于主动-被动配置

  • 没有共享存储(SAN、iSCSI 等)
  • 没有活动目录

我想在两个节点之间传递一个虚拟 IP,然后配置从一个节点切换到另一个节点的服务,具体取决于谁处于活动状态。

我在 Centos 上用 HA 堆栈配置了类似的东西(起搏器,corosync链接

可以在 Windows Server 2016 上做这样的事情吗?

谢谢

windows cluster high-availability virtual-ip windows-server-2016

6
推荐指数
1
解决办法
1728
查看次数

如何使用ELB对Squid服务器进行健康检查?

我想要使​​用 Squid 拥有一个 HA 转发代理解决方案,并且我正在尝试在第 41 页的ELB 解决方案后面使用 Squid 服务器。

然而,我的转发代理服务是一种将流量转发到内部网络(返回到我的公司网络)的服务,即我的 Squid 服务器没有 Internet 连接。因此,对 google.com 等众所周知的 URL 进行健康检查不起作用。

根据上面第 41 页描述的解决方案,ELB 对 Squids 服务器进行健康检查的最佳方式是什么?在这种情况下我应该使用哪个ping 路径?

high-availability squid amazon-elb

6
推荐指数
1
解决办法
7206
查看次数

如何为 HA 设置 Traefik?在 Traefik 前需要反向代理吗?

我正在尝试在生产站点上设置 Traefik,但我正在努力解决一些高可用性问题。我认为我们在 Traefik 集群前面仍然需要一个反向代理。以下是我考虑过的潜在设置,以及为什么似乎需要反向代理:

  1. 设置 DNS A 记录以指向每个 Traefik 节点以进行负载平衡和故障转移。

    • 根据包括this SO questionthis SF question在内的多个站点,不鼓励这种做法。

    • 由于 DNS 缓存和 TTL 问题,即使使用像 DNSMadeEasy 这样的服务似乎也不受欢迎。

  2. 将一条 DNS 记录指向运行 Traefik 的节点之一。

    • 该节点成为 SPOF。我的节点在 CoreOS 上运行,每次更新后都会重新启动,因此我们可以保证每周有几分钟的停机时间。

    • 我们可以在预计停机时将 DNS 记录移动到备用节点。这将是手动管理的痛苦。我可以设想一个与 locksmithd 配对的解决方案可以自动处理这个问题,但我真的不想构建它,它也不会处理意外停机时间。

    • 使用 Docker Swarm(或 Kubernetes)的部分理由是使节点可互换。

  3. 在 Traefik 集群前面放置一个负载均衡器/反向代理。反向代理可以在所有 Traefik 节点之间提供故障转移,DNS 将指向反向代理。

    • 是的,这是一个 SPOF,但根据我的经验,通过这种设置很容易获得良好的正常运行时间。如果需要偶尔维护,可以将 DNS 记录指向新的代理。

我是错过了什么还是想多了?

high-availability reverse-proxy

6
推荐指数
1
解决办法
5369
查看次数

绑定从属接口在 LACP 上没有获得相同的聚合器 ID

我在某些 LACP ( 802.3ad) 不工作的服务器上有一个错误。我在所有服务器上都有一个bond0带有两个eth从属设备的绑定设备,每个接口都插入不同的交换机,并且两个交换机都配置了 LACP。

似乎一切正常,但网络工程师检测到某些 MLAG(Arista LACP 实施)在物理设备启动时无法正常工作。

当我查看/proc/net/bonding/bond0受影响的服务器时,我发现每个界面都有不同的Aggregator ID. 在名义服务器上Aggregator ID是一样的。

该问题可以通过关闭和打开交换机上的端口来重现,然后我们可以观察到尽管物理链路已启动,MLAG 已关闭。该错误存在于 RHEL 6 和 7 上(但并非所有服务器都受到影响)。

配置

#/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
MACADDR=14:02:ec:44:e9:80
IPADDR=xxx.xxx.xxx.xxx
NETMASK=xxx.xxx.xxx.xxx
BONDING_OPTS="mode=802.3ad lacp_rate=slow xmit_hash_policy=layer3+4"
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
NM_CONTROLLED=no
PEERDNS=no

# /etc/sysconfig/network-scripts/ifcfg-eno49 (same for other interface)
HWADDR=14:02:ec:44:e9:80
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
NM_CONTROLLED=no
PEERDNS=no
Run Code Online (Sandbox Code Playgroud)

我们现在有一个解决方法 -eth在服务器上设置和打开界面 - 但这并不理想。

要检查 LACP 协议,我做了

tcpdump -i eno49 -tt -vv -nnn ether host 01:80:c2:00:00:02
Run Code Online (Sandbox Code Playgroud)

我可以在一个接口上每 30 …

networking high-availability lacp rhel6 rhel7

6
推荐指数
1
解决办法
7056
查看次数