Last active
November 20, 2018 01:51
-
-
Save moshest/e4c73efc8d6a35971f6e to your computer and use it in GitHub Desktop.
Setup Mongodb Server on Amazon EC2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# usage: wget -N https://gist.githubusercontent.com/moshest/e4c73efc8d6a35971f6e/raw/setup-mongodb.sh && sh ./setup-mongodb.sh | |
set -e | |
# configs | |
read -e -p "Replica set name: " -i "rep1" replSet | |
read -e -p "Hostname: " -i $(curl -s http://169.254.169.254/latest/meta-data/public-hostname) hostname | |
read -e -p "Swap size: " -i "8G" swapsize | |
read -e -p "Data drive: " -i "xvdf" dataDrive | |
read -e -p "Journal drive: " -i "xvdg" journalDrive | |
read -e -p "Log drive: " -i "xvdh" logDrive | |
read -e -p "Config file: " -i "/etc/mongod.conf" configFile | |
read -p "Press [Enter] to start setup.." | |
############################################# | |
echo "Update mechine..." | |
sudo yum -y update | |
echo "Set hostname..." | |
sudo hostname $hostname | |
sudo sed -i "/HOSTNAME\b/c\HOSTNAME=$hostname" /etc/sysconfig/network | |
echo "Add swap..." | |
hasSwap=`grep "swapfile" /etc/fstab | cat` | |
if [ -z "$hasSwap" ]; then | |
echo "Create swapfile of $swapsize megabytes" | |
sudo fallocate -l $swapsize /swapfile | |
sudo chmod 600 /swapfile | |
sudo mkswap /swapfile | |
sudo swapon /swapfile | |
sudo sh -c "echo '/swapfile none swap defaults 0 0' >> /etc/fstab" | |
else | |
echo 'swapfile found. No changes made.' | |
fi | |
cat /proc/swaps | |
cat /proc/meminfo | grep Swap | |
echo "Install mongodb..." | |
echo "[MongoDB] | |
name=MongoDB Repository | |
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64 | |
gpgcheck=0 | |
enabled=1" | sudo tee -a /etc/yum.repos.d/mongodb.repo | |
sudo yum install -y mongodb-org-server mongodb-org-shell mongodb-org-tools | |
sudo sed -i "/bind_ip=\b/c\bind_ip=0.0.0.0" $configFile | |
sudo sed -i "/replSet=\b/c\replSet=$replSet" $configFile | |
echo "Create mount points..." | |
sudo mkdir /data /log /journal | |
sudo mkfs.ext4 /dev/$dataDrive | |
sudo mkfs.ext4 /dev/$journalDrive | |
sudo mkfs.ext4 /dev/$logDrive | |
echo "/dev/$dataDrive /data ext4 defaults,auto,noatime,noexec 0 0 | |
/dev/$journalDrive /journal ext4 defaults,auto,noatime,noexec 0 0 | |
/dev/$logDrive /log ext4 defaults,auto,noatime,noexec 0 0" | sudo tee -a /etc/fstab | |
sudo mount /data | |
sudo mount /journal | |
sudo mount /log | |
sudo chown mongod:mongod /data /journal /log | |
sudo ln -s /journal /data/journal | |
sudo sed -i "/dbpath\b/c\dbpath=/data" $configFile | |
sudo sed -i "/logpath\b/c\logpath=/log/mongod.log" $configFile | |
echo "Update secutiry limits..." | |
echo " | |
* soft nofile 64000 | |
* hard nofile 64000 | |
* soft nproc 32000 | |
* hard nproc 32000" | sudo tee -a /etc/security/limits.conf | |
echo " | |
* soft nproc 32000 | |
* hard nproc 32000" | sudo tee -a /etc/security/limits.d/90-nproc.conf | |
sudo blockdev --setra 32 /dev/$dataDrive | |
sudo blockdev --setra 32 /dev/$journalDrive | |
sudo blockdev --setra 32 /dev/$logDrive | |
echo 'ACTION=="add", KERNEL=="'$dataDrive'", ATTR{bdi/read_ahead_kb}="16"' | sudo tee -a /etc/udev/rules.d/85-ebs.rules | |
echo 'ACTION=="add", KERNEL=="'$journalDrive'", ATTR{bdi/read_ahead_kb}="16"' | sudo tee -a /etc/udev/rules.d/85-ebs.rules | |
echo 'ACTION=="add", KERNEL=="'$logDrive'", ATTR{bdi/read_ahead_kb}="16"' | sudo tee -a /etc/udev/rules.d/85-ebs.rules | |
echo "Starting mongodb..." | |
sudo chkconfig mongod on | |
sudo service mongod start | |
echo "Done." | |
read -p "Press [Enter] to reboot instance." | |
sudo reboot |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment