#!/bin/bash
################################
## Author: xgmin
## Version: 1.0
## Date: 20200324
################################
#修改yum文件########################
rm -f /etc/yum.repos.d/*.repo
########修改yum源地址为自己的yum或者公网源地址##############
wget -O /etc/yum.repos.d/centos7.repo http://mirror.xxx.com/other/repo/centos7.repo
wget -O /etc/yum.repos.d/docker-ce.repo http://mirror.xxx.com/other/repo/docker-ce.repo
wget -O /etc/yum.repos.d/epel7.repo http://mirror.xxx.com/other/repo/epel7.repo
yum clean all && yum repolist
#this is install_keepalived shell
echo -e "\e[1;32m =================开始安装!============== \e[0m "
echo -e "\e[1;32m =================安装基础环境============== \e[0m "
yum install gcc openssl-devel popt-devel libnl-devel kernel-devel libnfnetlink-devel vim tree -y
echo -e "\e[1;32m =================下载文件============== \e[0m "
mkdir -p /nginx/keepalived/script && cd /nginx
wget -c http://10.10.2.64/keepalived/keepalived-1.2.23.tar.gz
tar zxvf keepalived-1.2.23.tar.gz && cd /nginx/keepalived-1.2.23
echo -e "\e[1;32m =================编译安装============== \e[0m "
./configure --prefix=/nginx/keepalived;make && make install
echo -e "\e[1;32m =================修改配置============== \e[0m "
tee > /nginx/keepalived/etc/keepalived/keepalived.conf <<'EOF'
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_script chk_nginx_proxy {
script "/nginx/keepalived/script/chk_nginx_proxy.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 152
priority 200
advert_int 1
authentication {
auth_type PASS
auth_pass 615999
}
virtual_ipaddress {
10.7.135.220/24 dev eth0 label eth0:vip
}
track_script {
chk_nginx_proxy
}
}
EOF
#####################################
tee > /nginx/keepalived/script/chk_nginx_proxy.sh <<'EOF'
#!/bin/bash
nginxpid=`ps -C nginx --no-header | wc -l`
if [ $nginxpid -eq 0 ];then
service keepalived stop
fi
EOF
###############################
echo -e "\e[1;32m =================修改日志============== \e[0m "
if [[ $(cat /etc/rsyslog.conf | grep messages | grep -v '^#' | wc -l) -gt 1 ]]
then
echo "there is more than one row end by messages ,please check!!"
exit 100
fi
ln -s /nginx/keepalived/etc/sysconfig/keepalived /etc/sysconfig/;ln -s /nginx/keepalived/sbin/keepalived /usr/bin/;ln -s /nginx/keepalived/etc/keepalived/ /etc/;ln -s /nginx/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
sed -i '14 s#KEEPALIVED_OPTIONS="-D"#KEEPALIVED_OPTIONS="-D -d -S 0"#g' /etc/sysconfig/keepalived
row=$(awk '/\/messages$/{print NR}' /etc/rsyslog.conf)
row_log=$(expr $row + 1)
sed -i "$row_log a# keepalived \nlocal0.* /var/log/keepalived\n" /etc/rsyslog.conf
var_log=$(sed -n "${row}p" /etc/rsyslog.conf| awk '{print $1}')
sed -i "$row s/$var_log/&;local0.none/g" /etc/rsyslog.conf
sed -i '1 i/var/log/keepalived' /etc/logrotate.d/syslog
row_sudo=$(awk '/## Networking/{print NR}' /etc/sudoers)
sed -i "${row_sudo}i## Keepalived\nCmnd_Alias KEEPALIVED = /etc/init.d/keepalived start, /sbin/service keepalived start, /etc/init.d/keepalived stop, /sbin/service keepalived stop, /etc/init.d/keepalived restart, /sbin/service keepalived restart, /etc/init.d/keepalived status, /sbin/service keepalived status\n" /etc/sudoers
row1=$(awk '/root.*ALL$/{print NR}' /etc/sudoers)
sed -i "$(expr $row1 + 1)a## Allow nginx to manage keeaplived\nginx "$HOSTNAME"= NOPASSWD: KEEPALIVED\n" /etc/sudoers
echo -e "\e[1;32m =================启动服务============== \e[0m "
systemctl restart rsyslog