Demo Video:
Here is how you can setup the Automatic Scaling script in your baremetal instance.
Setup the right time zone
To make sure you schedule runs in the right timezone, make sure you have setup the right timezone region in your baremetal instance. You can set your time zone with the following commands:
sudo rm /etc/localtime sudo ln -s /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime
Setting up python27
The Oracle Database Baremetal instance has a fairly old version of python and is missing some extra tools and libraries. So we need to fix this.
cd /etc/yum.repos.d sudo wget http://yum.oracle.com/public-yum-ol6.repo
Edit the repo and enable the [ol6_software_collections] repository by changing enabled=0 to enabled=1 under the ol6_software_collections
sudo yum install python27 python-setuptools sudo scl enable python27 bash
Now we can install the Oracle OCI python libraries:
pip install oci exit (go back to opc user)
Now we need to install the script using git, but first have to install git itself
sudo yum install git git clone https://github.com/AnykeyNL/OCI-AutoScale.git
Finally we need a config file with the right user ID for making the api calls. Create a file in your home folder called [config]:
[DEFAULT] user=[your user ID] fingerprint=[Your finger print] key_file=[your ssh key file .pem] tenancy=[your tenancy id] region=eu-frankfurt-1
It does not matter what you fill in as region, as this will automatically be read out using the instance metadata. You can get/set the information in the OCI portal under identity->Users:
Create a file in your home directory (/home/opc) called: Scale.sh and give it the following content:
export PATH=/opt/rh/python27/root/usr/bin export LD_LIBRARY_PATH=/opt/rh/python27/root/usr/lib64 /opt/rh/python27/root/usr/bin/python /home/opc/OCI-AutoScale/AutoScale.py $1 >> /home/opc/debug.txt 2>&1
Make the file executable:
chmod 755 Scale.sh
Schedule the script
We can now use crontab to automatically schedule to run this script. Run the command ‘crontab -e’ and enter the following text:
1 * * * * /home/opc/Scale.sh up 59 * * * * /home/opc/Scale.sh down
This Schedule will scale down just before the end of the hour and scale up just after the hour.
Making the Schedule
Now all that is left to do, is to make the schedule. First make you you have created the “Schedule” namespace in the Governance -> Tag Namespaces. And create the following Tag Key Definitions (case sensitive):
- AnyDay
- WeekDay
- Weekend
- Monday
- Tuesday
- Wednesday
- Thursday
- Friday
- Saturday
- Sunday
Now you can go to your Database Baremetal instance and add the schedule you would like to have for it by clicking on the Apply Tags button:
The schedule has to consist of 24 number, each representing one hour of the day starting with 0:00am 1:00am etc. The number it self is the amount of cpu core you want to give your instance.
That’s it 🙂 You can now easily design the most optimal schedule that will help you run an Oracle Database at the most efficient cost.