Table of Contents
There are two ways to install the Tungsten Dashboard - the standard way using a Linux server and manual configuration of Apache 2 and HAProxy, or via a Docker container.
This section describes the standard method of installing the Tungsten Dashboard when using a Linux server with Apache 2, PHP and optionally HAProxy installed locally.
Please change the example values below to match your specific environment.
For example, create a new user called tungsten, group
tungsten, homedir
/home/tungsten:
shell> sudo useradd -m -d /home/tungsten -s /bin/bash -c "Tungsten Dashboard" -U tungsten
Note: Later on you will need to add the apache user
to the tungsten group and restart apache.
Now create the Tungsten Dashboard web root directory and all needed subdirectories:
shell>sudo mkdir /volumes/data/www/tungstenshell>sudo chown -R tungsten: /volumes/data/www/tungstenshell>sudo su - tungstenshell>cd /volumes/data/www/tungstenshell>mkdir etc logsshell>chmod 2775 logsshell>chmod 2755 etc
Still as user tungsten, download the software using the temporary URL provided by Continuent, or login to the web download portal to obtain the software (https://www.continuent.com/downloads/), then copy to the web root directory for use in the next step:
shell>cdshell>wget -O tungsten-dashboard-1.0.0-123.tar.gz 'TEMP_URL_PROVIDED_BY_CONTINUENT'shell>tar xvzf tungsten-dashboard-1.0.0-123.tar.gzshell>cd tungsten-dashboard-1.0.0-123shell>rsync -a html/ /volumes/data/www/tungsten/html/shell>chmod 2775 /volumes/data/www/tungsten/html
If not present, create the html/locks directory and
set the permissions:
shell>mkdir /volumes/data/www/tungsten/html/locksshell>chmod 2775 /volumes/data/www/tungsten/html/locks
This section describes the docker method of installing the Tungsten Dashboard using a pre-defined Docker container provided by Continuent containing Apache, PHP, HAProxy and the Dashboard.
Below are the key steps needed to install the Tungsten Dashboard via Docker.
Copy the downloaded software to the target Linux host:
desktop> scp tungsten-dashboard-docker-1.0.15-13.tar.gz tungsten@db1:SSH to the target host:
desktop> ssh tungsten@db1Extract the tarball to a temporary location like your home directory on that host:
shell> tar xvzf tungsten-dashboard-docker-1.0.15-13.tar.gz
tungsten-dashboard-docker/
tungsten-dashboard-docker/README
tungsten-dashboard-docker/config.php
tungsten-dashboard-docker/docker-compose.yml
tungsten-dashboard-docker/dshell
tungsten-dashboard-docker/haproxy/
tungsten-dashboard-docker/haproxy/haproxy.cfg
tungsten-dashboard-docker/hastat
tungsten-dashboard-docker/settings.d/
tungsten-dashboard-docker/settings.d/apiAuth.json
tungsten-dashboard-docker/settings.d/apiPassword.json
tungsten-dashboard-docker/settings.d/apiSSL.json
tungsten-dashboard-docker/settings.d/apiUser.json
tungsten-dashboard-docker/settings.d/apiVersion.json
tungsten-dashboard-docker/settings.d/startExpanded.json
tungsten-dashboard-docker/settings.d/useHAProxy.json
tungsten-dashboard-docker/tungsten_generate_haproxy.pl
tungsten-dashboard-docker/tungsten-dashboard-docker-saved-1.0.15-13.tarProceed to the extracted directory:
shell> cd tungsten-dashboard-dockerInform the Docker server of the new Dashboard image to install:
shell> sudo docker load --input tungsten-dashboard-docker-saved-1.0.15-13.tarCreate Dashboard login credentials, i.e. user tungsten with password secret:
shell> (cd etc; htpasswd -c .htpasswd tungsten)
Add explicit etc/hosts entries under the extra_hosts sections for
both services, haproxy and
dashboard:
shell> vi docker-compose.ymlCreate cluster-specific HAProxy entries:
Note the following will only work when a valid Tungsten install and /etc/tungsten/tungsten.ini file exists:
shell > tpm generate-haproxy-for-api --port 8201 >> haproxy/haproxy.cfgLaunch the containers:
shell> sudo docker-compose up -dValidate that everything is running properly:
shell>sudo docker psshell>sudo docker logs haproxyshell>sudo docker logs dashboard
View the GUI in a browser:
Browse tohttp://localhost:8080Click on "Please click here to auto-define an existing service (recommended)" Add the new cluster using: Host Name:haproxyPort Number:8201
Create the .htpasswd file under the
etc/ folder with your desired login and
password for the Dashboard:
shell> (cd etc; htpasswd -c .htpasswd tungsten)
Edit the config.json file and add the login you
just created to the administrators line. The
tungsten user is pre-populated.
Create the HAProxy frontend and backend entries from your existing
INI by running either tpm
generate-haproxy-for-api or the enclosed
./tungsten_generate_haproxy.pl - for example,
to append the results to the
haproxy/haproxy.cfg file:
shell> ./tungsten_generate_haproxy.pl >> haproxy/haproxy.cfg
Populate /etc/hosts inside the container(s)
by adding indented lines under the extra_hosts:
directive:
shell>vi docker-compose.yml...services: dashboard: extra_hosts: db1: 10.0.0.101 db2: 10.0.0.102 db3: 10.0.0.103 db4: 10.0.0.104 db5: 10.0.0.105 db6: 10.0.0.106 ... haproxy: extra_hosts: db1: 10.0.0.101 db2: 10.0.0.102 db3: 10.0.0.103 db4: 10.0.0.104 db5: 10.0.0.105 db6: 10.0.0.106...
Run the two containers via the sudo docker-compose up
-d command.
Validate the containers via the sudo docker
ps command.
Point your browser to http://localhost:8080
Click on "Please click here to auto-define an existing service (recommended)"
Add the new cluster using hostname haproxy and
the frontend port number(s) created above, i.e.
8201
NOTES
The Dashboard sees HAProxy under the hostname
haproxy on port 8090-809X (depending on the
haproxy config).
The dashboard and haproxy
containers are on an internal network that can see each other with
these hostnames.
The netcat command nc is required to use the included hastat script:
shell> yum -y install ncUse the enclosed dshell script to ssh to the container by providing the CONTAINER ID listed with docker ps as the only argument:
shell>sudo docker psshell>./dshell {container name or containerid}
For example:
shell>./dshell dashboardshell>./dshell haproxy
Docker-compose Install Summary
NOTE: To install a different version of Compose, substitute 1.29.2 below with the version of Compose you want to use...
shell>sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composeshell>sudo chmod +x /usr/local/bin/docker-composeshell>sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-composeshell>docker-compose --version
Click here to see the Docker documentation for more information about docker-compose.
Docker-compose Key Tasks Summary
== Start in foreground mode: shell>sudo docker-compose up== Start as a daemon: shell>sudo docker-compose up -d== Stop all containers: shell>sudo docker-compose down
== View the logs from a container: shell>sudo docker logs {ID|name}== Login to the shell on a container: shell>sudo docker exec -it {ID|name} /bin/bash~or~ shell>./dshell {ID|name}== List all containers: shell>sudo docker ps== Restart a container: shell>sudo docker restart {ID}
To install tools for checking connectivity on a container:
shell>./dshell {container name or containerid}shell>apt updateshell>apt install iputils-ping telnet netcat-openbsd curl jq
To check the HAProxy status:
shell>./dshell haproxyroot@f57d517b7acf:/#echo "show stat" | nc -U /var/lib/haproxy-stats-socket
To check the Manager reachability:
shell>./dshell haproxyroot@f57d517b7acf:/#/usr/bin/curl -s --insecure --user tungsten:secret --request GET 'https://db1-demo.continuent.com:8090/api/v2/manager/cluster/status/' | jq .
ERROR:
Cannot raise FD limit to 8066, limit is 1024
CAUSE:
/etc/sysconfig/docker has incorrect options configured
SOLUTION:
shell>sudo docker-compose downshell>vi /etc/sysconfig/docker==> CHANGE FROM:OPTIONS="--default-ulimit nofile=1024:4096"==> TO:#OPTIONS="--default-ulimit nofile=1024:4096" OPTIONS=""shell>sudo service docker restartshell>sudo docker-compose up -d
ERROR DETAILS:
shell>sudo docker-compose up... haproxy | [NOTICE] 161/185553 (1) : haproxy version is 2.3.10-4764f0e haproxy | [NOTICE] 161/185553 (1) : path to executable is /usr/local/sbin/haproxy haproxy | [ALERT] 161/185553 (1) : [haproxy.main()] Cannot raise FD limit to 8066, limit is 1024. haproxy exited with code 1 ... shell>ps -ef | grep dockerroot 2681 1 0 12:57 ? 00:00:10 /usr/bin/dockerd --default-ulimit nofile=1024:4096
ERROR:
Dashboard shows "Internal Server Error" in a browser; logs show "Could not open password file: /var/www/html/etc/.htpasswd"
CAUSE:
Forgot to create the .htpasswd file
SOLUTION:
shell>cd tungsten-dashboard-dockershell>sudo htpasswd -c etc/.htpasswd tungsten
ERROR DETAILS:
shell> sudo docker logs dashboard
[Tue Jun 15 19:37:23.074342 2021] [authn_file:error] [pid 20] (2)No such file or directory: [client 222.33.44.55:63370] AH01620: Could not open password file: /var/www/html/etc/.htpasswdCOMMAND:
sudo docker-compose up
ERROR:
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))
CAUSE:
Docker server process not running
SOLUTION:
Start the Docker server process