trafficserver-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From James Peach <jpe...@apache.org>
Subject Re: Multiple Trafficserver Instances on one system
Date Wed, 04 Apr 2012 03:52:05 GMT

On 03/04/2012, at 4:48 PM, Vaillancourt, Tim wrote:

> Hello Traffiserver users!
> 
> I'd like to start off by thanking the ASF, Yahoo!/Inktomai and other contributes for
making (and donating) this great piece of software! My team is currently implementing Trafficserver
in hopes to replace many Apache HTTPd/mod_proxy proxy servers in our team's production.
> 
> I am e-mailing the list due to an issue (or PEBKAC) I am experiencing when running several
instances of Trafficserver on one system, under custom directories.
> 
> In our environment we install what we call "Binary packages" and "Instance packages",
meaning we will install a compiled "Binary package" version of Trafficserver to say '/opt/tools/trafficserver3'
and use that set of binaries in several smaller "Instance packages" under say '/opt/instances/ts_uploadprx'.
Upon install of an "Instance Package" we symlink the bin, lib, modules dir over from the "Binary
package" ('/opt/tools/trafficserver3') into our instance package, but we'll have a unique
'conf' dir for the given instance. This is working quite well for us with standard Apache
HTTPd, allowing us to spawn several unique instances of Apache, all using one set of binaries.
> 
> When we try this methodology with Trafficserver 3.0.4, we run into several issues preventing
Trafficserver to function.
> 
> Here is an example of an ls on our "ts_uploadprx" instance (notice binaries are symlinked
while cache, conf, logs and share are instance-specific):
> 
> "
> [tim@app013 ts_uploadprx]$ ls -al
> total 44
> drwxr-xr-x  6 root root  4096 Apr  3 00:08 .
> drwxr-xr-x 11 traf traf  4096 Apr  2 23:48 ..
> lrwxrwxrwx  1 root root    34 Apr  2 23:48 bin -> /opt/tools/trafficserver3/bin
> drwxrwxr-x  2 root traf  4096 Apr  2 23:47 cache
> drwxrwxr-x  3 root traf  4096 Apr  2 23:48 conf
> lrwxrwxrwx  1 root root    38 Apr  2 23:48 include -> /opt/tools/trafficserver3/include
> lrwxrwxrwx  1 root root    34 Apr  2 23:48 lib -> /opt/tools/trafficserver3/lib
> drwxrwxr-x  2 root traf  4096 Apr  3 00:14 logs
> lrwxrwxrwx  1 root root    38 Apr  2 23:48 modules -> /opt/tools/trafficserver3/modules
> drwxrwxr-x  2 root traf  4096 Apr  2 23:47 share
> "
> 
> To allow this all to function, I had to get trafficserver to source different values
for TS_DAEMON, TC_DAEMON, TM_DAEMON, etc on startup so I created a 'ts-defaults' script (similar
something you'd put into /etc/defaults/) to set the environment variables for my instance
(here is me sourcing 'ts-defaults' from cmd-line):
> 
> "
> [tim@app013 ts_uploadprx]$ set -x; . ts-defaults; set +x
> + . ts-defaults
> ++ MY_PATH=/opt/instances/ts_uploadprx
> ++ TC_NAME=traffic_cop
> ++ TM_NAME=traffic_manager
> ++ TS_NAME=traffic_server
> ++ TC_DAEMON=/opt/instances/ts_uploadprx/bin/traffic_cop
> ++ TC_DAEMON_ARGS=
> ++ TM_DAEMON=/opt/instances/ts_uploadprx/bin/traffic_manager
> ++ TM_DAEMON_ARGS='-path /opt/instances/ts_uploadprx/conf -recordsConf /opt/instances/ts_uploadprx/conf/records.config'
> ++ TS_DAEMON=/opt/instances/ts_uploadprx/bin/traffic_server
> ++ TS_DAEMON_ARGS='-d /opt/instances/ts_uploadprx'
> ++ TC_PIDFILE=/opt/instances/ts_uploadprx/logs/cop.lock
> ++ TM_PIDFILE=/opt/instances/ts_uploadprx/logs/manager.lock
> ++ TS_PIDFILE=/opt/instances/ts_uploadprx/logs/server.lock
> ++ PIDFILE_CHECK_RETRIES=30
> ++ STDOUTLOG=/opt/instances/ts_uploadprx/logs/traffic_server.stdout
> ++ STDERRLOG=/opt/instances/ts_uploadprx/logs/traffic_server.stderr
> + set +x
> "
> 
> And I modified 'bin/trafficserver' to load this script if it exists (after the other
lines that source defaults files):
> 
> "
> [tim@app013 ts_uploadprx]$ cat -n bin/trafficserver|grep -P "\s+143"
>   142
>   143  test -f /opt/instances/ts_uploadprx/ts-defaults && . /opt/instances/ts_uploadprx/ts-default
> "
> 
> Upon starting trafficserver up, I can see the 'bin/trafficserver' script get my new environment
variables from my 'ts-defaults' script and everything starts, but I notice only 'traffic_cop'
runs under the correct instance dir and settings and that 'traffic_manager' and 'traffic_server'
run out of the '/opt/tools/trafficserver3' "Binary package" path, causing logs, configs, etc
to be loaded from the "Binary Package" path and not my "Instance Package" path and in general
nothing works, and the unique settings are not loaded:

traffic_cop looks at the proxy.config.manager_binary and proxy.config.proxy_binary to figure
out where traffic_manager and traffic_server are. If you set these configuration paths in
the appropriate records.config, does it help?

J
Mime
View raw message