谷歌负载均衡器出现问题,用户无法发送到最近的实例

谷歌负载均衡器出现问题,用户无法发送到最近的实例

我在 Google Cloud Platform 中创建了 6 个实例

  • 亚洲第二
  • 2 在美国
  • 欧洲2个

每个区域有 3 个组

当我尝试访问我的应用程序时,我会被随机发送到一个区域,无论我在欧洲还是其他地方。

有关信息,我遵循了此文档https://cloud.google.com/compute/docs/load-balancing/http/cross-region-example

我仅添加一个区域并删除 http 配置。

6 个实例上没有流量,只有我。所有 6 个实例都可用,健康检查也呈阳性。

这是我刷新页面时的最后结果:

  1. 亚洲
  2. 欧洲
  3. 我们
  4. 欧洲
  5. 亚洲
  6. 亚洲

如果您有任何想法或者需要更多详细信息来帮助我,请直接询问,我会的。

更新 1

在每个实例中我都有一个带有一个默认conf的一个nginx:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    return 301 https://$host$request_uri;
}



server {
    listen 443 ssl;
    server_name _;
    ssl_certificate /etc/nginx/ssl/secure.crt;
    ssl_certificate_key /etc/nginx/ssl/mysecure.key;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

然后我有我的应用程序配置:

server {
    listen 443 ssl;
    server_name myapp.example.com www.myapp.example.com;
    ssl_certificate /etc/nginx/ssl/secure.crt;
    ssl_certificate_key /etc/nginx/ssl/mysecure.key;

    root /usr/share/nginx/html/app/web;

    error_log /var/log/nginx/myapp.example.com_error.log;
    access_log /var/log/nginx/myapp.example.com.log;

    if ($http_x_forwarded_proto = "http") { 
        return 301 https://$host$request_uri; 
    }

    location / {
        # try to serve file directly, fallback to app.php
        try_files $uri /app.php$is_args$args;
    }
    # PROD
    location ~ ^/app\.php(/|$) {
        fastcgi_pass php:9000;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        internal;
    }
}

当我去https://ip-负载均衡器,它运行完美,总是获得最接近的实例。

但当我尝试https://myapp.example.com,它出错了,我在日志中看到有一些重定向。此外,当我检查负载均衡器的日志时,它将请求发送到好的实例,但我不知道如何跟踪该请求。

谢谢

答案1

这是 nginx 上的问题。我有多个 nginx 堆栈,对于它们收到的每个请求,它们都会执行循环来调用写入 php。

PHP 堆栈位于 6 台服务器上,因此它是随机的。

我将其更改为为每个区域创建 3 个不同的堆栈。

PS:我正在将docker与rancher一起使用。

相关内容