我正在使用AWS Load Balancer和3台EC2服务器,而我正在尝试在网站维护时提供维护页面.
此页面需要返回503 HTTP代码,因为它是维护模式的正确代码,可以防止SEO的可能问题.
当我从任何服务器返回503代码时,Load Balancer将其设置为"Not In Service",当所有服务器返回503时,网站返回一个空白页面(因为所有服务器都断开连接).
我的问题是:
1)如果没有健康的服务器,有没有办法为负载均衡器的访问者提供带有消息的自定义静态页面?
2)或者如何配置Load Balancer的健康检查它不会将503视为将服务器标记为"不健康"的原因?
谢谢!
load-balancing amazon-ec2 amazon-web-services maintenance-mode
.Net是否有像terracotta(http://www.terracotta.org/)这样的开源集群产品?
我遇到了麻烦.我按照我在这里找到的指南
并通过cert导出并创建所有这些文件,但它不会告诉您哪个文件在哪个字段中.我尝试了我认为的所有组合,但它不接受它
我按如下方式设置平衡器

然后我尝试设置证书

然后你可以看到它告诉我它无效.
如果它帮助我从IIS导出并按照提供的链接上的教程,证书是DigiCert通配符证书,即(*.domain.com)
openssl load-balancing ssl-certificate amazon-web-services amazon-elb
这可能是不可能的问题.我已经尝试了一切.我觉得在某个地方的交换机上有一个人,旋转着他的胡子.
问题:
我有Amazon EC2运行应用程序.当只有一个实例且没有负载均衡器时,它可以正常运行.
但是在我的生产环境中,我有两个相同的实例在一个负载均衡器后面运行,在执行某些任务时,比如生成PDF并将其附加到电子邮件的功能,根本不会发生任何事情,以及在网络中使用Google Developer工具时选项卡一旦超时命中(我将其设置为30秒),我会收到错误"504 Gateway Timeout".
我的数据库是外部的,在Amazon RDS上.
我想....如果我可以强制客户端保持连接到他们登录的初始服务器,这个问题就会解决,因为我的理解是当实例1尝试联系到时,504网关超时正在发生instance-2执行任务.
只有在使用负载平衡时才会发生这种情况,但是直接连接到我的两台服务器之一时就不会发生这种情况.
负载均衡器设置:
更多想法:
话虽这么说,我不是用HTTPS测试,而是用普通的HTTP测试.即使我的证书提供商表示,我也不相信SSL已正确设置.我怀疑的原因是当我尝试键入https://app.myapplication.com时,我在Google Developer Tools的Network选项卡中收到错误"(failed)net :: ERR_CONNECTION_CLOSED".但这应该是不适用的,因为即使使用常规HTTP我也遇到了问题.我可以稍后对SSL进行故障排除.
重申一下,我的问题是在使用某些功能时遇到"504 Gateway Timeout"问题,但偶尔也会随机而不是加载页面(但很少).只有在使用负载平衡时才会出现这个问题,但是直接连接到我的两个实例之一时就不会发生这种问题.
我不知道要问哪个问题,因为我已经跟踪了每个文件到T,双重和三重检查了网络上的所有建议而没有.
我是RabbitMQ的新手,所以请原谅我的琐碎问题:
1)如果在RabbitMQ中进行集群,如果节点发生故障,则加载转移到另一个节点(不停止其他节点).同样,我们也可以在不停止集群中的现有节点的情况下向现有集群添加新的新节点.那是对的吗?
2)假设我们从一个rabbitMQ节点开始,并在其上创建100个队列.现在,制作人开始以更快的速度发送消息 要处理此负载,我们会添加更多节点并创建一个集群.但队列仅存在于第一个节点上.现在节点之间的负载如何平衡?如果我们需要添加更多队列,我们应该在哪个节点添加它们?或者我们可以使用负载均衡器添加它们.
提前致谢
我目前正在GKE上使用Kubernetes,使用Ingress资源在不同的子域上为我的产品的各个部分提供服务.例如:api.mydomain.com,console.mydomain.com,等.
ingress.yml(当前):
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
spec:
  rules:
  - host: api.mydomain.com
    http:
      paths:
        - backend:
            serviceName: api-service
            servicePort: 80
  - host: console.mydomain.com
    http:
      paths:
        - backend:
            serviceName: console-service
            servicePort: 80
这非常有效,L7 GCE负载均衡器路由到适当的位置.但是,我想要做的是将许多功能分支部署部署为子域,以便在推送到生产之前测试和演示新功能.这些可能类似于new-stylesheet.console.mydomain.com或upgraded-algorithm.api.mydomain.com受GitLab CI 环境的启发.
这是每个部署的潜在工作流程:
feature.api.mydomain.com指定serviceName: feature-api-service但枚举和维护所有子域 - >服务映射将会因拆除部署而变得混乱,并创建大量的GCE后端(默认配额为5 ......),因此它并不理想.
Kubernetes是否有任何内置的东西可供我处理?像这样的东西是理想的选择基于匹配的子域的目标服务:
ingress.yml(通缉)
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
spec:
  rules:
  - host: *.api.mydomain.com
    http:
      paths:
        - backend:
            serviceName: {value of …networking load-balancing kubernetes google-kubernetes-engine
我在Google Cloud上运行Kubernetes的网站.目前,一切运作良好 - 通过http.但我需要https.我有几个服务,其中一个是暴露给外面的世界,我们称之为网络.据我所知,这是唯一需要修改的服务.我尝试在GCP的网络部分创建静态IP和TCP/SSL负载均衡器ssl-LB,并在我创建的web.yaml中使用该LB. 创建服务时遇到困难:
Error creating load balancer (will retry): Failed to create load 
balancer for service default/web: requested ip <IP> is 
neither static nor assigned to LB
aff3a4e1f487f11e787cc42010a84016(default/web): <nil>
根据GCP,我的IP是静态的.哈希的LB在任何地方都找不到,无论如何都应该分配给ssl-LB. 如何正确分配?
更多细节:
以下是web.yaml的内容
apiVersion: v1
kind: Service
metadata:
name: web
labels:
  ...
spec:
  type: LoadBalancer
  loadBalancerIP: <RESERVED STATIC IP> 
ports:
- port: 443
  targetPort: 7770
selector:
  ...
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 1
  template:
    metadata:
      labels:
        ...
  spec:
    containers:
    - name: web
      image: …我刚开始学习负载均衡器。以服务器端应用程序(http/https)负载均衡器为例,我假设它侦听特定的 ip 地址,然后根据其算法将 http 请求转发到可用服务器。
那么负载均衡器有没有可能成为瓶颈呢?因为它正在侦听特定的 ip 地址,所以所有请求将首先转到单个负载均衡器。所以我认为可能存在流量超出负载均衡器的限制/容量的情况。
当它成为瓶颈时,我们能做什么?我们可以使用多个负载均衡器吗?
我认为一种可能的解决方案是使用多个负载均衡器并将所有 ip 公开给客户端。(这听起来像客户端负载均衡)所以当客户端想要发送请求时,它可以从 ip 池中选择,然后将请求发送到负载均衡器之一。(例如,可以在此处使用 ZooKeeper。)这是一个有效的解决方案吗?还有其他方法可以使用多个负载均衡器吗?
谢谢。伊森
目前,我正在尝试在 Google Cloud 上创建一个带有两个负载均衡器的 Kubernetes 集群:一个用于后端(在 Spring Boot 中),另一个用于前端(在 Angular 中),其中每个服务(负载均衡器)与 2 个副本(pod)通信. 为了实现这一点,我创建了以下入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: sample-ingress
spec:
  rules:
    - http:
        paths:
          - path: /rest/v1/*
            backend:
              serviceName: sample-backend
              servicePort: 8082
          - path: /*
            backend:
              serviceName: sample-frontend
              servicePort: 80
上面提到的入口可以使前端应用程序与后端应用程序提供的 REST API 进行通信。但是,由于后端提供的身份验证机制,我必须创建粘性会话,以便每个用户都与同一个 POD 通信。澄清一下,如果一个用户在 POD #1 中进行身份验证,POD #2 将无法识别 cookie。
为了解决这个问题,我读到Nginx-ingress设法处理这种情况,我通过此处提供的步骤进行安装:https : //kubernetes.github.io/ingress-nginx/deploy/ using Helm。
您可以在我尝试构建的架构图下方找到:
使用以下服务(我将只粘贴其中一项服务,另一项类似):
apiVersion: v1
kind: Service
metadata:
  name: sample-backend
spec:
  selector:
    app: sample
    tier: …cookies load-balancing kubernetes sticky-session nginx-ingress
有没有办法自动将网站一次性发布到多个位置?
我们的网站在多个服务器之间进行负载平衡,因此当我想要发布时,我必须单独为每个服务器执行此操作.
Thx,Trev
load-balancing ×10
kubernetes ×3
amazon-ec2 ×2
.net ×1
amazon-elb ×1
c# ×1
cookies ×1
networking ×1
openssl ×1
publish ×1
rabbitmq ×1
ssl ×1