Terminating SSL on HA Proxy is practical, because whole communication behind HA Proxy is now non-SSL, thus we get more performance.
Another adjustment is memcached for owncloud's session storage, instead of previously used apcu. This offers centralized session storing for all loadbalanced nodes with owncloud.
Memcached setup:
To enable this feature, we need to install memcached daemon and php library: memcached php-memcached
Enable memcached module in /etc/php/conf.d/memcached.ini (ArchLinux).
Copy systemd .service file for memcached and adjust port (if needed):
cp /usr/lib/systemd/system/memcached.service /etc/systemd/system/memcached.service Custom port: ExecStart=/usr/bin/memcached -l 127.0.0.1:11211Enable memcached in /etc/php/php.ini in [Session] section:
session.save_handler = memcached session.save_path = "172.16.0.1:11211"NOTE: there is difference between memcached and memcache. Session.save_path listener 172.16.0.1:11211 is on HA Proxy, proxied to 127.0.0.1:11211.
Add memcached entry to owncloud config file /usr/share/webapps/owncloud/config/config.php:
'memcached_server' => array('172.16.0.1', 11211),
HA Proxy configuration:
Here's my complete haproxy.cfg:
global log 127.0.0.1 local0 log 127.0.0.1 local1 notice #log loghost local0 info maxconn 128 #chroot /usr/share/haproxy uid 99 gid 99 daemon #debug #quiet defaults log global mode http option tcplog option dontlognull retries 3 option redispatch maxconn 32 contimeout 5000 clitimeout 50000 srvtimeout 50000 listen stats 127.0.0.1:1936 mode http stats enable stats hide-version stats realm Haproxy\ Statistics stats uri / stats auth name:password stats refresh 10s # rasppi-p frontend frontend rasppi bind 172.16.0.1:443 ssl crt /etc/haproxy/ssl/server.pem mode http acl url_trans path_beg /transmission /rpc #/memcached use_backend nginx-transmission if url_trans default_backend nginx-owncloud # backend for owncloud backend nginx-owncloud mode http balance roundrobin option httpclose server rasppi-p 127.0.0.1:8080 weight 15 check inter 5000 rise 2 fall 3 server rasppi-t 172.16.0.3:8080 weight 10 check inter 5000 rise 2 fall 3 server krisko 172.16.0.2:8080 weight 200 check inter 5000 rise 2 fall 3 # backend for transmission backend nginx-transmission mode http option httpclose #option forwardfor balance roundrobin server rasppi-p 127.0.0.1:8180 check inter 5000 rise 2 fall 3 # rasppi-p mysql listener listen mysql 172.16.0.1:3306 mode tcp balance roundrobin server rasppi-p 127.0.0.1:3306 check inter 5000 rise 2 fall 3 # rasppi-p memcached listener listen memcached 172.16.0.1:11211 mode tcp balance roundrobin server rasppi-p 127.0.0.1:11211 check inter 5000 rise 2 fall 3 # haproxy stats listener listen haproxy-stats 172.16.0.1:1936 mode http option httpclose server rasppi-p 127.0.0.1:1936 check inter 5000 rise 2 fall 3I use frontends for mysql and memcached for better scalability and to be able to monitor services via HA Proxy stats.
Updated scheme:
No comments:
Post a Comment