1. 简述 Keepalived 的主要功能、应用场合。
keepalived是什么?
Keepalived 软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件。
Keepalived软件主要是通过VRRP协议实现高可用功能的。VRRP是Virtual Router RedundancyProtocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行。
所以,Keepalived 一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用功能。
keepalived 有三个重要的功能,分别是:
- 管理LVS负载均衡软件
- 实现LVS集群节点的健康检查
- 作为系统网络服务的高可用性(failover)
使用原则:当我们在某些场景下不需要让页面重新加载时我们可以使用keepalive
举个栗子:
当我们从首页–>列表页–>商详页–>再返回,这时候列表页应该是需要keep-alive
从首页–>列表页–>商详页–>返回到列表页(需要缓存)–>返回到首页(需要缓存)–>再次进入列表页(不需要缓存),这时候可以按需来控制页面的keep-alive
2. 使用 Keepalived 实现双机热备时,主、备服务器的配置存在哪些区别?
Keepalived实现双机热备
VRRP的热备方式,Keepalived可以用做服务器故障切换,常用于双机热备,在双机热备的方案中,故障切换主要针对虚拟IP地址的漂移来实现,因此能够适用于各种应用服务器(如:web、ftp、fail、还是ssh、dns等)
在同一个Keepalived热备组内,所有配置文件基本相同,包括虚拟路由器的ID号、认证信息、漂移地址、心跳频率等。不同之处在于路由器名称,热备状态、优先级
路由器名称(router_id):建议为每个参与热备的服务器指定不同的名称
热备状态(state):至少应有一台主服务器,将状态设为MASTER;可以有多台备用的服务器,将状态设为BACKUP
优先级(priority):数值越大则取得 VIP控制权的优先级越高,因此主服务器的优先级应设为最高;其他备用服务器的优先级可依次递减,但不要相同,以免在争夺VIP控制权时发生冲突
配置没有错误后启动,这时候主服务器仍然在线,VIP地址实际上仍然由主服务器控制,其他服务器处于备用状态,因此备用服务器中不会为ens33接口添加VIP地址
3. 构建 LVS+Keepalived 高可用群集时,如何缩短故障中断时间?
4. 基于 CentOS 7构建nginx的Keepalived 高可用群集。
源码安装nginx,并提供服务脚本
1. 环境准备
序号 |
IP地址 |
角色 |
服务 |
1 |
172.25.10.10 |
客户端 |
主要由于测试 |
2 |
172.25.10.100(VIP:172.25.10.200) |
Master |
keepalived+nginx |
3 |
172.25.10.110(VIP:172.25.10.200) |
Backup |
keepalived+nginx |
4 |
172.25.10.120 |
WEB1 |
nginx |
5 |
172.25.10.130 |
WEB2 |
nginx |
2. 安装依赖
-
安装vim命令,使用命令:
yum install vim-enhanced -y
-
安装gcc,使用命令:
yum install make cmake gcc gcc-c++ -y
-
安装依赖:
yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel wget -y
3.安装nginx
可以参考前面的文章
源码安装nginx,并提供服务脚本
安装nginx所需的pere库pere,peri兼容正则表达式
yum install -y pcre-devel
安装openssl-devel-
yum install -y openssl-devel
检查并安装nginx基础依赖包pcre-devel、openssl-devel
rpm -qa | egrep 'pcre-devel|openssl-devel'
创建组和用户
groupadd -r -g 995 nginx
useradd -r -u 995 -g 995 -s /sbin/nologin -M nginx
下载nginx
wget http://nginx.org/download/nginx-1.18.0.tar.gz
解压
tar xf nginx-1.18.0.tar.gz -C /usr/local/src/
编译
cd /usr/local/src/nginx-1.18.0/
./configure --user=nginx --group=nginx \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_auth_request_module \
--with-http_gzip_static_module \
--with-http_gunzip_module \
--with-http_stub_status_module
编译和安装
make && make install
修改配置文件
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/After=network-online.target remote-fs.targe nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
测试:
systemctl enable --now nginx
启动完之后检查nginx是否已经正常启动
ps -ef | grep nginx
修改一下nginx的index页面 好区分不同虚拟机
echo "`hostname -I`,web test page" > /usr/local/nginx/html/index.html
验证:
4. 负载均衡服务器的搭建
在172.25.10.100和172.25.10.110上面安装nginx,实现负载均衡
在172.25.10.100上面配置
vim /usr/local/nginx/conf/nginx.conf
重启服务
systemctl restart nginx
进行检验(172.25.10.10)
172.25.10.110 同理,将web1改成web2即可;
重启服务
systemctl restart nginx
测试(172.25.10.10)
4. 安装Keeplived
安装依赖
yum install curl libnl3-devel net-snmp-devel libnfnetlink-devel -y
下载keepalived安装包
wget --no-check-certificate https://www.keepalived.org/software/keepalived-1.2.18.tar.gz
解压
tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/
配置
cd /usr/local
cd keepalived-1.2.18/ && ./configure --prefix=/usr/local/keepalived
编译安装
make && make install
配置开机服务
复制文件
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
创建软连接
ln -s /usr/local/sbin/keepalived /usr/sbin/
创建keepalived.service文件
vim /lib/systemd/system/keepalived.service
[Unit]
Description=Keepalived
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/var/run/keepalived.pid
ExecStart=/usr/local/keepalived/sbin/keepalived -D
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
配置systemctl
systemctl daemon-reload
重新加载
systemctl enable keepalived.service
设置开机自动启动
systemctl start keepalived.service
启动
systemctl status keepalived.service
查看状态
完成keepalived的安装
5. keepalived来实现nginx的高可用
修改下/etc/keepalived/keepalived.conf文件
172.25.10.100(主)
172.25.10.110(备)
两个虚拟机进行服务重启或者开启服务
systemctl restart keepalived
进行检查,VIP只在master中。
虚拟机访问VIP
6、Keepalived高可用的验证
1)模拟keepalived集群出现故障,master宕机,验证高可用是否生效
master(172.25.10.100)服务器关闭keepalived
systemctl stop keepalived
虚拟机5访问vip
BACKUP查看VIP
因为master宕机,Keepalived集群的backup服务器收不到来自master的心跳包,所以backup认为master死亡,backup会重新选举新的master
因为只有一台backup,所以vip会出现这台服务器