什么是Keepalived
Keepalived是一个免费开源的,用C编写的类似于layer3,4&7交换机制软件,具备我们平时说的第三层,第四层,第七层交换机的功能。主要提供loadbalancing(负载均衡)和high-avaliability(高可用)功能,负载均衡实现需要依赖inux的虚拟服务内核模块,而高可用是通过VRRP协议实现多台机器之间的故障转移服务。
上图是Keepalived的功能体系结构,大致分两层:用户空间和内核空间;
内核空间:主要包含IPVS(IP虚拟服务器,用于实现网络服务的负载均衡)和NETLINK(提供高级路由及其他相关的网络功能)两个部分;
用户空间
WatchDog:负载监控checkers和VRRP进程的状况;
VRRP Stack:负载均衡之间的失败切换FailOver,如果只用一个负载均衡器,则VRRP不是必须的;
Checkers:负责真实服务器的健康检查healthchecking,是keepalived最主要的功能,换言之,可以没有VRRP Stack,但健康检查healthchecking是一定要有的;
IPVS wrapper:用户发送设定的规则到内核ipvs代码;
Netlink Reflector:用来设定vrrp的VIP地址等;
keepalived的所有功能是配置keepalived.conf文件来实现的;
安装keepalived
1.使用【rz】命令将上传的文件放在【/usr/local】目录下
2.使用命令解压
tar -zxvf keepalived-1.2.18.tar.gz
3.进入keepalived-1.2.18目录下
4.执行【yum install -y openssl openssl-devel】命令
5.使用【./configure --prefix=/usr/local/keepalived】命令编译
编译的文件放到了/usr/local/keepalived目录里
./configure --prefix=/usr/local/keepalived
6.使用【make】命令
7.使用【make install】命令
8.在/etc目录下创建文件夹
mkdir /etc/keepalived
9.使用【cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/】命令
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
10.使用【cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/】命令
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
11.使用【cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/】命令
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
12.使用【ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/】命令
ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/
13.使用【ln -s /usr/local/keepalived/sbin/keepalived/sbin/】命令
ln -s /usr/local/keepalived/sbin/keepalived/sbin/
14.使用rz将本地的nginx启动脚本和keepalived.conf文件上传到/etc/keepalived目录下
15.修改keepalived.conf配置文件
主机配置修改:
备机配置修改:【两台虚拟机需要安装的东西是一个的,只有keepalived.conf文件不一样】
16.启动keepalived
使用【service keepalived start】命令分别启动两台机器
17.效果
1.当两个服务器都启动起来时,keepalived默认会找主机,备机只有当主机挂掉之后,才使用;
当两台机器都启动时,可以使用【ip a】命令查看
主机
备机
2.可以使用【service keepalived stop】命令将keepalived服务关闭,这时虚拟IP则会在备机上
主机挂掉,访问的就是备机的nginx
3.测试在nginx出现问题的情况下,实现切换,我们把主机的nginx服务进程杀掉,使用【kill 进程号】命令
实现效果:关闭nginx进程,如果没有赋予权限,那么访问是将不会自动重启nginx,页面就会一直在刷新;
自动重启不了nginx,解决方案:
使用【chmod 777 *.sh】命令 或者 【chmod +x *.sh】命令
配置完成后,杀掉nginx进程,再次访问,将会自动重启nginx;