nginx 지원 TCP 4 층 에이전트 와 부하 균형 stream 모듈

4222 단어
1. ngxstream_core_모듈 모듈
nginx 는 1.9.0 부터 stream 모듈 을 새로 추가 하여 4 층 프로 토 콜 의 퍼 가기, 대리 또는 부하 균형 등 을 실현 합 니 다.
  • 형식: listen address: port [ssl] [udp] [backlog = number] [bind] [pv6only = on | off] [reuseport] [so keepalive = on | off | [keepidle]: [keepintvl]: [keepcnt]];감청 포트;기본 값 은 tcp 프로 토 콜 입 니 다.udp: udp 프로 토 콜 을 감청 하 는 포트;

  • 2. ngxstream_proxy_모듈 에이전트 모듈
    TCP, UDP (1.9, 13), UNIX 도 메 인 소켓 에 프 록 시 데이터 흐름 을 허용 합 니 다.
    (1) proxy_pass address;
    프 록 시 주 소 를 설정 합 니 다.이 주 소 는 도 메 인 이름 이나 IP 주소, 포트 나 UNIX 도 메 인 소켓 경로 로 지정 할 수 있 습 니 다.
    (2) proxy_timeout timeout;
    클 라 이언 트 나 프 록 시 서버 연결 에 있 는 두 번 의 연속 읽 기와 쓰기 동작 사이 에 시간 을 초과 합 니 다.이 시간 안에 데 이 터 를 보 내지 않 으 면 연결 이 닫 힙 니 다.기본 값 10m;
    (3) proxy_connect_timeout time;
    nginx 와 프 록 시 서버 가 연결 을 시도 하 는 시간 초과 설정;기본 값 은 60s 입 니 다.
      :
    stream {
    upstream sshsrvs {
    server 192.168.10.130:22;
    server 192.168.10.131:22;
    hash $remote_addr consistent;
    }
    
    server {
    listen 172.16.100.6:22202;
    proxy_pass sshsrvs;
    proxy_timeout 60s;
    proxy_connect_timeout 10s;
    }
    }
    

    3. 응용 예시
    stream 모듈 의 용법 은 http 모듈 과 차이 가 많 지 않 고 관건 적 인 것 은 문법 이 거의 일치 하 는 것 이다.
  • 백 엔 드 서버 단일 호스트 스케줄 링 vs 서버 프 록 시 설정:
  • [root@vs-110 ~]# vim /etc/nginx/nginx.conf
    # For more information on configuration, see:
    #   * Official English Documentation: http://nginx.org/en/docs/
    #   * Official Russian Documentation: http://nginx.org/ru/docs/
    
    user nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /run/nginx.pid;
    
    # Load dynamic modules. See /usr/share/nginx/README.dynamic.
    include /usr/share/nginx/modules/*.conf;
    
    events {
        worker_connections 1024;
    
    stream {
          server {
                     listen 22922;
                     proxy_pass 192.168.10.11:22;  #ssh     rs1    22  
                   }
     server{
                   listen 80;
                    proxy_pass 192.168.10.12:80;#http   rs2    80  
                   }
    
    }
    [root@vs-110 ~]# nginx -t#    
    [root@vs-110 ~]# systemctl start nginx #  nginx
    [root@vs-110 ~]# ss -tnlp#        
    State      Recv-Q Send-Q                       Local Address:Port                                      Peer Address:Port              
    LISTEN     0      128                                      *:22922                                                *:*          
    
  • 클 라 이언 트 테스트 ssh 연결:
  • [root@kvm-100 ~]# ssh -p 22922 [email protected]
    [root@rs1 ~]# ip addr
    eth1:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 52:54:00:4e:97:c0 brd ff:ff:ff:ff:ff:ff
        inet 192.168.10.11/16 brd 192.168.255.255 scope global noprefixroute eth1#ssh       rs1     
     [root@rs1 ~]# curl http://172.16.15.110/
    

    RS2 192.168.10.12

    #http rs2
  • 백 엔 드 서버 그룹 스케줄 링 vs 서버 프 록 시 설정:
  • [root@vs-110 ~]# vim /etc/nginx/nginx.conf
    
    # For more information on configuration, see:
    #   * Official English Documentation: http://nginx.org/en/docs/
    #   * Official Russian Documentation: http://nginx.org/ru/docs/
    
    user nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /run/nginx.pid;
    
    # Load dynamic modules. See /usr/share/nginx/README.dynamic.
    include /usr/share/nginx/modules/*.conf;
    
    events {
        worker_connections 1024;
    }
    stream {
               upstream sshsrvs{     #ssh          22  ,        
                         server 192.168.10.11:22;
                         server 192.168.10.12:22;
                    }
                    {
               upstream websrvs{     #ssh          80  ,        
                         server 192.168.10.11:80;
                         server 192.168.10.12:80;
                    }
              upstream mysrvs{     #ssh          3306  ,        
                         server 192.168.10.11:3306;
                         server 192.168.10.12:3306;
                    }
       server {
                     listen 22922;
                     proxy_pass sshsrvs;  #ssh          22  
                   }
     server{
                   listen 80;
                    proxy_pass websrvs; #http          80  
                   }
     server{
                   listen 3306;
                    proxy_pass mysrvs; #mysql          3306  
                   }
     }
    ------------------------------------------
    

    좋은 웹페이지 즐겨찾기