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