【Web 服务】攻坚克难nginx负载均衡的一天

nginx负载均衡调度算法

包括最常用的轮询(Round Robin)、IP Hash、Least Connections等

轮询(Round Robin)算法
轮询算法是最基础的负载均衡算法之一,它会按照顺序逐个将请求分发给后端服务器。假设有3台后端服务器A、B、C,当有一个请求到达负载均衡器时,第1个请求会被转发至服务器A,第2个请求会被转发至服务器B,第3个请求会被转发至服务器C,以此类推。

轮询算法简单易懂,但有一个明显的缺点,即无法考虑到不同服务器的实际负载情况。如果其中一台服务器的负载过高,它仍然会被分配到请求,可能会导致该服务器的崩溃或性能下降。

IP Hash算法
IP Hash算法基于客户端的IP地址,将不同的请求分配给不同的后端服务器。这意味着相同的客户端IP地址将始终被分配到同一台后端服务器。

假设有3台后端服务器A、B、C,当有一个请求到达负载均衡器时,根据客户端IP地址的Hash值,决定该请求应该被转发至哪台服务器。这样,同一客户端的所有请求都将发送到相同的服务器。

Least Connections算法
Least Connections算法会将新的请求分配给当前连接数最少的后端服务器。它考虑了实际负载情况,能够避免某些服务器负载过高而导致性能下降的问题。

假设有3台后端服务器A、B、C,当前连接数分别为2、3、4,当有一个新请求到达负载均衡器时,该请求将被分配给服务器A,因为它的连接数最少。

Weighted Round Robin算法
Weighted Round Robin算法是基于轮询算法的改进版本,它可以设置每台服务器的权重,并按照权重比例分配请求。例如,如果服务器A的权重是2,服务器B的权重是1,那么在分配请求时,服务器A将获得2次请求,服务器B将获得1次请求。

负载均衡https的访问,如何实现?

要实现负载均衡HTTPS的访问,需要涉及到SSL证书的处理、负载均衡算法的配置以及反向代理服务器的设置等多个方面。下面是大致的步骤:

获取SSL证书
首先需要获取SSL证书,并将其安装在所有后端服务器上。可以从证书颁发机构(CA)或自建CA获得SSL证书。

配置upstream
与HTTP负载均衡类似,需要将所有后端服务器的IP地址和监听HTTPS的端口号添加到Nginx配置文件中的upstream段中。例如:

upstream backend {
    server 192.168.0.101:443;
    server 192.168.0.102:443;
    server 192.168.0.103:443;
}

配置负载均衡算法
也与HTTP负载均衡类似,需要为upstream指定一种负载均衡算法。例如,要使用轮询算法,可以不需要特别配置,因为默认就是轮询算法。如果要使用其他算法,则需要进行相应的配置。

配置反向代理
要配置反向代理服务器,需要指定HTTPS请求的监听端口,并将请求转发给upstream。此外,还需要配置TLS协议和SSL证书。例如:

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;
    location / {
        proxy_pass https://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

其中,listen指定了服务器监听HTTPS请求的端口号;ssl_certificate和ssl_certificate_key分别指定了SSL证书和私钥文件的路径;proxy_pass指定了请求转发给哪个upstream。其他配置与HTTP负载均衡类似。

注意,在这个例子中我们使用了https,所以需要在Nginx安装时加入ssl支持.在Ubuntu系统上,可以通过以下命令安装:

sudo apt-get update
sudo apt-get install nginx-full

测试负载均衡器
完成以上配置后,保存Nginx配置文件并重启Nginx服务。然后可以使用curl或浏览器等工具测试负载均衡器是否正常工作。例如,访问https://example.com,多次刷新页面,可以看到请求被轮流转发给不同的后端服务器。

搭载了负载均衡的后端web服务器日志是记录谁的

LB的呢?还是User的呢?

录所有请求访问它的客户端IP地址、访问时间、请求方法、请求URL、响应状态码等信息。这些日志记录的是发起请求的客户端的信息。因此,可以说这些日志记录的是User(用户)的信息。

PEM格式

通常来说,PEM格式是一种用于存储和传输加密证书、公钥、私钥等信息的编码格式。PEM编码的数据通常包含BEGIN/END标记以及Base64编码的数据。

在使用PEM格式时,PEM文件可以包含公钥或私钥,也可以同时包含公钥和私钥。其中,公钥和私钥都是非对称加密算法中的概念,公钥用于加密数据,私钥用于解密数据。

所以我们可以将PEM文件看做是存储了公钥或私钥的容器,根据实际情况可以存储公钥或私钥。一般来说,PEM文件中的.pem后缀名并不能确定其中存储的是公钥还是私钥,需要根据文件内容来确定其具体类型。因此,不能简单地将.pem文件视为公钥或私钥。

ab 压力测试

ab -c 1000  -n 20000  http://192.168.227.144/

“-c 1000"表示并发连接数为1000,”-n 20000"表示总请求数为20000。因此,这个请求数量不包括连接数。在这个命令中,ab工具将会创建1000个并发连接,并发送总共20000个请求以测试被测应用程序的性能

如果您将总请求数20000除以并发连接数1000,得到的结果是每个连接需要发送20个请求。

在实际测试中,并发连接数和请求分配并不完全均匀,所以每个连接最终发送的请求数可能会有所不同。

dns与keepalive结合(vip)的应用

DNS负载均衡和Keepalived是两个不同的技术,可以结合使用以实现高可用性和负载均衡。

在这种情况下,您需要将VIP(虚拟IP)配置在Keepalived上,并将其设置为Master/Backup模式。然后,在DNS负载均衡器中,您可以将多个真实服务器(Real Server)的IP地址添加到IP池中,并将其与VIP关联。这样,当Keepalived检测到主服务器故障时,它将自动切换到备份服务器,并将VIP转移到其上。

将多个真实服务器(Real Server)的IP地址添加到IP池中,并将其与VIP关联。如何做????

要将多个真实服务器(Real Server)的IP地址添加到IP池中,并将其与VIP关联,您需要执行以下步骤:

在DNS负载均衡服务器上安装并配置相应的软件,例如BIND、PowerDNS等。

在配置文件中添加一个新的zone,如下所示:

zone "example.com" {
    type master;
    file "/etc/bind/db.example.com";
    allow-transfer { IP_Address_of_Slave_DNS_Server; };
    also-notify { IP_Address_of_Slave_DNS_Server; };
    notify yes;
};

这里,“example.com”是您要管理的域名,/etc/bind/db.example.com是存储有关该域名的详细信息的文件的位置。

编辑db.example.com文件,添加一条包含VIP和多个真实服务器IP地址的记录,如下所示:

$TTL    86400
@       IN      SOA     ns1.example.com. root.example.com. (
           2012030801 ;Serial
           3600 ;Refresh
           1800 ;Retry
           604800 ;Expire
           86400 ;Minimum TTL
           )
@       IN      NS      ns1.example.com.
@       IN      NS      ns2.example.com.
ns1     IN      A       IP_Address_of_Nameserver_1
ns2     IN      A       IP_Address_of_Nameserver_2
www     IN      A       VIP_Address
@       IN      A       RealServer1_IP
@       IN      A       RealServer2_IP
@       IN      A       RealServer3_IP

这里,“www”是您要负载均衡的主机名,“VIP_Address”是虚拟IP地址,“RealServer1_IP”、“RealServer2_IP”和“RealServer3_IP”是要用于实际负载均衡的真实服务器的IP地址。

保存并退出文件,重启DNS服务以使更改生效。

完成上述步骤后,您已成功将多个真实服务器的IP地址添加到IP池中,并将其与VIP关联。现在,当客户端请求访问您的网站时,DNS负载均衡器将自动将请求转发到可用的真实服务器,从而实现负载均衡和高可用性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日 近 长 安 远

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值