插件窝 干货文章 如何在Linux上配置高可用的端口转发

如何在Linux上配置高可用的端口转发

HAProxy Keepalived 转发 Nginx 886    来源:    2025-04-15

Linux高可用端口转发配置指南

在Linux上配置高可用的端口转发通常需要结合多种技术来实现负载均衡和故障转移。以下是几种常见的解决方案:

1. 使用Keepalived + IPVS (LVS)

配置步骤

  1. 安装必要软件

    sudo apt-get install keepalived ipvsadm  # Debian/Ubuntu
    sudo yum install keepalived ipvsadm     # CentOS/RHEL
    
  2. 配置Keepalived (/etc/keepalived/keepalived.conf):

    vrrp_instance VI_1 {
       state MASTER           # 主节点设为MASTER,备节点设为BACKUP
       interface eth0        # 监听的网络接口
       virtual_router_id 51
       priority 100          # 主节点优先级高于备节点
       advert_int 1
    
       authentication {
           auth_type PASS
           auth_pass 1111
       }
    
       virtual_ipaddress {
           192.168.1.100     # 虚拟IP地址
       }
    }
    
    virtual_server 192.168.1.100 80 {
       delay_loop 6
       lb_algo rr            # 轮询算法
       lb_kind DR            # 直接路由模式
       protocol TCP
    
       real_server 192.168.1.101 80 {
           weight 1
           TCP_CHECK {
               connect_timeout 3
           }
       }
    
       real_server 192.168.1.102 80 {
           weight 1
           TCP_CHECK {
               connect_timeout 3
           }
       }
    }
    
  3. 启用IP转发

    echo 1 > /proc/sys/net/ipv4/ip_forward
    
  4. 启动服务

    systemctl start keepalived
    systemctl enable keepalived
    

2. 使用HAProxy实现高可用

配置步骤

  1. 安装HAProxy

    sudo apt-get install haproxy  # Debian/Ubuntu
    sudo yum install haproxy     # CentOS/RHEL
    
  2. 配置HAProxy (/etc/haproxy/haproxy.cfg):

    frontend http-in
       bind *:80
       default_backend servers
    
    backend servers
       balance roundrobin
       server server1 192.168.1.101:80 check
       server server2 192.168.1.102:80 check
    
    listen stats
       bind *:8080
       stats enable
       stats uri /haproxy?stats
    
  3. 启动HAProxy

    systemctl start haproxy
    systemctl enable haproxy
    

3. 使用Nginx作为TCP/UDP负载均衡器

对于较新版本的Nginx(1.9.0+),可以支持TCP/UDP负载均衡:

  1. 安装带stream模块的Nginx

    sudo apt-get install nginx-extras  # Debian/Ubuntu
    
  2. 配置Nginx (/etc/nginx/nginx.conf):

    stream {
       upstream backend {
           server 192.168.1.101:12345;
           server 192.168.1.102:12345;
       }
    
       server {
           listen 12345;
           proxy_pass backend;
       }
    }
    
  3. 启动Nginx

    systemctl start nginx
    systemctl enable nginx
    

4. 使用iptables进行简单端口转发

对于简单的端口转发(无负载均衡):

# 启用IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward

# 设置端口转发规则
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.101:80
iptables -t nat -A POSTROUTING -j MASQUERADE

# 保存规则
iptables-save > /etc/iptables.rules

高可用性建议

  1. 结合Keepalived和HAProxy/Nginx

    • 使用Keepalived管理虚拟IP
    • 使用HAProxy或Nginx实现负载均衡
    • 这样可以同时实现IP层和应用层的高可用
  2. 健康检查

    • 确保配置了适当的健康检查机制
    • 及时剔除故障节点
  3. 监控

    • 监控转发服务的状态
    • 设置适当的告警机制
  4. 日志记录

    • 确保记录足够的日志信息以便故障排查

以上方案可以根据实际需求进行组合和调整,以达到最佳的高可用端口转发效果。