1.安装nginx
master和baskup(server1和server2)都安装nginx:
tar zxf nginx-1.16.1.tar.gz
cd nginx-1.16.1/
yum install gcc zlib zlib-devel openssl-devel -y #解决依赖性
./configure --prefix=/usr/local/nginx
make && make install
当看到Makefile和objs时说明安装成功
编写一个nginx的html文件:
vim /usr/local/nginx/html/index.html
编写nginx启动脚本:
vim /etc/init.d/nginxd
脚本内容:
#!/bin/bash
. /etc/init.d/functions #加载系统函数库
path=/usr/local/nginx/sbin #设定nginx启动命令路径
function start() {
if [ `netstat -antlpe | grep nginx | wc -l` -eq 0 ] #如果等于0
then
$path/nginx #打开nginx
RETVAL=$?
if [ $RETVAL -eq 0 ]
then
action "nginx is started" /bin/true
return $RETVAL
else
action "nginx is started" /bin/false
return $RETVAL
fi
else
echo "nginx is running"
return 0
fi
}
function stop() {
if [ `netstat -antlpe | grep nginx | wc -l` -ne 0 ] #如果不等于0
then
$path/nginx -s stop
RETVAL=$?
if [ $RETVAL -eq 0 ]
then
action "nginx is stoped" /bin/true
return $RETVAL
else
action "nginx is stoped" /bin/false
return $RETVAL
fi
else
echo "nginx is stoped"
return 0
fi
}
case "$1" in #通过特殊参数$1接收脚本参数的字符串
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 1
start
;;
*)
echo $"usage: $0 {start | stop | restart}"
exit 1
esac
exit $RETVAL
给脚本添加执行权限:
chmod +x /etc/init.d/nginxd
测试:
/etc/init.d/nginxd start
- 注意:安装好nginx以后一定要测试它的启动脚本是否能够正常使用,nginx是否能够启动
2.安装keepalived
master和baskup(server1和server2)都安装编译keepalived:
tar zxf keepalived-2.0.20.tar.gz
ls
cd keepalived-2.0.20
ls
yum install gcc openssl-devel -y #解决依赖性
./configure --prefix=/usr/local/keepalived --with-init=systemd #编译keepalived的源码包
make && make install
制作软连接方便keepalived的管理与设置:
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
ln -s /usr/local/keepalived/sbin/keepalived/ /sbin/
制作启动链接:
ln -s /root/keepalived-2.0.20/keepalived/etc/init.d/keepalived /etc/init.d
chmod +x /etc/init.d/keepalived
还原之前实验部分内容:
删除VIP并关闭nginx服务:
ip addr del 172.25.254.100/24 dev eth0
ip addr show
/etc/init.d/nginxd stop
3.修改keepalived的配置文件
step1 编写脚本用于检查本地nginx是否存活:
#!/bin/bash
killall -0 nginx
if [[ $? -ne 0 ]]
then
/etc/init.d/keepalived stop #如果nginx不存活,则关闭keepalived实现服务切换
fi
step2 在master上修改keepalived的配置文件:
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost #健康检查报告通知邮箱
}
notification_email_from keepalived@localhost #发送邮件的地址
smtp_server 172.0.0.1 #邮件服务器
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script_chk_nginx {
script"/data/sh/check_nginx.sh" #检查本地nginx是否存活脚本(脚本需要自己写)
interval 2
weight 2
}
#VIP1
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 5 #健康检测频率
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.254.100 #VIP
}
track_script {
chk_nginx
}
}
step3 配置文件和脚本发给备机server2并修改配置文件:
scp keepalived.conf root@172.25.254.2:/etc/keepalived/
scp /data/sh/check_nginx.sh root@172.25.254.2:/data/sh/
只需要修改两处:
step4 重新启动nginx:
/etc/init.d/nginxd restart
4.测试
启动nginx:
/etc/init.d/nginxd start
启动keepalved
/etc/init.d/keepalived start
在真机中测试:
curl 172.25.254.100
可以查看到VIP配在了server1上:
server1宕掉时:
server2开始工作:
VIP漂移到了server2上: