是否建议使用负载平衡或 HA 设置?

是否建议使用负载平衡或 HA 设置?

我有一个应用程序在 Web 服务器 (ws1) 上运行,并连接到应用服务器 (as1)。我在另一个 Web 服务器 (ws2) 和另一个应用服务器 (as2) 上运行同一个应用程序。但我只有一个反向代理服务器。所以我的设置类似于

服务器设置图

因此,目前我正在这些服务器之间进行负载平衡。我的 Nginx 配置如下:

http {
    upstream myapp1 {
        server ws1.example.com;
        server ws2.example.com;

    }

    server {
        listen 80;

        location / {
            proxy_pass http://myapp1;
        }
    }
}

但是,使用 Nginx 进行负载平衡还是进行 HA 设置更好?如果我进行 HA 设置,是否应该将 Web 服务器和应用服务器进行集群?

答案1

对服务器进行负载平衡非常好,但是,如果提供负载平衡的服务器发生故障,则其他两台服务器都将无法访问。

解决这个问题的一种方法是建立一个 HA 安排,这样如果负载平衡器掉线,另一台服务器将立即接替它。

为了提供 HA,你可以使用类似保持活跃它使用 VRRP 协议来提供高可用性 Internet 地址。事实上,它工作得很好。类似下面的配置就可以工作。

假设你希望某个服务在 10.10.10.100 上可见

创建两台机器,一台的 IP 为 10.10.10.101,另一台的 IP 为 10.10.10.102,在两台机器上安装 keepalived 服务。记得在两台机器的 sysctl.conf 中设置:net.ipv4.ip_nonlocal_bind = 1。

按照描述设置 nginx 配置。

第一个节点keepalived.conf:

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass secretpass
    }
    virtual_ipaddress {
        10.10.10.100  
    }
}

第二个节点:

vrrp_instance VI_1 {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 150
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass secretpass
        }
        virtual_ipaddress {
            10.10.10.100
        }
    }

现在会发生的情况是,当主机运行时,它将提供虚拟 IP 10.10.10.100。如果您停止这台机器,另一台机器将接管该 IP。

更完整的例子:Ubuntu 14.04 上简单的 keepalived 故障转移设置

相关内容