Artifactory HA architecture presents a Load Balancer connected to a cluster of two or more Artifactory servers that share a common database and Network File System. The Artifactory cluster nodes must be connected through a fast internal LAN in order to support high system performance as well as to stay synchronized and notify each other of actions performed in the system instantaneously. One of the Artifactory cluster nodes is configured to be a "master" node. Its roles are to execute cluster-wide tasks such as cleaning up unreferenced binaries. JFrog support team is available to help you configure the Artifactory cluster nodes. It is up to your organization's IT staff to configure your load balancer, database and network file system. Network TopologyLoad BalancerThe load balancer is the entry point to your Artifactory HA installation and optimally distributes requests to the artifactory server nodes in your system. Your load balancer must support session affinity (sticky sessions) and It is the responsibility of your organization to manage and configure it correctly. The code samples below show some basic examples of load balancer configurations: First install the following modules:
LoadModule headers modules/mod_headers.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
Then configure as follows:
<VirtualHost *:80>
ServerAdmin admin@test.com
ServerName apache-ha-test
ServerAlias apache-ha-test.jfrog.local
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/artifactory/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://tomcats>
# Artifactory server #1
BalancerMember http://10.0.0.32:8081 route=art1
# Artifactory server #2
BalancerMember http://10.0.0.33:8081 route=art2
ProxySet lbmethod=byrequests
ProxySet stickysession=ROUTEID
</Proxy>
ProxyPreserveHost on
ProxyPass /balancer-manager !
ProxyPass / balancer://tomcats/
RewriteEngine On
RewriteRule ^/$ /artifactory [R,L]
<Location /balancer-manager>
SetHandler balancer-manager
Order deny,allow
Allow from 10.0.0 192.168.0
</Location>
LogLevel warn
ErrorLog /var/log/httpd/apache-ha-test.error.log
CustomLog /var/log/httpd/apache-ha-test.access.log combined
</VirtualHost> |
http {
...
...
...
upstream artifactory {
ip_hash; # for stickiness by IP
server IP_SERVER_1:8081;
server IP_SERVER_2:8081;
}
server {
listen 80;
server_name YOUR_SERVER_NAME;
...
...
...
rewrite ^/$ http://$host/artifactory/webapp/login.html;
location / {
proxy_pass http://artifactory;
}
}
}
|
More details are available on the . Artifactory Server ClusterEach Artifactory server in the cluster receives requests routed to it by the load balancer. All servers share a common database and NFS mount, and communicate with each other to ensure that they are synchronized on all transactions. Local Area NetworkTo ensure good performance and synchronization of the system, all the components of your Artifactory HA installation must be installed on the same high-speed LAN. In theory, Artifactory HA could work over a Wide Area Network (WAN), however in practice, network latency makes it impractical to achieve the performance required for high availability systems. |