Skip to content

Instantly share code, notes, and snippets.

@kordless
Created December 16, 2020 20:41
Show Gist options
  • Save kordless/51e49a6142b07672d92ca763f5520d75 to your computer and use it in GitHub Desktop.
Save kordless/51e49a6142b07672d92ca763f5520d75 to your computer and use it in GitHub Desktop.
Secure Solr Server in 2 Minutes with NGINX

Deploy Solr on Google Cloud in 2 Minutes

Useful information and scripts for deploying an instance based Solr Cloud in 2 minutes.

Check this repo out on your Google Cloud Shell terminal.

Launch Solr

Deploy a secure Solr instance on Google cloud:

$ ./deploy-solr.sh
Password token is: f00bar
#!/bin/bash
TYPE=n1-standard-4
ZONE=us-west1-c
NAME=solr
VERSION=8.5.2
NEW_UUID=$(cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 4 | head -n 1)
option=$1
PREEMPTIBLE="--preemptible"
IP="--address=34.83.44.36"
echo "This instance is preemtible, unless it's started with --prod";
case $option in
-p|--prod|--production)
unset PREEMPTIBLE
echo "Production mode enabled..."
echo;
esac
if [ -f secrets.sh ]; then
source secrets.sh # truly, a travesty, sets TOKEN=token-[passphrase]
echo "Here's where I say, hold on a second while we fire things up."
gcloud compute project-info add-metadata --metadata token=$TOKEN
echo;
else
echo "Create 'secrets.sh', put a TOKEN=f00bar statement in it and then rerun this script."
echo;
exit;
fi
gcloud compute instances create $NAME-$NEW_UUID \
--machine-type $TYPE \
--image "ubuntu-1804-bionic-v20201123" \
--image-project "ubuntu-os-cloud" \
--boot-disk-size "10GB" \
--boot-disk-type "pd-ssd" \
--boot-disk-device-name "$NEW_UUID" \
--service-account mitta-us@appspot.gserviceaccount.com \
--zone $ZONE \
--labels type=solr \
--tags mitta,solr,token-$TOKEN \
--preemptible \
--subnet=default $IP --network-tier=PREMIUM \
--metadata startup-script='#!/bin/bash
if [ -d "/opt/solr/" ]; then
echo "starting solr"
bash /etc/init.d/solr
else
sudo su -
date >> /opt/start.time
apt-get update -y
apt-get install unzip -y
# install OpenJDK
apt-get update -y
#entropy
apt-get -y install rng-tools
cat "HRNGDEVICE=/dev/urandom" >> /etc/default/rng-tools
/etc/init.d/rng-tools restart
# files
echo "solr hard nofile 65535" >> /etc/security/limits.conf
echo "solr soft nofile 65535" >> /etc/security/limits.conf
echo "solr hard nproc 65535" >> /etc/security/limits.conf
echo "solr soft nproc 65535" >> /etc/security/limits.conf
apt-get install openjdk-11-jdk -y
echo JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64" >> /etc/environment
cd /opt/
curl https://archive.apache.org/dist/lucene/solr/8.5.2/solr-8.5.2.tgz > solr-8.5.2.tgz
tar xzf solr-8.5.2.tgz solr-8.5.2/bin/install_solr_service.sh --strip-components=2
bash ./install_solr_service.sh solr-8.5.2.tgz -u solr -s solr -p 8983
mkdir /opt/solr/server/logs/
mkdir /opt/solr/mitta/
cd /opt/
chown -R solr.solr solr*
sudo -i -u solr /opt/solr/bin/solr stop
sudo -i -u solr /opt/solr/bin/solr -e cloud -noprompt
mv /opt/solr/example/cloud /opt/solr/mitta
git clone https://github.com/kordless/mitta-deploy.git
cd mitta-deploy
chmod -R 755 *.sh
./solr-scripts/start-solr.sh
cp solr /etc/init.d/solr
chmod 755 /etc/init.d/solr
apt-get install apache2-utils -y
apt-get install nginx -y
cp nginx.conf.solr /etc/nginx/nginx.conf
python3 get_token.py solr
systemctl restart nginx.service
date >> /opt/done.time
fi
'
sleep 15
gcloud compute instances add-metadata $NAME-$NEW_UUID \
--zone $ZONE \
--metadata shutdown-script='#!/bin/bash
/opt/mitta-deploy/solr-scripts/stop-solr.sh >> /root/shutdown-complete
'
IP=$(gcloud compute instances describe $NAME-$NEW_UUID --zone $ZONE | grep natIP | cut -d: -f2 | sed 's/^[ \t]*//;s/[ \t]*$//')
gcloud compute firewall-rules create solr-proxy --allow tcp:8389
echo "Password token is: $TOKEN"
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
upstream solr {
server localhost:8983;
server localhost:7574;
}
server {
listen 8389;
location / {
auth_basic "solr";
auth_basic_user_file /etc/nginx/htpasswd;
proxy_pass http://solr/;
}
}
}
#!/bin/bash
sudo -i -u solr /opt/solr/bin/solr restart -c -p 8983 -s /opt/solr/mitta/cloud/node1/solr
sudo -i -u solr /opt/solr/bin/solr restart -c -p 7574 -s /opt/solr/mitta/cloud/node2/solr -z localhost:9983
#!/bin/bash
sudo -i -u solr /opt/solr/bin/solr start -c -p 8983 -s /opt/solr/mitta/cloud/node1/solr
sudo -i -u solr /opt/solr/bin/solr start -c -p 7574 -s /opt/solr/mitta/cloud/node2/solr -z localhost:9983
#!/bin/bash
sudo -i -u solr /opt/solr/bin/solr stop -c -p 8983 -s /opt/solr/mitta/cloud/node1/solr
sudo -i -u solr /opt/solr/bin/solr stop -c -p 7574 -s /opt/solr/mitta/cloud/node2/solr -z localhost:9983
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment