DRBD安装脚本

#!/bin/sh
# 
# drbd83-install-v01.sh (30 May 2013)
# GeekPeek.Net scripts - Configure and install drbd83 on CentOS 6.X script
#
# INFO: This script was tested on CentOS 6.4 minimal installation. The script installs and configures
# DRBD 83. It installs ELRepo and drbd83-utils and kmod-drbd83 packages. It inserts drbd
# module and creates drbd resource configuration file. It creates drbd device and EXT4 filesystem on it. 
# It adds two new lines to /etc/hosts file and creates new file /etc/cron.hourly/ntpsync.
#
# All of the actions are done on both of the DRBD nodes so SSH key is generated and transferred for 
# easier configuration!
#
# CODE:
echo "For this script to work as expected, you need to enable root SSH access on the second machine."
echo "Is SSH root access enabled on the second machine? (y/n)"
read rootssh
case $rootssh in
	y)
		echo "Please enter the second machine IP address."
		read ipaddr2
		echo "Generating SSH key - press Enter a couple of times..."
		/usr/bin/ssh-keygen
		echo "Copying SSH key to the second machine..."
		echo "Please enter root password for the second machine."
		/usr/bin/ssh-copy-id root@$ipaddr2
		echo "Succesfully set up SSH with key authentication...continuing with package installation on both machines..."
		;;
	n)
		echo "Root access must be enabled on the second machine...exiting!"
		exit 1
		;;
esac
/bin/rpm -ivh http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm
/usr/bin/ssh root@$ipaddr2 /bin/rpm -ivh http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm
/usr/bin/yum install -y kmod-drbd83 drbd83-utils ntpdate
/usr/bin/ssh root@$ipaddr2 /usr/bin/yum install -y kmod-drbd83 drbd83-utils ntpdate
/sbin/modprobe drbd
/usr/bin/ssh root@$ipaddr2 /sbin/modprobe drbd
echo "Creating DRBD resource config file - need some additional INFO."
echo "..."
echo "Which DRBD device is this on your machines - talking about /dev/drbd1, /dev/drbd2,... (example: 1)"
read drbdnum
echo "Enter FQDN of your current machine (example: foo1.geekpeek.net):"
read fqdn1
echo "Enter current machine IP address (example: 192.168.1.100):"
read ipaddr1
echo "Enter current machine disk intended for DRBD (example: /dev/sdb):"
read disk1
echo "Enter FQDN of your second machine (example: foo2.geekpeek.net):"
read fqdn2
echo "Enter second machine IP address (example: 192.168.1.101):"
read ipaddr2
echo "Enter second machine disk intended for DRBD (example: /dev/sdb):"
read disk2
echo "Enter suitable NTP server for time synchronization (example: ntp1.arnes.si):"
read ntpserver
echo "Creating DRBD configuration file..."
echo "resource disk$drbdnum" >> /etc/drbd.d/disk$drbdnum.res
echo "{" >> /etc/drbd.d/disk$drbdnum.res
echo "     startup {" >> /etc/drbd.d/disk$drbdnum.res
echo "          wfc-timeout 30;" >> /etc/drbd.d/disk$drbdnum.res
echo "          outdated-wfc-timeout 20;" >> /etc/drbd.d/disk$drbdnum.res
echo "          degr-wfc-timeout 30;" >> /etc/drbd.d/disk$drbdnum.res
echo "     }" >> /etc/drbd.d/disk$drbdnum.res
echo "     net {" >> /etc/drbd.d/disk$drbdnum.res
echo "          cram-hmac-alg sha1;" >> /etc/drbd.d/disk$drbdnum.res
echo "          shared-secret "sync_disk";" >> /etc/drbd.d/disk$drbdnum.res
echo "     }" >> /etc/drbd.d/disk$drbdnum.res
echo "     syncer {" >> /etc/drbd.d/disk$drbdnum.res
echo "          rate 100M;" >> /etc/drbd.d/disk$drbdnum.res
echo "          verify-alg sha1;" >> /etc/drbd.d/disk$drbdnum.res
echo "     }" >> /etc/drbd.d/disk$drbdnum.res
echo "	   on $fqdn1 {" >> /etc/drbd.d/disk$drbdnum.res
echo "          device minor $drbdnum;" >> /etc/drbd.d/disk$drbdnum.res
echo "          disk $disk1;" >> /etc/drbd.d/disk$drbdnum.res
echo "          address $ipaddr1:7789;" >> /etc/drbd.d/disk$drbdnum.res
echo "          meta-disk internal;" >> /etc/drbd.d/disk$drbdnum.res
echo "     }" >> /etc/drbd.d/disk$drbdnum.res
echo "     on $fqdn2 {" >> /etc/drbd.d/disk$drbdnum.res
echo "          device minor $drbdnum;" >> /etc/drbd.d/disk$drbdnum.res
echo "          disk $disk2;" >> /etc/drbd.d/disk$drbdnum.res
echo "          address $ipaddr2:7789;" >> /etc/drbd.d/disk$drbdnum.res
echo "          meta-disk internal;" >> /etc/drbd.d/disk$drbdnum.res
echo "     }" >> /etc/drbd.d/disk$drbdnum.res
echo "}" >> /etc/drbd.d/disk$drbdnum.res
echo "DRBD configuration file created /etc/drbd.d/disk$drbdnum"
echo "$ipaddr1 $fqdn1" >> /etc/hosts
echo "$ipaddr2 $fqdn2" >> /etc/hosts
/usr/bin/scp /etc/hosts root@$ipaddr2:/etc/
echo "ntpdate $ntpserver" >> /etc/cron.hourly/ntpsync
/bin/chmod +x /etc/cron.hourly/ntpsync
/usr/bin/scp /etc/cron.hourly/ntpsync root@$ipaddr2:/etc/cron.hourly/
/usr/bin/ssh root@$ipaddr2 echo "1 * * * * root ntpdate $ntpserver" >> /etc/crontab
/usr/bin/ssh root@$ipaddr2 echo "$ipaddr1 $fqdn1" >> /etc/hosts
/usr/bin/ssh root@$ipaddr2 echo "$ipaddr2 $fqdn2" >> /etc/hosts
/usr/bin/scp /etc/drbd.d/disk$drbdnum.res root@$ipaddr2:/etc/drbd.d/
/sbin/drbdadm create-md disk$drbdnum
/usr/bin/ssh root@$ipaddr2 /sbin/drbdadm create-md disk$drbdnum
/usr/bin/ssh root@$ipaddr2 /etc/init.d/drbd start &
/etc/init.d/drbd start
/sbin/drbdadm -- --overwrite-data-of-peer primary disk$drbdnum
/sbin/mkfs.ext4 /dev/drbd$drbdnum
sleep 5
/bin/cat /proc/drbd
echo "DRBD configuration completed! Please wait for the disk synchronization to complete..."
echo "...then you can now mount your DRBD disk on primary node!"


你可能感兴趣的:(高可用,主备,drbd)