前言
上一篇《利用cloudflare转发实现域名免端口访问内网服务》我们通过cloudflare代理转发功能实现域名免端口方式访问家庭内网的博客系统,基本上已经可以完美替代云服务器上的博客系统。本次按计划将剩余几台玩客云组个负载均衡,以提高博客系统对外服务性能(其实也没啥访问量,纯属闲置设备利用)。
开整
这里用到三台设备,1台作为负载均衡服务(服务器A:192.168.1.80),两台作为子节点提供博客系统(服务器B:192.168.1.81,服务器C:192.168.1.82)。 服务器A,提供https代理 和 负载均衡,且需要有IPv6地址可对外提供服务。 服务器B、服务器C 提供博客系统,内网http服务即可
服务器A配置
vi /etc/nginx/nginx.conf
http{
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;
    
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    # 定义backend服务器集群
    upstream backend {
        server 192.168.1.81; # 服务器B
        server 192.168.1.82; # 服务器C
    } 
    # 主服务器提供https服务
    server {
        listen 8099 ssl default_server;
        listen [::]:8099 ssl default_server;
        ssl_certificate    /home/zfj/etc/zfj1441.eu.org.pem;
        ssl_certificate_key    /home/zfj/etc/zfj1441.eu.org.key;
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}
# 重启nginx
systemctl restart nginx
服务器B/C配置
vi /etc/nginx/sites-enabled/default
# 子服务器只需要提供http服务
server{
    server_name _;
    location / {
        root /home/zfj/www/site/public;
        index index.html index.htm index.nginx-debian.html;
        try_files $uri $uri/ =404;
   }
}
# 重启nginx
systemctl restart nginx
其他基本配置
路由器防火墙放通服务器A的https服务
cloudflare域名DNS解析到服务器A的IPv6地址,为方便验证开启“开发模式”(不实用cdn缓存)
测试验证
为方便观察https请求到哪台服务器上,分别修改服务器B、服务器C博客系统主页内容
总结
本次只演示了基本的负载均衡能力,服务器B、服务器C轮询被服务器A调用。复杂的负载均衡以后有需要在研究。