Keepalived高可用:
- 用来避免单点故障的发生
- 单点故障:指一但某一个节点出现故障就会导致整个系统架构的不可用
- 主要提供负载均衡(LB:loadbanlancing)和高可用(HA:highavailablity)功能
- 负载均衡的实现需要依赖Linux的虚拟服务内核模块(ipvs)
- 高可用是通过vrrp协议实现多台及其之间的故障转移服务的
- 采用多进程设计模式,每一个进程负责不同的功能
VRRP:虚拟路由器冗余协议
虚拟路由器冗余协议是一种选择协议,它可以把一个虚拟路由器的责任动态分配到局域网上的VRRP路由器中的一台。控制虚拟路由器IP地址的VRRP路由器称为主路由器,它负责转发数据包到这些虚拟IP地址。一旦主路由器不可用,这种选择过程就提供了动态的故障转移机制,这就允许虚拟路由器的IP地址可以作为终端主机的默认第一跳路由器。使用VRRP的好处是有更高的默认路径的可用性而无需在每个终端主机上配置动态路由或路由发现协议。使用VRRP ,可以通过手动或DHCP设定一个虚拟IP地址作为默认路由器。虚拟 IP 地址在路由器间共享,其中一个指定为主路由器而其它的则为备份路由器。
LVS和高可用的结合
实验环境:
主机名 | IP | 服务 | 作用 |
---|---|---|---|
server1 | 172.25.22.1 | keepalived | 主调度器 |
server2 | 172.25.22.2 | httpd | 后端服务器 |
server3 | 172.25.22.3 | httpd | 后端服务器 |
server4 | 172.25.22.4 | keepalived | 备调度器 |
1.创建一个快照虚拟机vm4作为备用调度器
1)创建一个快照
[root@foundation22 ~]# cd /var/lib/libvirt/images/
root@foundation22 images]# ls
[root@foundation22 images]# qemu-img create -f qcow2 -b base.qcow2 vm4
(2)打开虚拟机图形管理器,用刚刚配置的硬盘快照创建虚拟机vm4,具体过程请看博客https://blog.csdn.net/qq_44224894/article/details/89289704
[root@foundation22 images]# virt-manager
(3)创建好虚拟机之后修改ip和主机名,重启
(4)物理机ssh连接server4
2.配置server4的yum仓库
server1中也是同样的配置,上一篇博客中已经配置过这里就不用了再次配置
[root@server4 ~]# vim /etc/yum.repos.d/rhel-source.repo
[root@server4 ~]# yum clean all
[root@server4 ~]# yum repolist
server1:
3.官网下载keepalived安装包,解压并编译安装
keepalived-2.0.6.tar.gz
(1)解压安装包
[root@server1 ~]# ls
bansys.zip varnish-3.0.5-1.el6.x86_64.rpm
keepalived-2.0.6.tar.gz varnish-libs-3.0.5-1.el6.x86_64.rpm
[root@server1 ~]# tar zxf keepalived-2.0.6.tar.gz
[root@server1 ~]# ls
bansys.zip keepalived-2.0.6.tar.gz varnish-libs-3.0.5-1.el6.x86_64.rpm
keepalived-2.0.6 varnish-3.0.5-1.el6.x86_64.rpm
(2)安装gcc,openssl-devel依赖包
[root@server1 ~]# cd keepalived-2.0.6
[root@server1 keepalived-2.0.6]# ls
[root@server1 keepalived-2.0.6]# yum install -y gcc openssl-devel
(3)编译文件configure
启动方式7用的是systemd,6用的是SYSV
[root@server1 keepalived-2.0.6]# ./configure --prefix=/usr/local/keepalived --with-init=SYSV
编译完成后可以找到
Linker flags : -pie
Extra Lib : -lcrypto -lssl
Use IPVS Framework : Yes
(4)安装
[root@server1 keepalived-2.0.6]# make && make install
4.server1主调度器将安装好的目录传输给server4备用调度器
安装好的目录在/usr/local下
[root@server1 keepalived]# cd /usr/local
[root@server1 local]# ls ##安装之后/usr/local目录下出现keepalived子目录
bin etc games include keepalived lib lib64 libexec sbin share src
传输:
[root@server1 local]# scp -r keepalived/ server4:/usr/local
server4:
切换到/usr/local目录下查看是否传过来
server1:
5.给主配置文件加上可执行权限,制作软链接方便对keepalived的管理
[root@server1 init.d]# chmod +x keepalived
[root@server1 init.d]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
[root@server1 sysconfig]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@server1 keepalived]# ln -s /usr/local/keepalived/etc/keepalived/ /etc/
[root@server1 sbin]# ln -s /usr/local/keepalived/sbin/keepalived /sbin/
server4:
server4做同样的设置,加权限,制作软链接
server1:
6.关闭健康检查服务,设置健康检查开机不启动
[root@server1 sbin]# /etc/init.d/ldirectord stop
Stopping ldirectord... success
[root@server1 sbin]# chkconfig ldirectord off
7.删除server1中eth0网卡上的虚拟ip,在这一实验中虚拟ip是通过配置文件自动生成的
8.配置keepalived的配置文件,配置完成后开启服务
配置文件详解:
9.将配置好的keepalived配置文件发送到server4,server4修改两处内容,开启服务
设置完成后开启服务
10.物理机测试:
(1)所有设备正常运行,访问时轮循调度,负载均衡生效
(2)关闭server2的httpd服务,server2宕机,访问的只有server3,且不会出现错误页面,当服务器集群宕机时返回一个错误页面,说明健康检查生效
一个服务器宕机:
服务器集群宕机:
关闭server3的httpd服务
(3)后端服务器集群正常运行,主调度器宕机,原本在主调度器server1上的虚拟IP漂移到备用调度器server4上,物理机访问不会报错,说明高可用生效(避免了单点故障的发生)
1>正常情况下虚拟IP在server1上
2>开启server2和server3的httpd服务,关闭server1的keepallived服务
3>查看server1的ip,虚拟ip消失,查看server4的ip,虚拟ip在server4上
4>物理机测试:访问正常,不会出现故障
kvm是来自于内核的虚拟化,底层的
qemu是外围设备的虚拟化
libvirtd是一个虚拟化的接口,是用来管理底层虚拟化的,挂掉之后不会影响虚拟化的运行
高可用和负载均衡的区别:
高可用:只是监控的作用(健康检查),如果一个出问题了将他的接口传给另一个
负载均衡:是为了建立连接的,在接受请求之后在用户节点和后端服务器之间建立连接