Here is a shell script I wrote to automate the setup of Predixy Proxy in Centos 7.
This script will work if you have a single endpoint (i.e. AWS Elasticache cluster configuration endpoint or a standalone Elasticache endpoint).
#!/bin/bash
# Created By : Enrique Valencia
# Script Name : predixy_auto_setup.sh
# Description : Predixy Automatic Setup
################################################################################################################
# Usage : ./auto_predixy_setup.sh <configuration_end_point>"
# Example : ./auto_predixy_setup.sh dba-redis-test01.bbssxp.clustercfg.apse1.cache.amazonaws.com:6379"
# To Check Status : systemctl status predixy
# To Start : systemctl start predixy
# To Stop : systemctl stop predixy
# To Restart : systemctl restart predixy
################################################################################################################
################################################################################################################
##### Validate Usage
################################################################################################################
if [ $# -ne 1 ]
then
echo ""
echo "************************************************************************************************************"
echo "Usage: ./predixy_auto_setup.sh <configuration_end_point>"
echo ""
echo "Example: ./predixy_auto_setup.sh dba-redis-test01.bbssxp.clustercfg.apse1.cache.amazonaws.com:6379"
echo "************************************************************************************************************"
echo ""
exit 1
fi
################################################################################################################
##### Variable
################################################################################################################
ENDPOINT=$1
################################################################################################################
##### Install Predixy
################################################################################################################
InstallPredixy(){
mkdir /predixy_data
cd /predixy_data
sudo yum install git -y
sudo yum install libstdc++-static -y
yum -y install gcc
yum -y install gcc-c++
sudo git clone https://github.com/joyieldInc/predixy.git
cd predixy
sudo make
mkdir -p /predixy_data/predixy/log
}
################################################################################################################
##### Cluster
################################################################################################################
cluster(){
cat >> /predixy_data/predixy/conf/cluster.conf << EOF
ClusterServerPool {
MasterReadPriority 100 # 100
# Password sjwkk123456 # redis
StaticSlaveReadPriority 0 # redis slave redis 0
DynamicSlaveReadPriority 0 # redis sentinel 0
RefreshInterval 1 # predixy redis sentinel 1
ServerTimeout 1 # predixy/redis predixy redis blpop 0 redis 0
ServerFailureLimit 10 # redis 10
ServerRetryTimeout 1 # redis 1
KeepAlive 120 #predixy redis tcp keepalive 0 0
Servers {
##
+ $ENDPOINT
}
}
EOF
sed -i 's/Auth "#a complex password#" {/Auth "123456" {/' auth.conf
sed -i 's/WorkerThreads 1/WorkerThreads 4/' /predixy_data/predixy/conf/predixy.conf
sed -i 's/# Log .\/predixy.log/Log \/predixy_data\/predixy\/log\/predixy.log/' /predixy_data/predixy/conf/predixy.conf
sed -i '/# LogRotate 1d 2G/d' /predixy_data/predixy/conf/predixy.conf
sed -i 's/# LogRotate 1d/LogRotate 1d/' /predixy_data/predixy/conf/predixy.conf
sed -i 's/Include try.conf/# Include try.conf/' /predixy_data/predixy/conf/predixy.conf
sed -i 's/# Include cluster.conf/Include cluster.conf/' /predixy_data/predixy/conf/predixy.conf
}
################################################################################################################
##### Standalone
################################################################################################################
standalone(){
cat >> /predixy_data/predixy/conf/standalone.conf << EOF
StandaloneServerPool {
RefreshMethod fixed
Group shard001 {
+ $ENDPOINT
}
}
EOF
sed -i 's/Auth "#a complex password#" {/Auth "123456" {/' auth.conf
sed -i 's/WorkerThreads 1/WorkerThreads 4/' /predixy_data/predixy/conf/predixy.conf
sed -i 's/# Log .\/predixy.log/Log \/predixy_data\/predixy\/log\/predixy.log/' /predixy_data/predixy/conf/predixy.conf
sed -i '/# LogRotate 1d 2G/d' /predixy_data/predixy/conf/predixy.conf
sed -i 's/# LogRotate 1d/LogRotate 1d/' /predixy_data/predixy/conf/predixy.conf
sed -i 's/Include try.conf/# Include try.conf/' /predixy_data/predixy/conf/predixy.conf
sed -i 's/# Include sentinel.conf/Include standalone.conf/' /predixy_data/predixy/conf/predixy.conf
}
################################################################################################################
##### Setup Predixy as a Systemd Service
################################################################################################################
systemd(){
echo "/predixy_data/predixy/src/predixy /predixy_data/predixy/conf/predixy.conf" > /usr/sbin/predixy_start.sh
cat > /etc/systemd/system/predixy.service <<-EOF
[Unit]
Description=Predixy
[Service]
ExecStart=/bin/bash /usr/sbin/predixy_start.sh
[Install]
WantedBy=multi-user.target
EOF
sudo chmod 640 /etc/systemd/system/predixy.service
sudo systemctl daemon-reload
sudo systemctl enable predixy
}
################################################################################################################
##### Check Predixy Status
################################################################################################################
CheckStatus() {
if [ `ps -ef | grep predixy.conf | grep -v grep | wc -l` -gt 0 ]; then
echo ""
echo "************************************************************************"
echo "Predixy Setup Completed."
echo "************************************************************************"
echo ""
else
echo ""
echo "************************************************************************"
echo "Predixy Proxy is unable to start. Please check."
echo "************************************************************************"
echo ""
exit 1
fi
}
################################################################################################################
##### MAIN
################################################################################################################
echo -ne "
Menu:
=====
1) cluster
2) standalone
3) Exit
Please choose: "
read -r choice
case $choice in
1)
echo ""
echo "************************************************************************"
echo "You chose 1 - Cluster. Starting Predixy Setup."
echo "************************************************************************"
echo ""
sleep 3
InstallPredixy
cluster
systemd
systemctl start predixy
sleep 3
CheckStatus
;;
2)
echo ""
echo "************************************************************************"
echo "You chose 2 - Standalone. Starting Predixy Setup."
echo "************************************************************************"
echo ""
sleep 3
InstallPredixy
standalone
systemd
systemctl start predixy
sleep 3
CheckStatus
;;
3)
echo ""
echo "*********"
echo "再见"
echo "*********"
echo ""
exit 1
;;
*)
echo ""
echo "************************************************************************"
echo "Invalid Option. Please try again."
echo "************************************************************************"
echo ""
exit 1
esac
Cheers!




Leave a Reply