Haproxy, varnish, h2o를 통한 환경 구축

4570 단어 h2oVarnishhaproxy
No, Varnish still won't add SSL/TLS support.

varnish5.0.0이라도 ssl의 대응은 없는 것 같습니다
Instead in Varnish 4.1 we have added support for Willys PROXY protocol which makes it possible to communicate the extra details from a SSL-terminating proxy, such as HAProxy, to Varnish.

HAProxy를 사용하면 그런 느낌이 들기 때문에 설정을 해봤어요.
varnish하면 예전부터 ssl을 지원하지 않고 ssl에 대응하기 위해nginx를 넣는 등 LB로 하는 방법이 있었는데 이것은 HAProxy에서nginx의 역할을 하는 것과 같다.

버전 정보

  • HA-Proxy 1.5.4
  • varnish 4.1.3
  • h2o 2.0.4
  • 참조 페이지


    여기를 참고하여 설정하고 만약 순조롭지 못하면 아래의 절차를 확인하는 것이 좋으니 먼저 기재해 두세요.
    https://blog.feryn.eu/varnish-4-1-haproxy-get-the-real-ip-by-leveraging-proxy-protocol-support/

    varnish 설정


    /etc/varnish/default.편집vcl


    default.vcl
    # Default backend definition. Set this to point to your content server.
    backend default {
        .host = "127.0.0.1";
        .port = "8080";
    }
    
    sub vcl_recv {
        set req.http.x-clientip = client.ip;
        set req.http.x-serverip = server.ip;
        set req.http.x-localip = local.ip;
        set req.http.x-remoteip = remote.ip;
    }
    
    backend default h2o측에 가깝기 때문에 기본적으로 변하지 않습니다.vcl_recv 얼마나 추가됐나.

    varnish 재부팅

    [test-web01 ~]# /etc/init.d/varnish restart
    Stopping Varnish Cache:                                    [  OK  ]
    Starting Varnish Cache:                                    [  OK  ]
    You have new mail in /var/spool/mail/root
    [test-web01 ~]# 
    
    특별한 실수만 안 하면 돼.

    HAProxy 설정


    /etc/haproxy/haproxy.cfg의 수정


    인증을 위한 서버 인증서를 준비해야 합니다.
    haproxy.cfg
    frontend http-in
            bind *:80
                    bind *:443 ssl crt /****/****/****/****.pem
            default_backend servers
    
    backend servers
            server server1 127.0.0.1:6081
    

    HAProxy 다시 시작


    특별한 실수만 안 하면 돼.
    인증 주변에서 Warning이 발생하지만 error가 아니면 우선 문제가 없습니다.
    [test-web01 ~]# /etc/init.d/haproxy restart
    Enter PEM pass phrase:
    Stopping haproxy:                                          [  OK  ]
    Enter PEM pass phrase:
    Starting haproxy: Enter PEM pass phrase:
                                                               [  OK  ]
    [test-web01 ~]# 
    

    h2o 설정


    /etc/h2o/h2o.conf 수정


    기본 상태를 유지하면 localhost:80의port를 8080로 변경합니다.
    나는 localhost:443의 설정이 있다고 생각했지만varnish 측에서 h2o에 443 접근이 없기 때문에 그렇게 삭제하는 것은 문제없다.
    h2o.conf
    user: nobody
    hosts:
      "localhost:80":
        listen:
          port: 8080
          host: 0.0.0.0
        paths:
          "/":
            file.dir: /var/www/html
    access-log: /var/log/h2o/access.log
    error-log: /var/log/h2o/error.log
    pid-file: /var/run/h2o/h2o.pid
    

    h2o의 재시작


    특별한 실수만 안 하면 돼.
    [test-web01 ~]# /etc/init.d/h2o restart
    Stopping h2o:                                              [  OK  ]
    Starting h2o: start_server (pid:9908) starting now...
                                                               [  OK  ]
    [test-web01 ~]# 
    

    브라우저에서 확인


    http를 통해 액세스



    https로 액세스



    varnish 동작을 확인했고 http,https에 접근할 수 있습니다.

    좋은 웹페이지 즐겨찾기